상세 컨텐츠

본문 제목

4.3 다중 쓰레드 모델

Computer Science/OS Concepts

by RACC8N 2020. 4. 30. 21:17

본문

User threads : 커널 지원 없이 사용자 수준 (커널 위)에서 thread library에 의해서 지원됨

Kernel threads : OS 커널에서 직접 지원되고 관리됨

 

Many-to-One 모델

- 다수의 User-level thread가 한 개의 Kernel thread에 연관

- thread 스케줄링과 동기화가 사용자 공간의 thread library에서 수행

- 장점 :

 > context 스위칭과 동기화 overhead가 작아서 효율적

- 단점 :

 > 한 thread가 blocking system call을 호출하여 block되면 전체 process가 block됨 (커널이 user-level thread의 존재를 알지 못함)

 > Multiprocessor 시스템에서 thread들의 병렬 실행 불가

 

EX) Solaris Green Threads, GNU Portable Thread

 

One-to-One 모델

- 각 user-level thread가 한 개의 kernel thread에 연관

- 장점 : 

  > 더 많은 병행 실행, 병렬 실행 (multiprocessor)

    > 한 thread가 blocking system call을 호출하여 block되면 커널은 같은 process의 다른 thread로 스케줄링

- 단점 :

  > 쓰레드 생성 및 context 스위칭 오버헤드

    > 커널 시스템 호출을 사용하여 커널 쓰레드를 생성해야 함

    > 커널에서 thread context switching 이 이루어짐

    > 최대 thread 수에 제한이 있음

 

EX) Windows, Linux, Solaris 9 이후 버전

Many-to-Many 모델

- 다수의 User-level thread가 다수의 kernel thread에 연관

 > kernel thread의 수는 user-level thread의 수보다 작거나 같음

 > kernel thread들을 user-level thread들이 multiplex하여 사용

 > kernel thread 개수는 응용 프로그램이나 machine에 따라서 결정됨

- 장점

 > one-to-one 모델과 같은 병행/병렬성

   > 필요한 만큼의 kernel thread와 연관되는 경우

   > blocking system call을 호출하여 block 되었을 때에 다른 thread를 스케줄

 > user-level thread 개수보다 적은 kernel thread를 사용할 수 있어서 kernel thread 수의 제한에 영향 없음

 

세 가지 thread 구현 모델

Two-level 모델

- Many-to-Many 모델의 변형 모델

- 일부 user-level thread에 대해서 one-to-one 연관 허용

 > 하나의 user-level thread가 하나의 kernel thread에만 연관될 수 있음

EX) IRIX, UP-UX, Tru64 UNIX

 

'Computer Science > OS Concepts' 카테고리의 다른 글

4.5 묵시적 쓰레딩  (0) 2020.04.30
4.4 Thread 라이브러리  (0) 2020.04.30
4.2 멀티코어 프로그래밍  (0) 2020.04.30
4.1 쓰레드 개요  (0) 2020.04.24
3.6 클라이언트-서버 시스템에서의통신  (0) 2020.04.24

관련글 더보기

댓글 영역