본문 바로가기

운영체제

[운영체제] 스레드와 병행성_다중 스레드 모델

  • 스레드를 위한 지원은 사용자 스레드를 위해서는 사용자 수준에서 제공.
  • 커널 스레드를 위해서는 커널 수준에서 제공.
  • 사용자 스레드는 커널 위에서 지원되며 커널의 지원 없이 관리됨.
  • 커널 스레드는 운영체제에 의해 직접 지원되고 관리됨.
  • 사용자 스레드와 커널 스레드 간 연관관계 3가지. ( 다대일 모델, 일대일 모델, 다대다 모델 )

 

다대일 모델

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

  • 다대일 모델은 많은 사용자 수준 스레드를 하나의 커널 스레드로 사상(mapping)함.
  • 스레드 관리는 사용자 공간의 스레드 라이브러리가 함. -> 효율적.
  • 한 스레드가 봉쇄형 시스템 콜 할 경우, 전체 프로세스가 봉쇄됨.
  • 한 번에 하나의 스레드만 커널에 접근 -> 다중 스레드가 다중 코어 시스템에서 병렬로 실행될 수 없음.
  • 다중 처리 코어의 이점을 살릴 수 없어 사용하는 시스템이 거의 없음.
더보기

사상 ( mapping )

- 가상 주소와 물리 주소의 대응 관계 혹은 가상 주소로부터 물리 주소를 찾아내는 일

- 하나의 값을 다른 값으로 혹은 한 데이터 집합을 다른 데이터 집합으로 번역하는 것.

 

 

일대일 모델

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

  • 일대일 모델은 각 사용자 스레드를 각각 하나의 커널 스레드로 사상함.
  • 한 스레드가 봉쇄적 스스템 콜을 호출해도 다른 스레드가 실행될 수 있음. -> 더 많은 병렬성 제공
  • 다중 처리기에서 다중 스레드가 병렬로 수행되는 것을 허용함.
  • 유일한 단점 - 많은 수의 커널 스레드가 시스템 성능에 부담을 줌.
  • Linux, Windows 운영체제가 일대일 모델을 구현.
  • 일대일 모델은 더 많은 병행 실행을 제공하지만, 개발자가 한 응용 내에 너무 많은 스레드를 생성하지 않도록 주의해야 한다. ( 일부 시스템의 스레드 수 제한 )

 

다대다 모델

Many-to-Many Model

 

Two-level Model

  • 다대다 모델은 여러 사용자 수준 스레드를 그보다 적거나 같은 수의 커널 스레드로 멀티플렉스 한다.
  • 커널 스레드 수는 응용프로그램이나 하드웨어에 따라 결정된다.
  • 다대다 모델은 다대일 모델과 일대일 모델의 단점을 어느 정도 해결함.
  • 필요한 만큼 많은 사용자 수준 스레드를 생성
  • 상응하는 커널 스레드가 다중 처리기에서 병렬로 수행
  • 스레드가 봉쇄형 시스템 콜을 발생시켜도 커널이 다른 스레드의 수행을 스케줄 할 수 있음.

 

  • 변형 ( 두 수준 모델 two-level model )
  • 다대다 모델에서 추가적으로, 한 사용자 스레드가 하나의 커널 스레드에만 연관되는 것을 허용함.
  • 구현하기 어려움.
  • 대부분 시스템이 처리 코어 수 증가함에 따라 커널 스레드 수 제한의 중요성이 낮아짐.
  • 대부분 운영체제는 일대일 모델 사용.