2. 스레드 관리 (Thread Management)

김민우·2022년 5월 3일
0

운영체제

목록 보기
3/14

- 프로세스(Process)와 스레드(Thread)의 차이

DifferenceProcessThread
Definition실행되고 있는 프로그램프로세스 내에서 실행되는 여러 흐름의 단위
Resource Allocation프로그램이 실행될 떄 마다 새로운 자원 할당프로세스의 자원을 공유
Resource Sharing일반적으로 자원을 공유하지는 않으나, 코드는 같은 프로그램 내에서 공유될 수도 있음스택을 제외한 힙, 데이터, 코드
Address분리된 주소 공간공유된 주소 공간
CommunicationIPC(Inter-Process Communication)를 통해 통신공유 변수를 수정하면서 자유롭게 통신
Context Switching스레드보다 느림스레드보다 빠름

※ 스레드는 하나의 프로세스안에 여러 개 존재할 수 있음


1. 스레드(Thread)_

  • Light weight Process (LWP)
  • 프로세서(CPU) 활용의 기본 단위
  • 구성 요소
    - Thread ID
    - Register set (PC, SP 등)
    - Stack (Local data)
  • 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레드들과 공유
  • 전통적 프로세스 = 단일 스레드 프로세스

스레드의 장점

  • 사용자 응답성 (Responsivenss)
    - 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능
  • 자원 공유 (Resource sharing)
    - 자원을 공유해서 효율성 증가 (커널의 개입1을 피할 수 있음)
    ---> ex) 동일 주소 공간에서 여러개의 스레드
  • 경제성 (Economy)
    - 프로세스의 생성, context switch에 비해 효율적
  • 멀티 프로세서 (Multi-processor) 활용
    - 병렬처리를 통해 성능 향상

2. 스레드의 구현

2-1. 사용자 수준 스레드 (User Thread) (다대일 모델)

  • 사용자 영역의 스레드 라이브러리로 구현 됨
    - 스레드의 생성, 스케줄링 등
    - POSIX threads, Win32 threads, Java thread API 등

  • 커널은 스레드의 존재를 모름|pros|cons|

    Pros생성 및 관리의 부하가 적음, 유연한 관리 기능, 이식성(Portability)이 높음
    Cons하나의 스레드가 block 상태가 되면 모든 스레드가 대기 (single-threaded kernel의 경우)

2-2. 커널 수준 스레드 (Kernel Thread) (1:1 모델)

  • OS(Kernel)가 직접 관리
  • Pros : 커널이 각 스레드를 개별적으로 관리
    • 프로세스 내 스레드들이 병행 수행 가능
    • 하나의 스레드가 block 상태가 되어도, 다른 스레드는 계속 작업 수행 가능
  • Cons : 커널 영역에서 스레드
    • Context switching 등 부하(Overhead)가 큼

2-3 혼합형 스레드(다대다 모델)

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

    1. 커널의 개입은 큰 오버헤드를 발생시킨다.
profile
Pay it forward.

0개의 댓글