본문 바로가기
운영체제

운영체제 Chatper 4 4-2 Thread

by PlusUltraCode 2024. 7. 18.

프로세스와 스레드

프로세스

  • 스케줄링 및 실행 단위: 프로세스
  • 자원 소유 단위: 프로세스
  • 예제 시스템:
    • MS-DOS: 1 프로세스, 1 스레드
    • UNIX: 여러 프로세스, 각 프로세스당 1 스레드
    • Windows, Solaris, 현대 UNIX: 여러 프로세스, 각 프로세스당 여러 스레드

멀티스레딩

멀티스레딩 시스템은 하나의 프로세스 내에서 여러 스레드를 지원하여 프로그램의 효율성과 성능을 향상시킵니다. 이는 동시에 여러 작업을 수행할 수 있게 합니다.

프로세스 vs. 스레드

  • 프로세스: 자원 소유 단위로, 프로세스 이미지(메모리 공간)를 포함하며 CPU, 파일, I/O 자원을 보호합니다.
  • 스레드: 실행 단위로, 개별 스레드는 각각의 컨텍스트와 스택을 가지지만 프로세스의 자원을 공유합니다.

단일 스레드 vs. 멀티스레드 프로세스 모델

단일 스레드 프로세스 모델

  • 사용자 주소 공간에는 프로그램 데이터와 코드가 포함됩니다.
  • 커널 코드가 사용자 프로세스 내에서 실행됩니다.

멀티스레드 프로세스 모델

  • 프로세스 내 스레드는 프로그램 코드와 데이터를 공유하지만 개별 스택을 가집니다.
  • 멀티스레드 시스템의 PCB(프로세스 제어 블록)는 여러 TCB(스레드 제어 블록)를 포함합니다.

스레드 제어 블록 (TCB)

  • 스레드 상태, 실행 스택, 컨텍스트 등의 스레드별 정보를 포함합니다.

프로세스와 스레드의 주요 차이점

  1. 생성 시간: 프로세스 생성 시간이 스레드 생성 시간보다 더 오래 걸립니다.
  2. 전환 시간: 프로세스 전환 시간이 스레드 전환 시간보다 더 오래 걸립니다.
  3. 커널 개입: 프로세스 관리는 커널 개입이 필요하지만 스레드 관리는 사용자 수준 스레딩에서 최소화할 수 있습니다.

사용자 수준 스레드 vs. 커널 수준 스레드

사용자 수준 스레드 (ULT)

  • 관리: 사용자 공간의 스레드 라이브러리에 의해 관리됩니다.
  • 장점:
    • 커널 모드 권한 없이 빠른 스위칭.
    • 애플리케이션에 맞춘 커스텀 스케줄링 가능.
    • 멀티스레딩 지원 여부와 관계없이 모든 OS에서 실행 가능.
  • 단점:
    • 커널이 스레드를 인식하지 못해 블로킹 작업에서 최적의 성능을 발휘하지 못할 수 있음.

커널 수준 스레드 (KLT)

  • 관리: 운영 체제에 의해 직접 관리됩니다.
  • 장점:
    • 멀티코어 시스템에서 진정한 동시 실행 가능.
    • 하나의 스레드가 블록되더라도 다른 스레드는 계속 실행 가능.
  • 단점:
    • 커널 모드 전환으로 인한 오버헤드가 큼.

결합 접근법

  • 혼합형: 사용자 수준 스레드와 커널 수준 멀티스레딩을 함께 사용하여 두 가지의 장점을 모두 활용합니다.
  • 예제: 사용자 수준 스레드 관리와 커널 수준 멀티스레딩을 결합하여 더 나은 제어와 성능을 제공합니다.

스레드 상태

  1. 생성(Spawn): 새로운 스레드 생성.
  2. 준비(Ready): 실행 준비 완료.
  3. 실행(Running): 현재 실행 중.
  4. 블로킹(Blocked): 자원 대기 중.
  5. 종료(Finish): 종료되고 자원 해제 중.

스레드와 스와핑

  • 스레드 중지: 스레드는 프로세스를 스와핑하지 않고도 중지될 수 있습니다.
  • 프로세스 중지: 프로세스가 중지되면 모든 스레드도 중지되고 스와핑됩니다.

동기화와 통신

  • 프로세스 내 스레드는 자원을 공유하고 효율적으로 통신합니다.
  • 사용자 수준 라이브러리는 스레드 동기화와 메시지 전송을 지원합니다.

멀티스레딩의 주요 장점

  1. 향상된 성능: 프로세스보다 빠른 생성 및 전환 시간.
  2. 자원 공유: 스레드는 프로세스 자원을 효율적으로 공유.
  3. 동시성: 프로세스 내 병렬 실행으로 응답성 향상.

멀티스레딩 시스템의 진화

  • 초기 시스템인 MS-DOS는 단일 스레드 프로세스를 지원했습니다.
  • 현대 시스템인 Windows, Solaris, UNIX는 멀티스레딩을 지원하여 멀티코어 프로세서의 이점을 활용합니다.

요약

프로세스와 스레드의 차이를 이해하고 멀티스레딩의 장점을 활용하면 시스템 성능과 자원 활용을 최적화할 수 있습니다. 멀티스레딩은 효율적인 실행과 자원 관리를 가능하게 하여 현대 운영 체제와 소프트웨어 설계의 중요한 요소가 됩니다.

'운영체제' 카테고리의 다른 글

운영체제 Chatper 4 4-3 Thread  (0) 2024.07.18
운영체제 Chatper 4 4-1 Thread  (0) 2024.07.18
운영체제 Chatper 3 3-3 Process  (0) 2024.06.25
운영체제 Chapter 3-1 Process  (0) 2024.06.25
운영체제 Chapter3 3-2 Process  (0) 2024.06.25