블로킹 범위

스레드 매핑 모델

커널이 어떤 실행 단위를 알고 있는지, 런타임이 블로킹을 감지해 작업을 옮길 수 있는지가 동시성과 병렬성을 결정합니다.

M:1

사용자 스레드 하나가 막히면 프로세스 전체가 멈춘다

User threads 런타임 큐 안에는 여러 실행 흐름이 있습니다.
Kernel view one schedulable unit
1:1

블로킹 스레드 처리

User threads 각 스레드가 커널 스레드 하나와 연결됩니다.
Kernel view many schedulable units
M:N

런타임이 blocked 작업을 떼고 다른 작업을 태운다

Virtual tasks 많은 작업이 소수의 carrier 위에 올라갑니다.
Runtime action unmount and remount
그린 스레드 한계 커널이 내부 스레드를 모르기 때문에 블로킹 시스템 콜 하나가 전체 실행을 멈춥니다.
네이티브 스레드 강점 OS 스케줄러가 각 스레드를 코어에 배치해 실제 병렬 실행을 만듭니다.
가상 스레드 목표 동기식 코드 형태를 유지하면서 대기 중 carrier 낭비를 줄입니다.