대학공부/운영체제

4. Threads & Concurrency

진진리 2025. 4. 10. 17:19

Overview

  • Thread: a light-weight process
    • CPU 사용의 기본 단위이며 thread ID, a program counter(PC), a register set, stack으로 구성
    • 같은 프로세스에 속한 스레드는 code section, data section, other OS resources를 공유
    • 하나의 애플리케이션은 여러 스레드를 제어하여 독립된 프로세스로 구현될 수 있음
      • 웹 서버는 이미지를 표시하는 스레드와 네트워크에서 데이터를 받는 스레드를 가질 수 있음

  • 하나의 애플리케이션은 여러 개의 비슷한 태스크를 수행
  • 서버가 요청을 수신할 때마다 단일 프로세스를 생성 -> 많은 시간과 자원을 소모
  • 웹 서버 프로세스가 멀티스레드 방식이라면 서버는 클라이언트 요청을 듣기 위한 별도의 스레드를 생성
    • 요청이 들어오면 새로운 스레드를 생성해 요청을 처리하고 추가적인 요청을 다시 대기
  • Multithreaded Server Architecture
    • 대부분의 운영체제 커널은 멀티스레드 방식
    • 예시: 리눅스 시스템이 부팅될 때 여러 커널 스레드가 생성되어 각 스레드는 특정 일을 수행; 기기 관리, 메모리 관리, 인터럽트 핸들링

  • 장점
    • Responsiveness(응답성): 일부가 차단되었거나 오래 걸리는 작업을 수행해도 나머지는 계속 실행 가능
    • Resource Sharing(자원 공유): 스레드는 동일 프로세스 내에서 자원을 공유
    • Economy(경제성): 자원을 공유하므로 스레드 생성 및 컨텍스트 스위칭 비용이 프로세스보다 저렴
    • Scalability(확장성): 멀티 프로세서 구조에서는 여러 스레드를 다른 코어에서 병렬 수행 가능해 성능 향상

 

Multicore Programming

  • 여러 개의 컴퓨팅 코어를 더 효율적으로 사용하고 동시성을 향상시키는 메커니즘을 제공
    • 단일 코어 시스템에서의 동시성: 코어가 한 번에 하나의 스레드만 실행 가능하므로 번갈아 수행하는 것
    • 멀티 코어 시스템에서의 동시성: 여러 스레드가 병렬로 실행될 수 있음
  • Parallelism: 시스템이 하나 이상의 작업을 동시에 수행하는 것
  • Concurrency: 여러 작업이 진행될 수 있도록 지원하는 것

 

Amdahl's Law

  • 애플리케이션에 serial components와 parallel components가 있을 때 코어를 추가할 때의 성능 향상을 파악
    • S: N개의 코어가 있을 때 직렬로 수행되어야 하는 부분
    • speed up <= 1 / (S + (1-S)/N)
  • N이 무한대에 가까워지면 전체 성능 향상은 1 / S에 가까워짐
    • 직렬 부분이 차지하는 부분이 클수록 성능 향상에 한계가 생김

 

Multithreading Models

User threads

  • 사용자 스레드: 커널 위에서 커널의 지원 없이 관리됨
  • 스레드 라이브러리 기능: 스레드 생성 및 제거, 스레드 간 메시지 및 데이터 전달, 스레드 실행 스케줄링, 스레드 컨텍스트 저장 및 복원
  • 장점: 커널 모드 권한이 필요 없음, 운영체제 상관없이 실행 가능, 실행 및 관리가 빠름
  • 단점: 하나의 사용자 스레드가 blocking operation을 수행하면 전체가 블로킹됨 -> 멀티 프로세스 이점 활용 불가능

 

Kernel threads

  • 운영체제에 의해 직접 지원되고 관리됨
  • 장점: 같은 프로세스의 스레드들이 다른 프로세서에서 스케줄될 수 있음, 하나의 프로세스가 블로킹되어도 커널이 다른 스레드를 스케줄 가능
  • 단점: 스레드 제어 전환 시 커널 모드로 전환 필요, 연산 속도가 수백 배 느림

 

Many-to-One Model

  • 여러 사용자 스레드가 하나의 커널 스레드에 매핑
  • 오직 하나의 스레드가 커널에 접근 가능하므로 여러 스레드가 멀티 코어 시스템에서도 병렬 실행 불가능
  • 거의 사용하지 않음
  • 예시: Solaris Green Threads

 

One-to-One Model

  • 사용자 스레드와 커널 스레드를 각각 매핑
  • 동시성 제공
  • 멀티 프로세서에서 병렬 실행 가능
  • 스레드를 만들 때마다 커널 리소스를 소모하므로 시스템 부담이 커질 수 있음
  • 예시: Family of Windows OS, Linux

 

Many-to-Many Model

  • 여러 사용자 스레드가 같거나 적은 수의 커널 스레드에 다중 매핑
  • 커널 스레드의 수는 특정 기계나 애플리케이션에 따라 달라짐
  • 장점: 필요한 만큼 사용자 스레드를 만들 수 있으며 대응되는 커널 스레드들은 병렬 실행 가능

 

Two-level Model

  • many-to-many 방식에서 특정 사용자 스레드를 하나의 커널 스레드에 고정하는 방식

'대학공부 > 운영체제' 카테고리의 다른 글

3. Processes  (0) 2025.04.10
2. OS structures  (0) 2025.04.09
Chapter 1. Introduction  (0) 2023.10.22