User threads : 커널 지원 없이 사용자 수준 (커널 위)에서 thread library에 의해서 지원됨
Kernel threads : OS 커널에서 직접 지원되고 관리됨
- 다수의 User-level thread가 한 개의 Kernel thread에 연관
- thread 스케줄링과 동기화가 사용자 공간의 thread library에서 수행
- 장점 :
> context 스위칭과 동기화 overhead가 작아서 효율적
- 단점 :
> 한 thread가 blocking system call을 호출하여 block되면 전체 process가 block됨 (커널이 user-level thread의 존재를 알지 못함)
> Multiprocessor 시스템에서 thread들의 병렬 실행 불가
EX) Solaris Green Threads, GNU Portable Thread
- 각 user-level thread가 한 개의 kernel thread에 연관
- 장점 :
> 더 많은 병행 실행, 병렬 실행 (multiprocessor)
> 한 thread가 blocking system call을 호출하여 block되면 커널은 같은 process의 다른 thread로 스케줄링
- 단점 :
> 쓰레드 생성 및 context 스위칭 오버헤드
> 커널 시스템 호출을 사용하여 커널 쓰레드를 생성해야 함
> 커널에서 thread context switching 이 이루어짐
> 최대 thread 수에 제한이 있음
EX) Windows, Linux, Solaris 9 이후 버전
- 다수의 User-level thread가 다수의 kernel thread에 연관
> kernel thread의 수는 user-level thread의 수보다 작거나 같음
> kernel thread들을 user-level thread들이 multiplex하여 사용
> kernel thread 개수는 응용 프로그램이나 machine에 따라서 결정됨
- 장점
> one-to-one 모델과 같은 병행/병렬성
> 필요한 만큼의 kernel thread와 연관되는 경우
> blocking system call을 호출하여 block 되었을 때에 다른 thread를 스케줄
> user-level thread 개수보다 적은 kernel thread를 사용할 수 있어서 kernel thread 수의 제한에 영향 없음
세 가지 thread 구현 모델
- Many-to-Many 모델의 변형 모델
- 일부 user-level thread에 대해서 one-to-one 연관 허용
> 하나의 user-level thread가 하나의 kernel thread에만 연관될 수 있음
EX) IRIX, UP-UX, Tru64 UNIX
4.5 묵시적 쓰레딩 (0) | 2020.04.30 |
---|---|
4.4 Thread 라이브러리 (0) | 2020.04.30 |
4.2 멀티코어 프로그래밍 (0) | 2020.04.30 |
4.1 쓰레드 개요 (0) | 2020.04.24 |
3.6 클라이언트-서버 시스템에서의통신 (0) | 2020.04.24 |
댓글 영역