Operating System: Concepts 9th edition 책으로 공부하며 기억할 필요가 있는 주요 개념을 개인 공부 목적으로 정리한 글 입니다.
4.1 스레드
스레드: CPU 이용의 기본 단위
- id,프로그램 카운터, 레지스터집합, 스택으로 구성
- 같은 프로세스의 스레드와 코드,데이터 섹션(전역변수), 파일이나 신호같은 운영체제 자원 공유
단일 스레드 : 프로세스내에 하나의 제어 스레드
다중 스레드 : 프로세스내에 다수의 제어 스레드
- 응답성
- 자원공유 : 자동적으로 같은 프로세스 내의 스레드와 자원, 메모리 공유
- 경제성 : 프로세스 생성을 위해 메모리, 자원 할당하는 것의 비용보다 저렴
- 규모 적응성 : 다중 처리기구조에서 각 스레드가 다른 처리기에 병렬로 수행될 수 있음
4.2 다중 코어 프로그래밍
다중코어 : 코어가 여러 CPU 칩 형태를 띠거나 칩 안에 여러개가 존재하는 시스템
- 코어는 한 번에 오직 하나의 스레드만 실행 가능
- 여러 코어를 가진 시스템은 개별 스레드를 각 코어에 배정하여 병렬적으로 실행 가능
병렬 실행 : 하나 이상의 태스크를 동시에 수행
병행 실행 : 모든 태스크가 진행하게끔 함으로써 하나 이상의 태스크를 지원
데이터 병렬 : 동일한 데이터의 부분집합을 다수의 계산 코어에 분배, 각 코어에서 동일한 연산 실행하는 것에 초점
태스크 병렬 : 태스크를 다수의 코어에 분배
4.3 다중 스레드 모델
스레드를 위한 지원 : 사용자 스레드 (사용자 수준) / 커널 스레드 (커널 수준)
사용자 스레드와 커널 스레드의 연관 관계
- 다대일 모델 : 많은 사용자 수준의 스레드를 하나의 커널 스레드로 사상
- 스레드 관리는 스레드 라이브러리에 의해 행해짐
- 한 스레드가 봉쇄형 시스템 콜 하는 경우 전체가 봉쇄되는 문제
- 일대일 모델 : 각 사용자 스레드를 각 하나의 커널 스레드로 사상
- 다대일 모델보다는 더 많은 병렬성 제공
- 사용자 수준 스레드 생성시 그 수 만큼 커널 스레드 생성필요
- 다대다 모델 : 여러 개의 사용자 수준 스레드를 그 보다 작거나 같은 커널의 스레드로 멀리플렉스
스레드 라이브러리 : 프로그래머에게 스레드를 생성하고 관리하기 위한 API 제공
4.5 암묵적 스레딩
암묵적 스레딩 : 스레딩 생성과 관리 책임을 컴파일러와 실행시간 라이브러리에게 넘기는 것
다중 스레드 프로그램 설계 3가지 접근법
- 스레드 풀 : 스레드 무한 생성으로 발생할 수 있는 시스템 자원 고갈 문제 해결
- 일정 수의 스레드를 미리 풀로 만들어 요청시 한 스레드에게 작업 할당
- OpenMP : 공유 메모리 환경에서 병렬 프로그래밍 할 수 있도록 병렬 실행될 수 있는 블록을 찾아줌
- Grand Central Dispatch : 개발자가 병렬로 실행될 수 있는 영역을 식별할 수 있도록 도움을 줌
[4장 요약]
스레드 : 프로세스 안에 제어 흐름
- 다중 스레딩 장점
- 향상된 응답성
- 프로세스 내 자원 공유
- 경제성
- 더 효율적인 다중 처리 코어 이용
사용자 수준 스레드 : 커널은 알 수 없는 스레드
커널 수준 스레드 : 운영체제 커널에 의해서 지원, 관리
생성 속도 : 사용자 수준 > 커널 수준
사용자 -커널 스레드 관련 세 가지 모델
- 다대일 모델
- 일대일 모델
- 다대다 모델
암묵적 스레딩 구현 방법
- 스레드 풀
- OpenMP
- GCD
'CS > 운영체제' 카테고리의 다른 글
Operating System 5장 (0) | 2021.10.03 |
---|---|
Operating System 3장 (0) | 2021.10.02 |
Operating System 1장 (0) | 2021.10.02 |