Home OS Thread (2)
Post
Cancel

OS Thread (2)

목적


  1. CPU 이용의 기본 단위가 된 스레드를 이해한다.

실천 목표


  1. 스레드 풀, 포크 조인 및 그랜드 센트럴 디스패치를 포함하여 암시적 스레딩에 대한 다양한 접근 방식을 설명한다.
  2. Windows 및 Linux 운영체제가 스레드를 어떻게 나타내는지 설명한다.
  3. Pthread, Java 및 Windows 스레딩 API를 사용하여 다중 스레드 응용 프로그램을 설계한다.

O/S의 모드가 두 가지, 스레드도 종류가 두 가지


  1. 사용자 스레드
    • O/S의 사용자 모드에서 동작하는 스레드
    • 커널의 지원없이 운영됨
  2. 커널 스레드
    • O/S의 커널 모드에서 동작하는 스레드
    • O/S에 의해 직접적으로 운영됨

다중 스레드 모델


  • 사용자 스레드와 커널 스레드의 연관 관계에 따라 세 가지 모델이 존재
    1. 다대일 모델 2022-10-23-os-thread-01
    2. 일대일 모델 2022-10-23-os-thread-02
    3. 다대다 모델 2022-10-23-os-thread-03 +@ 두 수준 모델 2022-10-23-os-thread-04

스레드 라이브러리


  1. POSIX Pthreads
    • POSIX (IEEE 1003.1c)가 스레드 생성과 동기화를 위해 제정한 표준 API
    • Spec로 정의를 해놓았고 실제 구현을 한 것은 아니지만 대부분의 UNIX, LINUX에서 이 Spec에 맞게 구현됨
  2. Windows thread
    • Windows 스레드 라이브러리
    • 많은 점에서 POSIX Pthreads 기법과 유사
  3. Java thread
    • 스레드는 Java 프로그램 실행의 근본적인 모델
    • Java 프로그램은 JVM 내의 단일/다중 스레드로 수행됨
    • JVM이 Linux, Windows 등 O/S에서 제공하는 스레드를 이용하는 방식

암묵적 스레딩 (Implicit Threading)


  • 스레딩의 생성과 관리 책임을 응용 프로그램 개발자로부터 컴파일러와 런타임 라이브러리에게 넘겨주는 것
  • 암묵적 스레딩을 이용하는 방법으로는 다음의 네 가지가 존재
    1. Thread Pools
      • 프로세스를 시작할 때 일정한 수의 스레드들을 미리 풀에 만들어둠
    2. Fork & Join
      • Fork와 Join은 명시적 스레딩에서 사용되지만 암시적 스레딩에서도 이 개념을 사용 가능
      • 암시적 스레딩에서 사용하는 경우, Fork 시에 스레드가 직접 구축되는 게 아닌 병렬 작업이 식별됨
    3. OpenMP
      • 컴파일러 지시어와 API의 집합
      • 병렬적으로 실행할 코드의 블록을 지시하면 컴파일러->OpenMP 런타임 라이브러리가 알아서 그 영역을 병렬적으로 실행
    4. Grand Central Dispatch
      • macOS 및 iOS 운영체제를 위해 Apple에서 개발한 기술
      • OpenMP와 비슷한 기법으로 동작

참고


  1. 운영체제 공룡책 강의 | 주니온 | 인프런 https://www.inflearn.com/course/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B3%B5%EB%A3%A1%EC%B1%85-%EC%A0%84%EA%B3%B5%EA%B0%95%EC%9D%98/dashboard
  2. 운영체제 제 10판Abraham Silberschatz, Peter Baer Galvin, Greg Gagne 저/박민규 역퍼스트북2020년 02월 28일
  3. 운영체제 제 10판 솔루션 https://codex.cs.yale.edu/avi/os-book/OS10/practice-exercises/index-solu.html
This post is licensed under CC BY 4.0 by the author.