- 커널 스레드 : 커널 내부적으로 생성, 삭제되는 스레드, 운영체제에 의해 관리됨
- 유저 스레드 : 유저스페이스 스레드 라이브러리에 의해 생성
유저스레드는 커널스레드에 매핑되어야 함
커널이 커널스레드를 스케줄링하고 유저스레드가 커널스레드에 매핑되어서 수행

커널은 유저스레드를 인식 못함 - 유저스레드는 반드시 커널스레드에 매핑
커널스레드가 block되면 거기에 매핑된 유저스레드 모두 block (= waiting)
멀티코어, 멀티프로세싱 환경에서 서로다른 스레드가 서로다른 프로세스에 랃아되어 수행
-> 각 커널 스레드가 서로다른 cpu를 할당받음

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

한 스레드 ua 가 io 수행을 위해 waiting상태로 전환되면 ka가 waiting이 되기 때문에
그 커널에 매핑된 ub, ub도 waiting 상태가 됨
cpu에 할당되는 것은 커널 스레드

왼쪽은 두개의 커널스레드가 각 다른 cpu에서 수행되어 병렬적으로 수행이 가능하다
유저스레드는 프로세서에 할당이 안되기 때문에 오른쪽에서 여러 유저스레드들은 모두 하나의 cpu에 할당됨
'CS > 오퍼레이팅 시스템' 카테고리의 다른 글
18. 멀티코어 프로그래밍 (0) | 2020.04.09 |
---|---|
17. 스레드 (0) | 2020.04.09 |
16. IPC 프로세스간 커뮤니케이션 : message passing (0) | 2020.04.09 |
15. IPC 프로세스간 커뮤니케이션 : shared memory, producer-consumer문제 (0) | 2020.04.09 |
14. 고아프로세스와 좀비프로세스 (0) | 2020.04.09 |