[운영체제] - Lecture 4. Thread Management

Junyeong Fred Kim·2021년 12월 25일
0

운영체제

목록 보기
4/27
post-thumbnail

스레드(Thread)의 개념

  • Light Weight Process(LWP)
  • 프로세서(e.g CPU) 활용의 기본 단위
  • 제어 요소 외 코드, 데이터자원들은 프로세스 내 다른 스레드들과 공유
  • 전통적 프로세스 = 단일 스레드 프로세스 (제어가 하나)

구성요소
Thread ID
Register set (Program Counter, Stack Point 등, 상위 프로세스나 타 스레드와 협업하기 위해서 필요한 것들)
Stack

멀티 스레드 프로세스의 구성

멀티 스레드 프로세스의 메모리 구성


👉 스레드의 장점

  • 사용자 응답성 (Responsiveness)
    일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능

  • 자원 공유 (Resource sharing)
    자원을 공유해서 효율성 증가 (커널의 개입을 피할 수 있음). *경제성과 같은 의미

  • 경제성 (Economy)
    프로세스의 생성, context switch에 비해 효율적
    (context switch는 메모리를 지웠다 썼다하지만, 스레드는 메모리의 변화 없이 작업이 가능하다.)

  • 멀티 프로세서(multi-processor) 활용
    병렬처리를 통해 성능 향상


스레드의 구현

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

n:1 모델 (다대일)

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

  • 스레드의 생성, 스케줄링
  • POSIX threads, Win32 threads, Java thread API 등

커널은 스레드의 존재를 모름

  • 커널의 관리(개입)를 받지 않음
    -> 생성 및 관리의 부하가 적음, 유연한 관리 가능
    -> 이식성(portability)이 높음
  • 커널은 프로세스 단위로 자원 할당
    -> 하나의 스레드가 block 상태가 되면, 모든 스레드가 대기 (single-threaded kernel의 경우)


👉 커널 수준 스레드 (Kernel Threads)

OS(Kernel)가 직접 관리
1:1 모델

커널 영역에서 스레드의 생성, 관리 수행

  • Context swithcing 등 부하(Overhead)가 큼

커널이 각 스레드를 개별적으로 관리

  • 프로세스 내 스레드들이 병행 수행 가능
    하나의 스레드가 block 상태가 되어도, 다른 스레드는 계속 작업 수행 가능


혼합형 스레드

n:m (다대다) 모델
커널 수준의 장점사용자 수준의 장점을 모두 가진다.

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

  • 사용자가 원하는 수만 큼 스레드 사용

  • 커널 스레드는 자신에게 할당된 하나의 사용자 스레드가 block 상태가 되어도, 다른 스레드 수행 가능
    병행 처리 가능

  • 효율적이면서도 유연함

profile
기억보다 기록

0개의 댓글