더북(TheBook)

깊게 알기 | 사용자 레벨 스레드와 커널 레벨 스레드

1.1.4 커널과 시스템 콜에서 커널에서 관리하는 자원을 보호하기 위해 내부적으로 사용자 모드와 커널 모드로 구분한다고 했다. 이와 마찬가지로 스레드도 스레드를 관리하는 주체에 따라 구분된다. 사용자 레벨 스레드(user-level thread)는 사용자가 라이브러리를 이용해 생성 및 관리한다. 커널 레벨 스레드(kernel-level thread)는 커널이 스레드를 생성 및 관리한다.

멀티 스레드 환경에서 사용자 레벨 스레드와 커널 레벨 스레드는 다음과 같이 3가지 관계를 맺을 수 있다.

 

1. 다대일 모델(many-to-one model)

사용자 레벨 스레드 n개에 커널 레벨 스레드 1개가 매핑되어 사용자 레벨에서 스레드를 관리한다. 하나의 사용자 레벨 스레드에서 시스템 콜을 호출하면 나머지 사용자 레벨 스레드는 커널 레벨에 접근할 수 없으므로 멀티 코어의 병렬성을 이용할 수 없다.

▲ 그림 1-8 다대일 모델 예

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.