728x90
쓰레드를 구현할때는 사용자 수준 쓰레드(User-level-thread)와, 커널수준 쓰레드(Kernal-level-thread)라는 두가지 범주가 있다.
사용자 수준 쓰레드란?
순수하게 사용자 수준 쓰레드를 구현할때는, 쓰레드 관리와 관계된 모든 일은 응용이 수행하며 커널은 쓰레드의 존재를 알지 못한다.
쓰레드 라이브러리를 이용해, 모든 응용을 멀티쓰레드 기반으로 프로그래밍할 수 있다.
쓰레드 라이브러리는 쓰레드의 생성, 제거, 쓰레드간의 메시지와 데이터전달, 쓰레드 수행의 스케줄링, 쓰레드 문맥의 저장과 복구 등을 위한 코드를 포함한다.
기본적으로 응용은 시작하자마자 하나의 쓰레드를 가지며, 그 첫 쓰레드에서 수행을 시작한다.
하지만 커널수준 쓰레드에서는
쓰레드 관리와 관련된 모든 작업이 커널에 의해 이루어진다. 응용 영역에는 쓰레드 관리를 위한 코드가 없고, 단순히 커널 쓰레드 기능에대한 API가 있다.
커널수준 쓰레드의 단점은, 프로세스 내의 한 쓰레드에서 다른 쓰레드로 제어를 넘길때 Mode Switching이 필요하다는 것이다. 모드 전환으로 인한 오버헤드가 있다.
'운영체제' 카테고리의 다른 글
운영체제 5.1 병행성의 원리. (0) | 2021.04.07 |
---|---|
운영체제 4.3 멀티코어와 멀티쓰레딩 (0) | 2021.04.07 |
운영체제 4.1 프로세스와 쓰레드 (0) | 2021.04.07 |
운영체제 3.3 Process Description (0) | 2021.04.01 |
운영체제 3.2 프로세스 상태 (0) | 2021.03.30 |