1. 스레드(Thread)란?
- 프로세스 내에서 실행되는 작업의 단위
- 운영체제의 스케줄러에 의해 관리될 수 있는 최소 작업단위
- 하나의 프로세스에는 다수의 스레드가 존재할 수 있다.
- 하나의 프로세스에 속한 스레드들은 프로세스가 운영체제로부터 할당받은 자원을 공유한다.
- 단, Thread ID(tid)나 PC(Program Counter), SP(Stack Pointer) 등의 Register Set 등의
제어요소나 스택 영역의 경우 공유하지 않고 각 스레드가 독립적으로 가지게된다. - 경량 프로세스(Light Weight Process)라고도 불린다.
2. 스레드의 장점
- 응답 속도 증가
- 일부 스레드의 처리가 지연되더라도 다른 스레드가 작업을 계속할 수 있음
- 자원 공유
- 제어요소나 스택영역을 제외한 자원을 공유하기에 Context Switch에 의한 오버헤드가 대폭 감소
- 프로세스를 새로 생성하는 것에 비해 경제적
- 멀티 프로세서 활용
- CPU 내의 여러개의 코어를 동시에 활용하여 병렬적으로 작업을 처리하는것으로 성능 향상
3. 스레드의 구현
- 사용자 수준 스레드(User-Level Thread)
- 스레드의 생성, 스케줄링 등을 사용자 영역의 라이브러리로 구현
- 커널과는 무관하게 구현되어있기 때문에 커널의 개입을 받지않음
- 장점
- 생성, 관리(스케줄링, 동기화 등)에 커널이 개입하지 않기에 오버헤드가 적음
- 라이브러리 형태로 지원되는 기능인만큼 이식성이 좋다
- 단점
- IO가 발생한 스레드가 하나라도 존재할 경우 모든 스레드가 대기상태가 된다.
- IO가 발생한 스레드가 하나라도 존재할 경우 모든 스레드가 대기상태가 된다.
- 커널 수준 스레드(Kernel-Level Thread)
- 커널에서 직접 스레드를 관리
- 스케줄링의 최소단위가 스레드가 됨
- 장점
- 각 스레드가 커널에 의해 개별적으로 관리되기에 하나의 스레드가 대기상태가 되어도
다른 스레드는 정상적으로 작업을 수행할 수 있음
- 각 스레드가 커널에 의해 개별적으로 관리되기에 하나의 스레드가 대기상태가 되어도
- 단점
- 스레드의 생성, 관리에 커널이 개입하기에 사용자 수준 스레드에 비해 오버헤드가 크다.
4. 멀티 스레드 모델
- n:1 모델
- 다중 사용자 스레드 : 단일 커널 스레드
- 사용자 스레드만을 사용하는 모델
- 1:n 모델
- 단일 사용자 스레드 : 다중 커널 스레드
- 커널 스레드만을 사용하는 모델
- n:m 모델
- 다중 사용자스레드 : 다중 커널 스레드
- 사용자 스레드와 커널 스레드를 모두 사용하는 혼합형 모델
- 사용자 입장에서는 원하는 만큼의 스레드를 생성하여 사용
- 커널 입장에서는 다수의 사용자 스레드를 그보다 적은 수의 커널 스레드가 분할하여 담당
- 실제 OS에서는 이 모델이 사용되고있다.
'CS > 운영체제' 카테고리의 다른 글
#5 동기화(Synchronization) 2 - SW Solution (0) | 2021.12.23 |
---|---|
#4 동기화(Synchronization) 1 - 상호 배제의 개념 (0) | 2021.12.23 |
#3 프로세스 스케줄링(Scheduling) (0) | 2021.12.21 |
#1 프로세스(Process) (0) | 2021.12.14 |
#0 컴퓨터의 구조 (0) | 2021.12.13 |