본문 바로가기

CS/오퍼레이팅 시스템

19. 멀티스레딩 모델

 

- 커널 스레드 : 커널 내부적으로 생성, 삭제되는 스레드, 운영체제에 의해 관리됨

- 유저 스레드 : 유저스페이스 스레드 라이브러리에 의해 생성

 

유저스레드는 커널스레드에 매핑되어야 함

커널이 커널스레드를 스케줄링하고 유저스레드가 커널스레드에 매핑되어서 수행

 

커널은 유저스레드를 인식 못함 - 유저스레드는 반드시 커널스레드에 매핑

커널스레드가 block되면 거기에 매핑된 유저스레드 모두 block (= waiting)

멀티코어, 멀티프로세싱 환경에서 서로다른 스레드가 서로다른 프로세스에 랃아되어 수행

-> 각 커널 스레드가 서로다른 cpu를 할당받음

 

 

커널 스레드가 block되어 waiting 상태가 되면 그 커널스레드에 매핑된 유저스레드 모두 waiting state가 됨

한 스레드 ua 가 io 수행을 위해 waiting상태로 전환되면 ka가 waiting이 되기 때문에

그 커널에 매핑된 ub, ub도 waiting 상태가 됨

 

cpu에 할당되는 것은 커널 스레드

왼쪽은 두개의 커널스레드가 각 다른 cpu에서 수행되어 병렬적으로 수행이 가능하다

유저스레드는 프로세서에 할당이 안되기 때문에 오른쪽에서 여러 유저스레드들은 모두 하나의 cpu에 할당됨