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