Computer Science

[운영체제] 다중 쓰레드 모델(Many-to-one 모델, One-to-One 모델, Many-to-Many 모델)

imsunbow 2024. 1. 10. 13:57

쓰레드는 사용자 쓰레드와 커널 쓰레드로 나눌 수 있다. 사용자 쓰레드는 thread library에 의해서 커널 지원 없이 사용자 수준에서 제공한다. 커널 쓰레드는 OS 커널에서 직접 지원되고 관리된다. 현대 운영체제(windows,Solaris, Linux, Mac OS)는모두 커널 쓰레드를 지원한다.

 

이 떄 사용자 프로그램의 쓰레드와 커널 쓰레드 간에 여러 연관 관계가 존재하는데, Many-to-One 모델, One-to-One 모델, Many-to-Many모델로 볼 수 있다.

 

1) Many-to-One 모델 (solaris 구버전) 

다수의 user-level thread가 한 개의 kernel thread에 연관되는 모델으로, thread 스케줄링과 동기화가 사용자 공간의 thread library에서 수행된다.

 

context switching과 동기화 오버헤드가 작다는 점이 장점이지만, Multiprocessor 시스템에서 thread들의 병렬 실행이 불가능하다는 단점을 갖고 있다.

 

2) One-to-One 모델 (windows, linux, solaris 최신버전)

각 user-level thread가 각각 하나의 kernel thread에 연관되는 모델로, 더 많은 병렬 실행이 가능하다는 장점을 가지고 있다. 그러나 커널 시스템 호출을 사용하여 커널 쓰레드를 생성해야 한다는 단점을 가지고 있다.  

 

3) Many-to-Many 모델

다수의 user-level thread가 다수의 kernel thread에 연관되는 모델이다. kernel thread의 수는 user-level thread의 수와 작거나 같다.

 

one-to-one모델과 같은 병렬성을 가지고, user-level thread 개수에 제한이 없다는 장점을 가지고 있다.

 

반응형