Thread Models

멀티스레딩 매핑 모델

사용자 수준 스레드는 빠르게 관리할 수 있지만 커널이 모르면 blocking과 병렬성이 제한된다. 커널 수준 스레드는 스케줄러와 직접 연결된다.

01

커널이 보는 단위 확인

커널이 하나의 실행 단위만 보면 사용자 스레드 하나의 blocking이 전체를 막을 수 있다.

02

병렬 실행 가능성 검토

여러 core를 쓰려면 커널이 여러 스케줄 가능 단위를 알아야 한다.

03

전환 비용 비교

사용자 영역 context switch는 빠르지만 kernel scheduling과 I/O blocking 처리에서 한계가 있다.

User thread
라이브러리 관리 커널 진입 없이 thread switch를 할 수 있어 빠를 수 있다.
blocking syscall에 약하다.
Kernel thread
커널 스케줄 대상 커널이 각 thread를 알고 CPU에 배치한다.
생성과 전환 비용이 더 크다.
Blocking
모델별 차이 many-to-one에서는 하나의 blocking이 전체 사용자 thread를 멈출 수 있다.
I/O 모델과 연결된다.
SMP
다중 CPU 활용 one-to-one은 여러 core에 자연스럽게 분산될 수 있다.
동기화 비용도 증가한다.

매핑 · blocking · 병렬성 점검

매핑 사용자 thread와 kernel thread가 어떤 비율로 연결되는지 설명할 수 있는가.
blocking 하나의 I/O 대기가 전체 실행을 막는 모델인지 구분하는가.
병렬성 여러 core를 실제로 사용할 수 있는 구조인가.

모델

many-to-one: U1,U2,U3 -> K1
one-to-one: U1->K1, U2->K2