[다중 스레드 모델]
스레드는 사용자 스레드와 커널 스레드로 나눌 수 있다.
1 ) 사용자 스레드 : 커널 위에서 지원되며 커널의 지원 없이 관리된다.
2 ) 커널 스레드 : 운영체제에 의해 직접 지원되고 관리된다.
궁극적으로 사용자 스레드와 커널 스레드를 연결해서 쓰게 된다.
예를 들면 입출력 인터럽트가 발생하면 사용자 모드에서 사용자 스레드의 응답을 기다린다. 이 후 스레드의 응답이 오면 다시 커널 모드로 변환되어 커널 스레드가 일을 처리하게 된다.
이런 연결을 확립하는 다대일, 일대일, 다대다 모델을 살펴보자
1 ) 다대일 모델 : 많은 사용자 수준 스레드를 하나의 커널 스레드로 사상한다. 이 모델의 경우 한 스레드가 봉쇄가 될 경우 전체 프로세스가 봉쇄된다. 또 한, 한 번에 하나의 스레드만이 커널에 접근할 수 있기 때문에, 다중 스레드가 다중 코어 시스템에서 병렬로 실행될 수 없다.
2 ) 일대일 모델 : 각 사용자 스레드를 각각 하나의 커널 스레드로 사상한다. 이 모델의 경우 사용자 스레드를 만들면 해당 커널 스레드를 만들어야 하며 많은 수의 커널 스레드는 시스템 성능에 부담을 줄 수 있다. 하드웨어의 발달로 가장 많이 쓰이는 모델이다.
3 ) 다대다 모델 : 일대다 모델의 병렬 실행을 할 수 없고 일대일 모델은 많은 프로세스 생성의 가능성이 존재한다. 다대다 모델에서는 이러한 문제점을 다수의 사용자 스레드를 다중 처리기에서 병렬로 수행함으로써 해결한다.
4 ) 두 수준 모델 : 다대다 모델에서 일대일 연결도 가능하게 만든 것.