스레드 Thread

헬리코박도·2022년 4월 25일
0

운영체제

목록 보기
9/10

스레드 Thread

  • 프로세스의 두 특성(자원, 제어) => 제어 부분만 분리한 실행 단위
  • 프로세서 활용의 기본 단위
  • PCB처럼 TCB를 가짐
  • 스레드들은 프로세스의 자원(코드, 전역 데이터, 힙 등)을 공유함
  • 스레드 실행 환경 정보(Stack Pointer, Program Counter, 상태, 우선순위), 지역 데이터, 스택은 공유하지 않고 스레드 독립

장점

  • 사용자 응답성: 일부 스레드의 처리가 지연돼도 다른 스레드는 작업을 계속 처리함
  • 자원 공유: 자원을 공유하여 커널의 개입을 줄여 오버헤드가 적어져 효율성이 증가함
  • 경제성: 프로세스의 생성, 컨텍스트 스위칭에 비해 효율적
  • 멀티 프로세서 활용: 병렬처리를 통해 성능 향상

구현

사용자 수준 스레드 User Thread

  • 사용자 영역의 스레드 라이브러리로 구현됨
    • 스레드의 생성, 스케줄링 등을 담당
    • POSIX threads, Win32 threads, Java thread API 등의 라이브러리가 있음
  • 커널은 스레드의 존재를 모름
    • 커널의 개입이 없음
      • 생성 및 관리의 부하가 적음, 관리 유연함
      • 이식성이 높음
    • 커널은 프로세스 단위로 자원을 할당함
      • 싱글 스레드 커널의 경우 하나의 스레드가 블락 되면 모든 스레드가 대기함

커널 수준 스레드 Kernel Thread

  • 커널이 직접 관리
  • 커널 영역에서 스레드의 생성, 관리 수행
    • Context Switching 등 오버헤드가 큼
  • 커널이 각 스레드를 개별적으로 관리
    • 프로세스 내 스레드들이 병행 수행 가능
      • 하나의 스레드가 블락 되어도 다른 스레드는 계속 작업 수행 가능

멀티스레딩 모델 Multi-Threading Model

  • 다대일(n:1) 모델

    • 사용자 수준 스레드
  • 일대일(1:1) 모델

    • 커널 수준 스레드
  • 다대다(n:m) 모델

    • n >= m
    • 혼합형 스레드: n개의 사용자 스레드와 m개의 커널 스레드를 여러 개 사용
      • 사용자는 원하는 수만큼 스레드를 사용 가능함
      • 병렬처리: 커널 스레드는 자신에게 할당된 사용자 스레드가 블락되어도 다른 스레드 수행 가능

한기대 김덕수 교수님 강의

profile
Data Engineer

0개의 댓글