본문 바로가기
이론/운영체제

[OS] 쓰레드의 유형

by ohojee 2023. 8. 1.

쓰레드의 유형

사용자 수준 쓰레드

쓰레드 관리와 관계된 모든 일은 응용이 수행 ⇒ 커널은 쓰레드의 존재를 알 수 x
응용은 시작하자마자 하나의 쓰레드를 가짐 → 이들은 커널에 의해 관리되는 하나의 프로세스에 할당
쓰레드 라이브러리 내의 생성 유틸리티를 호출해 쓰레드 생성 → 제어가 유틸리티로 넘어감 → 쓰레드 라이브러리는 새로운 쓰레드를 위한 자료구조 생성 → 스케줄링 알고리즘을 사용해 프로세스 내에서 준비 상태에 있는 쓰레드로 제어 넘김
장점

  • 쓰레드 교환에 커널 모드의 권한이 요구되지 x cuz 쓰레드 관리를 위한 모든 자료구조가 프로세스의 사용자 주소공간에 있기에
  • 스케줄링이 응용에 맞게 구성될 수 o
  • 사용자 수준 쓰레드는 어떠한 운영체제에도 적용될 수 o

단점

  • 일반 운영체제에서 대부분의 시스템 호출은 해당 쓰레드를 블록시킴 → 쓰레드가 시스템 호출을 수행하면 같은 프로세스 내에 있는 모든 쓰레드가 블록됨
  • 멀티프로세싱의 장점을 살릴 수 x ⇒ 멀티쓰레드 대신 멀티프로세스로 작성하면 문제 해결 o, but 쓰레드의 장점 살리지 x

커널 수준 쓰레드

쓰레드 관리와 관련된 모든 작업이 커널에 의해 이루어짐
커널은 전체 프로세스에 대한 문맥 정보와 각 프로세스 내 쓰레드에 대한 문맥 유지
장점

  • 같은 프로세스 내의 여러 쓰레드들을 동시에 스케줄할 수 o
  • 한 프로세스의 쓰레드가 블록되더라도 같은 프로세스에서 다른 쓰레드 스케줄할 수 o

단점

  • 쓰레드 간 교환 시 제어를 넘길 때 커널 모드로의 전환 필요

결합된 접근 방법

사용자 공간: 쓰레드 생성, 스케줄링, 동기화
쓰레드들이 다수의 처리기에서 병렬로 수행 o, 전체 프로세스 블록 x

댓글