호우동의 개발일지

Today :

article thumbnail

다중 스레드 모델(MultiThreading Model)

수준 차이에 따른 스레드 지원

사용자 스레드와 커널 스레드
사용자 스레드와 커널 스레드

  • 사용자 스레드(user threads) : 사용자 수준에서 지원하는 스레드
    • 커널 위에서 지원되고 커널의 지원 없이 관리

  • 커널 스레드(ker-nel threads) : 커널 수준에서 제공되는 스레드
    • 커널 스레드는 운영체제에 의해 직접 지원되고 관리
    • 거의 모든 현대 운영체제들은 커널 스레드를 지원

  • 궁극적으로 사용자 스레드와 커널 스레드에는 어떤 연관 관계가 존재해야 함.

 


다대일 모델(Many-to-One Model)

다대일 모델
다대일 모델

  • 많은 사용자 수준 스레드가 하나의 커널 스레드를 사상함
  • 장점
    • 스레드 관리는 사용자 공간의 스레드 라이브러리에 의해 행해짐 → 효율적

  • 단점
    • 한 스레드가 봉쇄형 시스템 콜할 경우, 전체 프로세스가 봉쇄
    • 한 번에 하나의 스레드만 커널에 접근 가능
      → 다중 스레드가 다중 코어 시스템에서 병렬 실행 불가능

      → 다중 처리 코어의 이점을 살릴 수 없음
      → 현재 이 모델을 사용하는 시스템 거의 없음

  • 그린 스레드(green thread)가 다대일 모델 사용
    • Solaris 시스템을 위한 스레드 라이브러리

 


일대일 모델(One-to-One Model)

일대일 모델

  • 각 사용자 스레드를 각각 하나의 커널 스레드가 사상


  • 장점
    • 하나의 스레드가 봉쇄적 시스템 콜을 호출해도 다른 스레드가 실행될 수 있음
      → 다대일 모델보다 더 많은 병렬성 제공
    • 다중 처리기에서 다중 스레드가 병렬로 수행되는 것을 허용

  • 단점
    • 사용자 스레드를 만들려면 해당 커널 스레드를 만들어야 함
      → 많은 수의 커널 스레드가 시스템 성능에 부담을 줄 수 있다.

  • Linux, Windows 운영체제 제품군은 일대일 모델을 구현
    • 대부분의 운영체제는 일대일 모델을 사용

 


다대다 모델(Many-to-Many-Model)

다대다 모델
다대다 모델

  • 여러 개의 사용자 수준 스레드를 그보다 작은 수, 혹은 같은 수의 커널 스레드로 멀티플렉스함
  • 커널 스레드의 수는 응용 프로그램이나 특정 기계에 따라 결정
    • 응용 프로그램은 4개의 코어 시스템보다 8개의 코어 시스템에서
      더 많은 커널 스레드를 할당받을 수 있음

  • 장점
    • 개발자는 필요한 만큼 사용자 수준 스레드를 생성할 수 있고,
      상응하는 커널 스레드가 다중 처리기에서 병렬로 수행될 수 있다.
    • 스레드가 봉쇄형 시스템 콜을 발생시켰을 때, 커널이 다른 스레드의 수행을 스케줄 할 수 있다.

  • 단점
    • 구현하기가 어렵다.
    • 구현할 필요가 딱히 없다. ← 커널 스레드 수를 제한하는 것의 중요성이 줄어듦
      ← 대부분의 시스템에서 처리 코어 수가 증가했기 때문

 


다대다 모델의 변형 - 두 수준 모델(two-level model)

두 수준 모델
두 수준 모델

  • 많은 사용자 스레드를 적거나 같은 수의 커널 스레드로 멀티플렉스 시키지만,
    한 사용자 스레드가 하나의 커널 스레드에만 연관되는 것을 허용