쓰레드의 유형
사용자 수준 쓰레드
쓰레드 관리와 관계된 모든 일은 응용이 수행 ⇒ 커널은 쓰레드의 존재를 알 수 x
응용은 시작하자마자 하나의 쓰레드를 가짐 → 이들은 커널에 의해 관리되는 하나의 프로세스에 할당
쓰레드 라이브러리 내의 생성 유틸리티를 호출해 쓰레드 생성 → 제어가 유틸리티로 넘어감 → 쓰레드 라이브러리는 새로운 쓰레드를 위한 자료구조 생성 → 스케줄링 알고리즘을 사용해 프로세스 내에서 준비 상태에 있는 쓰레드로 제어 넘김
장점
- 쓰레드 교환에 커널 모드의 권한이 요구되지 x cuz 쓰레드 관리를 위한 모든 자료구조가 프로세스의 사용자 주소공간에 있기에
- 스케줄링이 응용에 맞게 구성될 수 o
- 사용자 수준 쓰레드는 어떠한 운영체제에도 적용될 수 o
단점
- 일반 운영체제에서 대부분의 시스템 호출은 해당 쓰레드를 블록시킴 → 쓰레드가 시스템 호출을 수행하면 같은 프로세스 내에 있는 모든 쓰레드가 블록됨
- 멀티프로세싱의 장점을 살릴 수 x ⇒ 멀티쓰레드 대신 멀티프로세스로 작성하면 문제 해결 o, but 쓰레드의 장점 살리지 x
커널 수준 쓰레드
쓰레드 관리와 관련된 모든 작업이 커널에 의해 이루어짐
커널은 전체 프로세스에 대한 문맥 정보와 각 프로세스 내 쓰레드에 대한 문맥 유지
장점
- 같은 프로세스 내의 여러 쓰레드들을 동시에 스케줄할 수 o
- 한 프로세스의 쓰레드가 블록되더라도 같은 프로세스에서 다른 쓰레드 스케줄할 수 o
단점
- 쓰레드 간 교환 시 제어를 넘길 때 커널 모드로의 전환 필요
결합된 접근 방법
사용자 공간: 쓰레드 생성, 스케줄링, 동기화
쓰레드들이 다수의 처리기에서 병렬로 수행 o, 전체 프로세스 블록 x
'이론 > 운영체제' 카테고리의 다른 글
[OS] 쓰레드 상태, 쓰레드 동기화 (0) | 2023.07.30 |
---|---|
[OS] 멀티쓰레딩 (0) | 2023.07.29 |
[OS] 쓰레드 (0) | 2023.07.28 |
[OS] 프로세스 제어(수행모드, 프로세스 생성, 교환, 상태변경) (0) | 2023.07.26 |
[OS] 프로세스 제어 구조 (0) | 2023.07.24 |
댓글