ULT를 누가 KLT에 태우는지가 병렬성과 블로킹 범위를 결정한다

사용자 런타임은 ULT를 고르고, 커널은 실제 CPU에서 실행할 KLT를 고른다. 매핑 모델은 두 스케줄러 사이의 연결 방식이다.

Many : 1

U1U2U3U4
K1

전환은 가볍지만 KLT 하나가 막히면 전체가 멈추고 한 코어만 쓴다.

1 : 1

U1U2
K1K2

각 스레드를 커널이 직접 보며 병렬 실행한다. 생성·전환 비용도 커널이 부담한다.

Many : Many

U1U2U3U4
K1K2

런타임이 많은 ULT를 소수 KLT에 다중화한다. 블로킹 처리는 구현에 달린다.

판단 축

Many : 1

1 : 1

M : N

커널이 보는 실행 단위

1 KLT

각 KLT

carrier KLT

멀티코어 병렬성

없음

가능

KLT 수만큼

관리 주체

런타임

커널

런타임 + 커널

CPU 병목ULT 수가 아니라 동시에 실행 가능한 KLT 수와 코어 수를 본다.

I/O 블로킹호출이 KLT를 막는지, 런타임이 다른 ULT로 넘길 수 있는지 확인한다.

구현 확인M:N은 이름만으로 블로킹·공정성 정책이 정해지지 않는다.