멀티프로세서 구조는 기본적으로 cost가 높음
-개발이 어렵다.
-속도에 있어서 오버헤드가 있다.
위와 같은 문제들을 스레드가 해결해 줌
1. What is Thread?
- 스레드는 CPU이용의 기본 단위
- 스레드는 프로그램에서 일련의 명령들을 실행함.
이 스레드는 두 가지 형태로 나뉘는데
a. 싱글 스레드 프로세스
- 스레드가 단일이라서 thread state가 하나만 존재함.
- 이 싱글 스레드가 하나에 코어에만 매핑이 됨
b. 멀티 스레드 프로세스
- 스레드 여러개가 별도의 실행 흐름을 가짐
1-1. 스레드끼리 공유하는 것
- Code
- Global variable
- Opened files
- Heap
1-2. 스레드 각자 가지고 있는 것
- Set of registers (Program Counter, Stack Pointer..)
- Stack 영역 (하지만, 다른 스레드의 스택에 접근할 수 없는건 아님.)
- Thread ID
2. 프로세스와 스레드의 차이
- 프로세스는 멀티 스레드를 가질 수 있음
- 스레드는 하나의 프로세스에 속해있음
- 프로세스는 스레드 실행의 컨테이너 같은 존재
- 모든 스레드들은 같은 주소영역을 참조함
- 스레드는 CPU scheduling의 기본 단위
3. 멀티 스레딩의 장점
- 스레드 사이의 통신은 주소영역을 공유하기 때문에 오버헤드가 적다
- 큰 작업들을 분할해서 스레드별로 동시에 처리가 가능하다. 즉 모듈화가 가능하다.
- I/O operation과 computing연산을 동시에 수행 가능하다
- 사용자 측면에서 반응성이 높다
4. Concurrency VS Parallelism
4-1. Concurrency
하나 이상의 Task가 동시에 수행 될 수 있도록 하는 프로그램적 성질
>> Concurrency는 SW적 성질이며 Logical한 개념임.
>> 스레드가 매우 빠르게 번갈아가면서 작동이 되면서 사용자 입장에서는 마치 여러개의 작업이 동시에 수행되는 것 처럼 보임
4-2. Parallelism
하나 이상의 Task가 동시에 수행 될 수 있도록 하는 하드웨어적 성질
>> 스레드가 각각의 코어에 매핑이 되면서 여러개의 스레드가 동시에 실행이 됨
Parallelism 없이 Concurrency만 수행도 가능함
4.2.1 Parallelism의 타입
- Data Parallelism
> 전체 데이터를 작은 subset으로 나누어서 각 코어별로 실행하는 것
>> 예를들면 Array의 합을 구하는데, 한 스레드는 0~n/2까지 더하고, 다른 스레드는 n/2부터 n까지 더해서 두 결과를 합치는 경우
- Task parallelism
> 코어 각각 특정한 일을 담당하게 되어있어서 각 스레드마다 다른 operation을 처리하는 것
>> 이 스레드는 I/O operation처리 담당, 이 스레드는 computating담당 이런식으로 역할분담
5. Amdahl's Law
전체 Task를 1로 잡고, Serial하게 동작하는 부분을 S, Paarallel하게 동작하는 부분을 1-S라고 할 때, N개의 코어를 사용하면 얼마만큼의 성능 향상이 이루어지는지 계산하는 것
-ex) 40%가 Serial하게, 60%가 Parallel하게 움직이는 프로그램이 두개의 코어를 가지고 있으면 성능 향상은 1/(0.4 + 0.3)정도
-ex) 이론적으로 코어의 개수가 무한이면 성능은 1/S만큼 향상됨
-ex) 이론적으로 Serial하게 동작하는 부분이 없다면, 성능은 N배 증가함
6. Thread Libraries
6.1 Kernel Thread
-OS에 의해서 스레드가 관리되는것. 이것이 결국 스케쥴링의 단위
-현대의 OS들은 모두 커널스레드를 지원함
6.2 User threads
- user-level threads libraries에서 스레드가 만들어지고 관리되는것
이 둘이 각각 매핑되는 방법이있는데, One to One model, Many to Many model, Many to Many model, Two-level Model 등등이 있다.
'학교 수업 > 운영체제' 카테고리의 다른 글
운영체제 || 9. Process Scheduling II (0) | 2021.04.17 |
---|---|
운영체제 7 || thread (2 (0) | 2021.04.17 |
운영체제 || 5. Inter Process Communication (0) | 2021.03.29 |
운영체제 || 4. Process (0) | 2021.03.19 |
운영체제 3 || OS의 구조를 어떻게 디자인 할 수 있을까? (0) | 2021.03.14 |
댓글