멀티스레드 구현
멀티구현이란?
- 응용프로그램에서 작성한 스레드가 시스템에서 실행되도록 구현하는 방법
- 사용자가 만든 스레드가 시스템에서 스케줄되고 실행되도록 구현하는 방법
- 스레드 라이브러리와 커널의 시스템 호출의 상호 협력 필요
3가지 방법
N:1 매핑(N개의 사용자 레벨 스레드를 1개의 커널 레벨 스레드로 매핑)
N:1매핑(1개의 사용자 레벨 스레드를 1개의 커널 레벨 스레드로 매핑)
N:M매핑(N개의 사용자 레벨 스레드를 M개의 커널 레벨 스레드로 매핑)
N:1 매핑
N:1 매핑 개념
운영체제는 모든 프로세스를 단일 스레드 프로세스로 다룸
프로세스 당 1개의 커널 레벨 스레드(TCB) 생성
- 스케줄 가능한 엔터티(entity)라고 부름
- 프로세스의 모든 사용자 레벨 스레드가 1개의 커널 레벨 스레드에 매핑
사용자 레벨 스레드는 스레드 라이브러리에 의해 스위칭 됨.
매핑의 뜻
사용자 레벨 스레드는 해당 커널 레벨 스레드가 스케줄되어야 실행 가능하도록 묶여 있음.
N:1 매핑 사례
3개의 사용자 레벨 스레드가 1개의 커널 레벨 스레드 TCB4공유
N:1 매핑의 장단점
장단점
장점
- 단일 코어 CPU에서 멀티스레드 응용프로그램의 실행 속도가 전반적으로 빠르다.
- 스레드 생성, 스케줄, 동기화 등에 있어 커널로 진입없이 사용자 공간에서 이루어지므로
단점
- 멀티 코어 CPU가 보편화된 현대 컴퓨터에서는 비효율적
- 프로세스에 속한 여러 사용자 레벨 스레드들의 병렬 처리가 안됨
- 하나의 사용자 레벨 스레드가 블록되면 프로세스 전체 블록
- 프로세스 내 다른 사용자 레벨 스레드로 스위칭되지 못한다.
N:1 매핑에서 사용자 스레드가 블록되면 응용프로그램 전체 중단
1:1 매핑
1:1 매핑 개념
사용자 레벨 스레드 당 1개의 커널 레벨 스레드(TCB) 생성
사용자 레벨 스레드는 매핑된 커널 레벨 스레드가 스케줄되면 실행
장단점
장점
- 개념이 단순하여 구현이 용이
- 멀티 코어 CPU에서 멀티스레드 응용프로그램에서 높은 병렬성 제공
- 하나의 사용자 레벨 스레드가 블록되어도 응용프로그램 전체가 블록되지 않음
단점
- 커널에게는 부담스러운 정책
- 사용자 레벨 스레드가 많아지면 모두 커널의 부담
1:1 매핑 사례
N:M 매핑
1:1 매핑 개념
N개의 사용자 레벨 스레드를 M개의 커널 레벨 스레드에 매핑
장단점
장점
- 1:1 매핑에 비해 커널 엔터티 개수가 작아 커널의 부담이 적음
단점
- 구현하기 복잡하며 현대의 운영체제에서는 거의 사용되지 않음.
N:M 매핑 사례