사용자 수준 스레드 : 커널 영역의 상위에서 지원되며 일반적으로 사용자 수준의 라이브러리를 통해 구연된다. 이 경우 커널은 스레드의 존재를 인식하지 못하기 때문에 커널의 개입을 받지 않는다.
- 특징 : 다수의 사용자가 수준 스레드가 커널 수준 스레드 한 개에 매핑되므로 다대일(n:1) 스레드 매핑이라고 함
- 장점
- 사용자 영역에서 생성&관리되므로 속도가 빠름
- 커널을 호출하지 않음(사용 모드자 ↔ 커널 모드의 전환 비용이 업음)
- Context Switch가 없어, 인터럽트 발생 시에도 오버헤드가 적음
- 커널의 개입을 받지 않기 때문에 이식성이 높음(모든 운영체제에서 실행할 수 있음)
- 단점
- 커널에서 스레드가 하나라고 판단하기 때문에, 하나의 스레드가 중단(Block)되면(I/O작업 등에 의해) 나머지 모든 스레드 역시 중단(Block)됨
커널 수준 스레드 : 운영체제가 지원하는 스레드 기능으로 구현되며, 커널이 스레드의 생성 및 스케줄링 등을 관리한다.
- 특징
- 사용자 수준 스레드와 커널 수준 스레드가 일대일(1:1)로 매핑된다.
- 하나의 프로세스는 적어도 하나의 커널 스레드를 갖는다.
- 장점
- 커널이 각 스레드를 개별적으로 관리하기 때문에 프로세스 내 스레드들이 병행으로 수행이 가능하다(멀티프로세서 환경에서 빠르게 동작)
- 한 스레드가 중단되어도 다른 스레드는 계속 수행이 가능
- 단점
- 사용자 스레드보다 생성 및 관리 속도가 느림(사용자 모드 <> 커널모드 스위칭 비용)
혼합형 스레드 : 사용자 수준 스레드와 커널 수준 스레드를 혼합한 구조이다(각 스레드의 단점을 극복).
- 특징 : 사용자 수준 스레드는 커널 수준 스레드와 비슷한 ‘경량 프로세스’에 다대다로 매핑되고, 경량 프로세스는 또한 커널 수준 스레드와 일대일로 매핑된다. 결국 다수의 사용자 수준 스레드에 다수의 커널 스레드가 다대다(n:m)으로 매핑된다.