본문 바로가기

IT 공부/운영체제

5-5. 멀티 스레드 구현

멀티스레드 구현

멀티구현이란?

  • 응용프로그램에서 작성한 스레드가 시스템에서 실행되도록 구현하는 방법
    • 사용자가 만든 스레드가 시스템에서 스케줄되고 실행되도록 구현하는 방법
    • 스레드 라이브러리와 커널의 시스템 호출의 상호 협력 필요

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 매핑 사례