Study/OS

Chapter 04. Thread Management

zzoo-ppaamm 2021. 6. 23. 16:50

스레드의 개념

프로세스와 스레드

프로세스 <--할당--- 자원

프로세스 ---제어--> 자원 : 이걸 하는게 스레드

구성
  1. 제어정보 (SP, PC, 상태 등)
  2. 지역데이터
  3. 스택(Stack) (지역데이터 저장)

같은 프로세스의 스레드들은
동일한 주소 공간을 공유

  • Light Weihgt Process (LWP) (제어만 하니까~)
  • 프로세서(CPU) 활용의 기본 단위
  • 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내의 다른 스레드들과 공유
  • 전통적 프로세스 = 단일 스레드 프로세스
장점
  • 사용자 응답성 (Responsiveness)

    • 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능
  • 자원 공유 (Resource sharing)

    • 자원을 공유해서 효율성이 증가

    • 커널의 개입을 피할 수 있음
      (Context Switch를 피할 수 있음)

  • 경제성 (Economy)

    • 프로세스의 생성, context switch에 비해 효율적
  • 멀티 프로세서 활용

  • 병렬 처리를 통해 성능 향상

스레드의 구현

  • 사용자 수준 스레드 (User thread)
  • 커널 수준 스레도 (Kernel thread)
  • 혼합형 스레드

사용자 수준 스레드

  • 사용자 영역의 스레드 라이브러리로 구현됨

    • 스레드의 생성. 스케쥴링등
    • ex) Win32 threads, Java thread API 등
  • 다대일 매핑 (사용자 영역의 스레드 수 n : 커널 영역의 스레드 수 1)

  • 장점 : 커널은 스레드의 존재를 모름

    • 커널의 관리(개입)를 받지 않음
      • overhead 적다, 유연하다
      • 이식성이 높다 ex) JVM
  • 단점 : 커널은 (스레드 단위가 아닌) 프로세스 단위로 자원 할당

    • 하나의 스레드가 block 상태가 되면, 모든 스레드가 대기

커널 수준 스레드

  • OS(Kernel)이 직접 관리
  • 일대일(1:1) 매핑
  • 단점 : 커널이 직접 스레드의 생성, 관리를 수행
    • Overhead가 크다. (Context switching 등)
    • (process간의 context switching 보다는 작겠지만
      사용자 수준 스레드보다는 크다)
  • 장점: 커널이 각 스레드를 개별적으로 관리
    • 프로세스 내 스레드들이 병행 수행 가능
      • = 하나의 스레드가 block되어도, 다른 스레드는 계속 작업 가능

혼합형 스레드

  • (위의 장점들만 섞어 만들자)

  • 다대다 모델 (n:m)

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

    • 사용자가 원하는 수만큼 스레드 사용
    • 커널스레드는 자신에게 할당된 하나의 사용자 스레드가 block 상태가 되어도, 다른 스레드 수행 가능 (병행처리가능)
  • 효율적이면서도 유연함 !!