- 스레드를 위한 지원은 사용자 스레드를 위해서는 사용자 수준에서 제공.
- 커널 스레드를 위해서는 커널 수준에서 제공.
- 사용자 스레드는 커널 위에서 지원되며 커널의 지원 없이 관리됨.
- 커널 스레드는 운영체제에 의해 직접 지원되고 관리됨.
- 사용자 스레드와 커널 스레드 간 연관관계 3가지. ( 다대일 모델, 일대일 모델, 다대다 모델 )
다대일 모델
- 다대일 모델은 많은 사용자 수준 스레드를 하나의 커널 스레드로 사상(mapping)함.
- 스레드 관리는 사용자 공간의 스레드 라이브러리가 함. -> 효율적.
- 한 스레드가 봉쇄형 시스템 콜 할 경우, 전체 프로세스가 봉쇄됨.
- 한 번에 하나의 스레드만 커널에 접근 -> 다중 스레드가 다중 코어 시스템에서 병렬로 실행될 수 없음.
- 다중 처리 코어의 이점을 살릴 수 없어 사용하는 시스템이 거의 없음.
더보기
사상 ( mapping )
- 가상 주소와 물리 주소의 대응 관계 혹은 가상 주소로부터 물리 주소를 찾아내는 일
- 하나의 값을 다른 값으로 혹은 한 데이터 집합을 다른 데이터 집합으로 번역하는 것.
일대일 모델
- 일대일 모델은 각 사용자 스레드를 각각 하나의 커널 스레드로 사상함.
- 한 스레드가 봉쇄적 스스템 콜을 호출해도 다른 스레드가 실행될 수 있음. -> 더 많은 병렬성 제공
- 다중 처리기에서 다중 스레드가 병렬로 수행되는 것을 허용함.
- 유일한 단점 - 많은 수의 커널 스레드가 시스템 성능에 부담을 줌.
- Linux, Windows 운영체제가 일대일 모델을 구현.
- 일대일 모델은 더 많은 병행 실행을 제공하지만, 개발자가 한 응용 내에 너무 많은 스레드를 생성하지 않도록 주의해야 한다. ( 일부 시스템의 스레드 수 제한 )
다대다 모델
- 다대다 모델은 여러 사용자 수준 스레드를 그보다 적거나 같은 수의 커널 스레드로 멀티플렉스 한다.
- 커널 스레드 수는 응용프로그램이나 하드웨어에 따라 결정된다.
- 다대다 모델은 다대일 모델과 일대일 모델의 단점을 어느 정도 해결함.
- 필요한 만큼 많은 사용자 수준 스레드를 생성
- 상응하는 커널 스레드가 다중 처리기에서 병렬로 수행
- 스레드가 봉쇄형 시스템 콜을 발생시켜도 커널이 다른 스레드의 수행을 스케줄 할 수 있음.
- 변형 ( 두 수준 모델 two-level model )
- 다대다 모델에서 추가적으로, 한 사용자 스레드가 하나의 커널 스레드에만 연관되는 것을 허용함.
- 구현하기 어려움.
- 대부분 시스템이 처리 코어 수 증가함에 따라 커널 스레드 수 제한의 중요성이 낮아짐.
- 대부분 운영체제는 일대일 모델 사용.
'운영체제' 카테고리의 다른 글
[운영체제] 스레드와 병행성_다중 코어 프로그래밍 (0) | 2021.03.06 |
---|---|
[운영체제] 스레드와 병행성 _ 개요 (0) | 2021.03.06 |
운영체제 구조 (0) | 2021.02.13 |