-
1. 사용자 수준 쓰레드
- 정의
ULT 관리 루틴으로 구성된 쓰레드 라이브러리를 이용하여, 모든 응용을
수행하며 커널은 쓰레드의 존재를 알지 못한다.
쓰레드 라이브러리는 스케줄링, 복구코드 등을 포함한다.
- 장점
프로세스 교환과 달리 모드 전환이 필요하지 않다. = > 오버헤드 절감
스케줄링이 응용에 맞게 구성될 수 있다.
어떤한 운영체제에도 적용될 수 있다.
- 단점
쓰레드가 시스템을 호출을 수행할 경우 모든 쓰레드가 블락된다.
(프로세스가 블락되기 때문이다.)
- 이것은 자케팅이라는 기술로 해결가능하다. 비 블록형 호출.
순수 ULT기반의 멀티쓰레딩 응용은 멀티프로세싱의 장점을 살릴 수 없다.
- 이것은 멀티프로세싱으로 작성되면 해결되겠지만
오버헤드가 발생되기 때문에 ULT의 장점을 살리기도 어렵다.
2. 커널 수준 쓰레드
- 정의
스레드 관리와 관련된 모든 작업이 커널에 의해 이루어지는것.
응용에는 쓰레드 관리 코드가 없고, 커널 쓰레드에 대한 API가 있다.
이때 쓰레드에 대한 문맥정보 등은 커널이 관리한다.
- 장점
여러 처리기에게 같은 프로세스 내의 여러 쓰레드를 동시에 스케줄 할 수 있다.
(ULT 에서는 프로세스가 블록당하면 전체다 스케줄 하지 못한다)
커널 루틴 자체가 멀티쓰레드로 구성될 수 있다.
- 단점
쓰레드를 교체할 때 커널로 모드 전환이 필요하다.
'개발이론 > 운영체제' 카테고리의 다른 글
스케줄링 정책 (0) 2018.11.29 교체정책(Replcacement Policy) (0) 2018.11.28 TLB (Translation Lookaside Buffer) (1) 2018.11.28 지역성의 원리 (0) 2018.11.28 가상메모리 (0) 2018.11.28