Multithreading Models (멀티 스레딩 모델)

이찬영·2021년 8월 3일
0

OS

목록 보기
5/35

사용자 스레드 (User threads)

사용자 수준에서 사용하고 커널 위에서 동작하며 커널의 지원 없이 관리한다.

커널 스레드 (Kernel threads)

커널 영역에서 동작하며 운영체제에 의해 직접 지원되고 관리 된다.

멀티 스레딩 모델

Many to One Model

여러개의 사용자 스레드를 하나의 커널 스레드로 맵핑한다. 스레드는 사용자 영역의 스레드 라이브러리에 의해 관리된다. 단점으로 한 스레드가 시스템 콜을 요청하고 대기를 하게 되면 다른 스레드 모두 대기를 하게 된다. 한번에 하나의 스레드만이 커널에 접근할 수 있기 때문에, 멀티 프로세서 시스템에서는 병렬로 실행 될 수 없는다. 그러한 단점들로 현재는 잘 채택되지 않는 방법이다.

One to One Model

사용자 스레드 각각을 각각의 커널 스레드로 맵핑한다. 하나의 스레드가 시스템 콜을 호출하여 대기중이라도 다른 스레드는 영향을 받지 않는다. 단점으로는 유저 스레드를 만들때 커널 스레드를 생성하는 비용이 들며 많은 커널 스레드가 시스템 성능에 영향을 줄 수 있다.

Many to Many Model

다대다 모델은 여러 개의 사용자 수준 스레드를 그보다 작은 수 혹은 같은 수의 커널 스레드로 멀티 플렉스(분배한다고 생각)한다. 커널 스레드의 수는 응용프로그램이나 특정 기계에 따라 결정된다.(응용 프로그램은 4개의 코어 시스템보다 8개의 코어시스템에서 더 많은 커널 스레드를 할당받을 수 있다)
유저가 시스템 콜을 호출하면 사용되지 않는 커널 스레드에 요청을 한다.
다대다 모델은 위 두 모델의 단점을 보완한다. 가장 큰 단점으로는 구현이 힘들다는것이다.

결론

멀티 스레딩 모델 3개를 알아 보았는데 결국엔 각 단점을 감안하고 가장 널리 쓰이는 모델은 One to One 모델을 사용한다. 현재는 하드웨어 발전으로 코어 수가 많아지고 처리 속도가 빨라지면서 커널 스레드의 수를 제한할 필요가 없게 되었다. 이러한 점이 일대일 모델의 단점을 상쇄하였다. Window와 Linux 또한 일대일 모델을 체택하고 있다.

0개의 댓글