CS/운영체제

[운영체제] 3. 스레드 관리

hyomee2 2025. 2. 23. 20:16

스레드 개요

프로세스는 자원을 할당받고, 자원을 제어해서 원하는 목적(작업)을 달성한다.

 

이때, 프로세스 내에서 실행되는 최소 실행 단위를 '스레드' 라고 한다.

하나의 프로세스는 여러 스레드를 가질 수 있으며,

스레드들은 같은 프로세스의 메모리 공간(자원)을 공유하며 독립적인 실행 흐름을 가진다.

 

 

아래와 같이 자원은 공유하는데, 이 자원을 제어하는 스레드는 여러 개 있을 수 있다.

(프로세스가 할당받은 자원은 공유)

 


스레드의 개념

  • Light Weight Process(LWP)
    • 프로세스는 원래 자원과 제어를 각각 갖고 있어야 하는데, 스레드는 자원은 공유하고 제어만 갖고 있으니 일반 프로세스보단 가볍다.
  • 프로세서(e.g., CPU) 활용의 기본 단위
    • 스레드가 여러 개면 동시에 여러 CPU 사용 가능
  • 구성요소
    • Thread ID
    • Register set (PC 등)
    • Stack (i.e., local data)
  • 제어 요소 외 코드, 데이터 및 자원들은 프로세스의 다른 스레드들과 공유
  • 전통적 프로세스 = 단일 스레드 프로세스

스레드의 장점

  • 사용자 응답성(responsiveness)
    • 일부 스레드의 처리가 지연되어도 다른 스레드는 작업을 계속 처리할 수 있다.
  • 자원 공유 (resource sharing)
    • 자원을 공유해서 효율성 증가 (커널의 개입을 피할 수 있다. 스레드가 없으면 자원을 쓸 때 context switch 발생)
    • 자원을 동시 사용 가능
    • e.g., 동일 address space에서 스레드 여러 개
  • 경제성 (economy)
    • 프로세스의 생성, context switch에 비해 효율적
  • 멀티 프로세서 활용
    • 병렬처리를 통해 성능 향상 (여러 개의 CPU 코어 동시 사용)

스레드 사용의 예

스레드를 사용하지 않으면 계속 context switch 발생

 


스레드의 구현

1. 사용자 수준 스레드(User threads)

  • 사용자 영역의 스레드 라이브러리로 구현된다.
    • 스레드의 생성, 스케줄링 등
    • POSIX threads, Win32 threads, Java thread API...
  • n:1 모델
  • 커널은 스레드의 존재를 모른다.
    • 장점) 커널의 관리(개입)를 받지 않는다.
      • 생성 및 관리의 부하가 적으며, 효율적이고 유연한 관리가 가능하다. (커널은 개입하지 않고 라이브러리 수준에서 개입하니까)
      • 이식성이 높다.
    • 단점) 커널은 프로세스 단위로 자원을 할당한다.
      • (single-threaded kernel의 경우) 여러 스레드 중 하나의 스레드가 block 상태가 되면 모든 스레드가 대기

 

2. 커널 수준 스레드(Kernel threads)

  • 사용자 수준 스레드에 1:1 매핑되게 커널 수준 스레드 생성 (두 스레드의 개수는 같다.)

        -> 커널 안에 제어요소(스레드)들이 여러 개 생기고, 이 관리도 커널이 하게 된다. (오버헤드가 크다.)

  • 1:1 모델
  • 장점) 커널이 각 스레드를 개별적으로 관리한다.
    • 프로세스 내 스레드들이 병행 수행 가능 (하나의 스레드가 block 상태가 돼도, 다른 스레드는 계속 작업 수행 가능)
  • 단점) 커널 영역에서 스레드의 생성, 관리 수행
    • context switch 등 부하(overhead)가 크다.

 

3. 혼합형 스레드

: 다대일(n:1) 모델(사용자 수준 스레드)와 일대일(1:1) 모델(커널 수준 스레드)를 합친 것으로, 다대다(n:m) 모델이다. (n > m)

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


본 게시물은 아래 강의를 공부한 내용을 토대로 작성했습니다. :)

https://www.youtube.com/watch?v=_gNeoGQx-Tc&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=8