Kernel Thread, User Thread
2021. 7. 8. 11:53ㆍ운영체제
Kernel Thread
- 운영체제가 직접 관리하는 스레드
- 논리적 코어와 매핑되는, 시스템의 실제 스레드
- 커널 영역에서 스레드의 생성, 관리수행
- 커널이 각 스레드를 개별적으로 관리
- 프로세스 내 스레드들이 병렬 수행 가능
- 하나의 스레드가 Block 되어도 다른 스레드는 계속 작업 가능
User Thread
- 유저 영역의 라이브러리로 구현된 스레드
- 커널은 프로세스 내 유저 스레드를 알지 못한다
- 커널은 프로세스 단위로 자원을 할당하기 때문에, 스레드 Block -> 프로세스 Block -> 프로세스 내 다른 스레드도 Block
Multi-threading Model
- 다대일 모델 : User Thread 여러 개가 하나의 Kernel Thread 에 매핑된다. 스레드 관리가 유저 영역의 라이브러리에 의해 수행되므로 효율적이지만, 한 User Thread 가 Block 되면 Kernel Thread 자체가 Block 된다. 또한, 한번에 하나의 User Thread만 Kernel 에 액세스 할 수 있으므로 여러 스레드를 병렬로 실행할 수 없다.
- 일대일 모델 : User Thread 하나당 Kernel Thread 하나씩 매핑된다. 프로세스 내 스레드가 병렬 실행이 가능하다는 장점이 있고, 다대일 모델의 많은 문제가 해결되지만, 큰 overhead 가 발생할 수 있다.
- 다대다 모델 : User Thread 를 동일한 수, 혹은 그 이하의 Kernel Thread 에 매핑하여, 이전 두 모델의 단점을 극복. User Thread 가 Block 되어 연결된 Kernel Thread 가 Block 되어도, 다른 User Thread 를 다른 Kernel Thread 로 매핑하여 대기상태에 빠지는 것을 해결할 수 있다.
'운영체제' 카테고리의 다른 글
Thread 의 개념 (0) | 2021.07.07 |
---|---|
Interrupt 와 Context Switching (0) | 2021.07.05 |
Process state, 프로세스의 상태 (0) | 2021.07.03 |
PCB (Process Control Block) 이란? (0) | 2021.07.02 |
메모리 계층구조, Cache Memory 의 작동 방식 (0) | 2021.07.02 |