본문 바로가기
CS/운영체제

[운영체제 OS] Kernel Thread vs User Thread

by 루시킴 2021. 8. 23.

Note

사용자 수준 스레드와 커널 수준 스레드는 생성 주체에 따라 구분된다. 사용자가 라이브러리를 만들고 관리하는지, 운영체제의 커널이 만들고 관리하는지에 따른 차이다.


Kernel Thread

커널레벨에서 생성되는 스레드로 커널이 스레드와 관련된 모든 작업을 직접 관리

 

장점

모든 스레드가 System Call로 구현 가능

커널이 직접 스레드와 관련된 모든 작업을 처리

 

단점

커널 단 수행시간이 오래걸려 오버헤드가 높음

Kernel Thread


User Thread

사용자 레벨 라이브러리 통해 구현된 스레드로 커널 영역 위에서 동작

 

장점

스레드 관련 작업시 커널을 호출하지 않아 오버헤드가 낮음

커널에 독립적으로 스케줄링 가능하여 모든 운영체제에 적용 가능

 

단점

커널이 스레드 관리에 직접 개입하지 못함

User mode에서 실행되어 System Call발생 시 대응이 안좋음

 

User thread


Multithreading Model 3가지

1. Many-to-one

여러개의 유저 스레드가 하나의 커널 스레드에 매핑되는 방식. 유저 레벨 스레드라고 부름.

유저 레벨 라이브러리로 관리되므로 속도가 빠르고 이식성이 좋지만 스레드 하나 중지되면 나머지도 영향 받음.

 

2. One-to-one

하나의 유저 스레드를 하나의 커널 스레드와 매핑하는 방식

한 스레드가 중지되어도 다른 스레드에 영향이 없으므로 동시성 좋지만 자원 효율이 안좋음.

 

3. Many-to-many

여러개의 유저 스레드를 여러개의 커널 스레드로 매핑하는 방식

1 & 2의 장점들을 모두 가지지만 구현이 어려움.


 

댓글