커널 레벨 쓰레드란
커널 수준에서 생성되고 동작하는 쓰레드로 커널이 직접 관리한다.
프로그래머 요청에따라 쓰레드를 생성하고 스케줄링 하는 주체가 커널이면 커널 쓰레드라고 한다.
커널 레벨 쓰레드 특징
- 커널이 각 쓰레드를 개별적으로 관리 하기 때문에 I/O 인터럽트에 의해 하나의 쓰레드가 Block 됐을때 다른 쓰레드로 작업이 가능하다.
- 안정적이고 다양한 기능을 제공한다.
- 사용자 모드와 커널 모드의 전환이 빈번해서 성능저하가 발생한다.
- 스케줄링과 동기화를 위해 커널을 호출하는데 오래걸린다.
사용자 레벨 쓰레드란
쓰레드를 관리하는 라이브러리로 인해 사용자 수준에서 생성 및 관리되는 쓰레드이다.
즉, 커널에 의존적이지 않은 형태로 쓰레드의 기능을 제공하는 라이브러리를 활용한 쓰레드를 말한다.
사용자 레벨 쓰레드 특징
- 스케줄링과 동기화를 위한 커널호출이 필요없기 때문에 커널 레벨 쓰레드보다 오버헤드가 적다.
- 커널은 사용자 레벨의 쓰레드 존재를 모르기 때문에 모드간의 전환이 없어서 성능 이득이 발생한다.
- I/O 인터럽트에 의해 하나의 쓰레드가 Block 되면 모든 쓰레드의 작업이 중지된다.
- OS 스케줄러가 아닌 사용자 수준 쓰레드 라이브러리를 통해서 스케줄링한다.
- 시스템 전반에 걸친 스케줄링 우선순위를 지원하지 않기 때문에 어떤 쓰레드가 먼저 동작될지 모르고 커널 쓰레드에 비해 결과를 예측하기 힘들어진다.
참고 블로그
https://helloinyong.tistory.com/293
'OS(운영체제) > 프로세스' 카테고리의 다른 글
[운영체제] 프로세스 - 프로세스 혹은 스레드 동기화란? (0) | 2022.01.24 |
---|---|
[운영체제] 프로세스 - 경쟁 상태란? (1) | 2022.01.13 |
[운영체제] 프로세스 - 컨텍스트 스위칭이란? (0) | 2022.01.11 |
[운영체제] 프로세스 - 뮤텍스와 세마포어 차이 (0) | 2021.12.13 |
[운영체제] 프로세스 - 교착상태와 해결방안 (0) | 2021.12.09 |