4. Thread
Thread?
- User-Level Thread
- 애플리케이션이 쓰레드를 관리(생성, 소멸, 스케줄링)
- 커널은 쓰레드 존재 여부를 알지 못함
- 장점
- 커널 권한을 요구하지 않기 때문에 context switching이 빠름
- 스케줄링 알고리즘을 커널과 독립적으로 구성 가능
- 기존 OS와 상관 없이 작동 가능, 하위 커널에 독립적
- 정리 : concurrent processing, fast response, multiprocessing, resource sharing
- 단점
- 특정 쓰레드가 시스템콜을 호출할 경우 block되어서 모든 쓰레드도 멈춤
- 따라서 시스템콜을 호출할 땐 장점을 활용 못함
- 또한 멀티 쓰레드라고 하더라도 한 프로세스엔 하나의 프로세서만 할당 가능, 따라서 장점을 완전히 활용은 불가능
- Kernel-Level Thread
- 커널이 쓰레드 생성, 소멸, 관리
- 장점
- 하나의 쓰레드가 시스템콜을 호출해서 block되어도 다른 쓰레드는 실행 가능(concurrency & parallel)
- OS Kernel 자체도 멀티쓰레딩 가능 - 효율이 좋아짐
- 단점
- Context switching 오버헤드가 큼 (커널 레벨로 계속 들어감)
- 쓰레드 생성 오버헤드가 비교적 큼(커널 레벨로 들어가야 하기 때문) : 유저레벨 쓰레드의 10배