티스토리 뷰

CS/운영체제

운영체제 - Thread management

Codecheck 2024. 3. 15. 18:49

스레드 관리 (Thread Management)

스레드의 개념

프로세스(Process)와 스레드(Thread)

한 프로세스 안에 스레드는 여러 개 있을 수 있다.

자원은 공유를 하지만, 각각의 자신만의 제어요소들을 가지고 있는 것.

스레드

 

★ Light Weight Process (LWP)

★ 프로세서(e.g, CPU) 활용의 기본 단위

★ 구성요소

  • Thread ID
  • Register set (PC, SP 등)
  • Stack (i.e local data)

★ 제어 요소 외 코드, 데이터 및 자원들은 프로세스 내 다른 스레드들과 공유

★ 전통적 프로세스 = 단일 스레드 프로세스

스레드의 장점

★ 사용자 응답성 (Responsiveness)

  • 일부 스레드의 처리가 지연되어도, 다른 스레드는 작업을 계속 처리 가능

★ 자원 공유 (Resource sharing)

  • 자원을 공유해서 효율성 증가 (커널의 개입을 피할 수 있음)

✓ 예) 동일 address space에서 스레드 여러 개

★ 경제성 (Economy)

  • 프로세스의 생성, context switch에 비해 효율적

★ 멀티 프로세서(multi-processor) 활용

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

스레드 사용의 예

스레드의 구현

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

★ 커널 수준 스레드 (Kernal Thread)

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

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

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

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

★ 커널의 관리(개입)를 받지 않음

  • 생성 및 관리의 부하가 적음, 유연한 관리 가능
  • 이식성(portability)이 높음

★ 커널은 프로세스 단위로 자원 할당

  • 하나의 스레드가 block 상태가 되면, 모든 스레드가 대기 (single-threaded kernel의 경우)

커널 수준 스레드 (Kernel Threads)

★ OS(Kernal)가 직접 관리

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

  • Context switching 등 부하(Overhead)가 큼

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

  • 프로세스 내 스레드들이 병행 수행 가능

✓ 하나의 스레드가 block 상태가 되어도, 다른 스레드는 계속 작업 수행 가능

Multi-Threading Model

★ 다대일(n:1) 모델

  • 사용자 수준 스레드

★ 일대일(1:1) 모델

  • 커널 수준 스레드

★ 다대다(n:m) 모델

  • n > m
  • 혼합형 스레드

혼합형 (n:m) 스레드

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

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

✓ 병행 처리 가능

★ 효율적이면서도 유연함

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함