Contents

[OS] Thread Management

Thread에 대한 개념 정리

스레드(Thread)

  • Light weight process
  • 프로세서 활용의 기본 단위
  • 프로세스는 자원을 할당받고 이를 제어하는 과정인데 이 때, 제어를 여러개의 스레드로 할 수 있다
  • 제어 요소 외 code, data 및 자원들은 프로세스 내 다른 스레드들과 공유
  • 구성요소
    • Thread ID
    • Register set (stack pointer, program pointer)

스레드의 장점

  • 사용자 응답성
    • 일부 스레드의 처리가 지연되어도 다른 스레드는 작업을 계속 처리 가능
  • 자원 공유
    • 자원을 공유하기 때문에 효율성이 증가
    • 예를 들어, 게임(프로세스)을 할 때 모니터(화면출력), 마우스(사용자입력), 헤드셋 와 관련해서 멀티스레드로 게임 관련 자원을 공유하면서 3가지 작업을 동시에 진행할 수 있는 것이다.
  • 경제성
    • 프로세스의 생성, context switching에 비해 효율적
  • 멀티 프로세서 활용
    • 병렬처리를 통한 성능 향상

스레드의 구현

사용자 수준 스레드 (User Thread)

  • 사용자 영역의 스레드 라이브러리로 구현됨
  • 사용자 영역에서는 여러 개의 스레드가 있지만 커널 영역에는 하나의 스레드만 존재 (다대일 매핑)
  • 커널은 스레드의 존재를 모름
    • 장점: 커널의 관리를 받지 않음
      • 생성 및 관리의 부하가 적음, 유연한 관리
    • 단점: 커널은 프로세스 단위로 자원 할당
      • 하나의 스레드가 block 상태가 되면 모든 스레드가 대기

커널 수준 스레드 (Kernel Thread)

  • 커널이 직접 관리
  • 커널 영역에서 스레드의 생성, 관리 수행
  • context switching 등 부하가 크다 (프로세스의 context switching 보다는 덜 하지만)
  • 커널이 각 스레드를 개별적으로 관리
    • 하나의 스레드가 block 상태가 되어도, 다른 스레드는 계속 작업 수행 가능
  • 일대일 매핑

혼합형 스레드

  • n개의 사용자 수준 스레드, m개의 커널 스레드 (n > m)

Reference