Operating System: Concepts 9th edition 책으로 공부하며 기억할 필요가 있는 주요 개념을 개인 공부 목적으로 정리한 글 입니다.

 

 

4.1 스레드

 

스레드: CPU 이용의 기본 단위

  • id,프로그램 카운터, 레지스터집합, 스택으로 구성 
  • 같은 프로세스의 스레드와 코드,데이터 섹션(전역변수), 파일이나 신호같은 운영체제 자원 공유 

단일 스레드 : 프로세스내에 하나의 제어 스레드

다중 스레드 :  프로세스내에 다수의 제어 스레드 

  1. 응답성 
  2. 자원공유 : 자동적으로 같은 프로세스 내의 스레드와 자원, 메모리 공유
  3. 경제성 : 프로세스 생성을 위해 메모리, 자원 할당하는 것의 비용보다 저렴
  4. 규모 적응성 : 다중 처리기구조에서 각 스레드가 다른 처리기에 병렬로 수행될 수 있음

 

4.2 다중 코어 프로그래밍 

 

다중코어 : 코어가 여러 CPU 칩 형태를 띠거나 칩 안에 여러개가 존재하는 시스템 

  • 코어는 한 번에 오직 하나의 스레드만 실행 가능 
  • 여러 코어를 가진 시스템은 개별 스레드를 각 코어에 배정하여 병렬적으로 실행 가능 

 

병렬 실행 : 하나 이상의 태스크를 동시에 수행

병행 실행 :  모든 태스크가 진행하게끔 함으로써 하나 이상의 태스크를 지원 

 

 

데이터 병렬 :  동일한 데이터의 부분집합을 다수의 계산 코어에 분배, 각 코어에서 동일한 연산 실행하는 것에 초점

태스크 병렬 : 태스크를 다수의 코어에 분배 

 


4.3 다중 스레드 모델

 

스레드를 위한 지원 :  사용자 스레드 (사용자 수준) / 커널 스레드 (커널 수준)

 

사용자 스레드와 커널 스레드의 연관 관계

  • 다대일 모델 : 많은 사용자 수준의 스레드를 하나의 커널 스레드로 사상 
    • 스레드 관리는 스레드 라이브러리에 의해 행해짐 
    • 한 스레드가 봉쇄형 시스템 콜 하는 경우 전체가 봉쇄되는 문제
  • 일대일 모델 : 각 사용자 스레드를 각 하나의 커널 스레드로 사상
    • 다대일 모델보다는 더 많은 병렬성 제공
    • 사용자 수준 스레드 생성시 그 수 만큼 커널 스레드 생성필요
  • 다대다 모델 : 여러 개의 사용자 수준 스레드를 그 보다 작거나 같은 커널의 스레드로 멀리플렉스

 

스레드 라이브러리 : 프로그래머에게 스레드를 생성하고 관리하기 위한  API 제공 


 

4.5 암묵적 스레딩

 

암묵적 스레딩 : 스레딩 생성과 관리 책임을 컴파일러와 실행시간 라이브러리에게 넘기는 것 

 

다중 스레드 프로그램 설계 3가지 접근법

  1. 스레드 풀 :  스레드 무한 생성으로 발생할 수 있는 시스템 자원 고갈 문제 해결
    1. 일정 수의 스레드를 미리 풀로 만들어 요청시 한 스레드에게 작업 할당
  2. OpenMP : 공유 메모리 환경에서 병렬 프로그래밍 할 수 있도록 병렬 실행될 수 있는 블록을 찾아줌 
  3. Grand Central Dispatch : 개발자가 병렬로 실행될 수 있는 영역을 식별할 수 있도록 도움을 줌 

[4장 요약]

 

스레드 : 프로세스 안에 제어 흐름

  1. 다중 스레딩 장점
  2. 향상된 응답성
  3. 프로세스 내 자원 공유
  4. 경제성
  5. 더 효율적인 다중 처리 코어 이용 

 

사용자 수준 스레드 :  커널은 알 수 없는 스레드

커널 수준 스레드 :  운영체제 커널에 의해서 지원, 관리 

 

생성 속도 : 사용자 수준 > 커널 수준

 

사용자 -커널 스레드 관련 세 가지 모델

  1. 다대일 모델
  2. 일대일 모델
  3. 다대다 모델

 

암묵적 스레딩 구현 방법

  1. 스레드 풀
  2. OpenMP
  3. GCD

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

Operating System 5장  (0) 2021.10.03
Operating System 3장  (0) 2021.10.02
Operating System 1장  (0) 2021.10.02

+ Recent posts