728x90

 

커널 레벨 쓰레드와 유저 레벨 쓰레드

- 커널 레벨 쓰레드

    -> 쓰레드를 지원하는 커널 레벨에서 제공해주는 쓰레드

    -> 커널이 쓰레드를 직접 관리(정보를 가지고 있고 스케줄링을 해줌)를 함

    -> 스케줄러가 우선순위가 동등한 쓰레드에게 동등한 시간을 할당해줌

    -> 쓰레드 I/O 상태가 빠졌을 때 스케줄러가 다른 쓰레드에게 실행 우선순위를 넘겨줌

    -> 유저 레벨 쓰레드에 비해 상대적으로 느림

- 유저 레벨 쓰레드

    -> 쓰레드를 지원하지 않는 커널에서 유저가 만들어서 라이브러리 형태로 유저가 만들어서 사용하는 쓰레드

    -> 커널입장에서는 쓰레드인지 알 수가 없음

    -> 커널은 프로세스를 관리함

    -> 프로세스 안에 쓰레드가 동작하고 쓰레드 정보를 가지고 있음

    -> 스케줄러가 우선순위가 동등한 프로세스에게 동등한 시간을 할당해주고 프로세스는 할당받은 시간을 가지고 있는 쓰레드에게 나누어 할당함

    -> 쓰레드가 I/O 상태에 빠졌을 때 프로세스가 Blocked 상태라고 판단해 다른 프로세스에게 실행 우선순위를 넘겨줌

    -> I/O에 상태에 빠진 쓰레드를 포함하고 있는 프로세스 안의 다른 쓰레드도 실행을 못한다는 단점이 있음

    -> 커널 레벨 쓰레드에 비해 상대적으로 빠름

728x90

+ Recent posts