728x90
커널 레벨 쓰레드와 유저 레벨 쓰레드
- 커널 레벨 쓰레드
-> 쓰레드를 지원하는 커널 레벨에서 제공해주는 쓰레드
-> 커널이 쓰레드를 직접 관리(정보를 가지고 있고 스케줄링을 해줌)를 함
-> 스케줄러가 우선순위가 동등한 쓰레드에게 동등한 시간을 할당해줌
-> 쓰레드 I/O 상태가 빠졌을 때 스케줄러가 다른 쓰레드에게 실행 우선순위를 넘겨줌
-> 유저 레벨 쓰레드에 비해 상대적으로 느림
- 유저 레벨 쓰레드
-> 쓰레드를 지원하지 않는 커널에서 유저가 만들어서 라이브러리 형태로 유저가 만들어서 사용하는 쓰레드
-> 커널입장에서는 쓰레드인지 알 수가 없음
-> 커널은 프로세스를 관리함
-> 프로세스 안에 쓰레드가 동작하고 쓰레드 정보를 가지고 있음
-> 스케줄러가 우선순위가 동등한 프로세스에게 동등한 시간을 할당해주고 프로세스는 할당받은 시간을 가지고 있는 쓰레드에게 나누어 할당함
-> 쓰레드가 I/O 상태에 빠졌을 때 프로세스가 Blocked 상태라고 판단해 다른 프로세스에게 실행 우선순위를 넘겨줌
-> I/O에 상태에 빠진 쓰레드를 포함하고 있는 프로세스 안의 다른 쓰레드도 실행을 못한다는 단점이 있음
-> 커널 레벨 쓰레드에 비해 상대적으로 빠름
728x90
'Programming > System Programming' 카테고리의 다른 글
윈도우즈 시스템 프로그래밍 - 12. 쓰레드의 생성과 소멸(1) (0) | 2020.07.26 |
---|---|
윈도우즈 시스템 프로그래밍 - 11. 쓰레드의 이해(5) (0) | 2020.07.23 |
윈도우즈 시스템 프로그래밍 - 11. 쓰레드의 이해(3) (0) | 2020.07.22 |
윈도우즈 시스템 프로그래밍 - 11. 쓰레드의 이해(2) (0) | 2020.07.22 |
윈도우즈 시스템 프로그래밍 - 11. 쓰레드의 이해(1) (0) | 2020.07.22 |