스레드 모델
구성 개요
사용자 스레드(user-level thread) ↔ 커널 스레드(kernel-level thread)의 관계 스레드 구현 방식에 따른 모델 세 가지:
① Many-to-One 모델
여러 사용자 스레드 → 하나의 커널 스레드
사용자 공간(user space)에서 스레드 관리 → 효율적
단점:
하나의 스레드가 blocking system call을 하면 전체 프로세스가 block
멀티코어 CPU에서도 병렬 실행 불가
예: Green Threads (구 Java, Solaris 초기 버전)
② One-to-One 모델
각 사용자 스레드 → 하나의 커널 스레드
장점:
blocking system call 발생 시 다른 스레드 실행 가능
멀티코어에서 병렬성 보장
단점:
스레드 수 = 커널 스레드 수 → 많은 스레드는 성능 저하 유발
예: Linux, Windows 계열 운영체제
③ Many-to-Many 모델
많은 사용자 스레드 ↔ 소수 또는 동일 수의 커널 스레드
장점:
blocking 시 커널이 다른 스레드 실행
사용자 스레드 수 제약 없음
Two-Level 모델:
many-to-many에 기반하되, 특정 user thread를 특정 kernel thread에 고정(binding) 가능
many-to-many는 유연하지만 구현 난이도 높음
현재는 one-to-one이 표준화 경향
하지만 고급 concurrency 라이브러리들은 여전히 many-to-many 기반 task-to-thread 매핑을 제공
Last updated