728x90
개요
하나의 app이라도 여러 task를 수행하기 위해 최근 프로그램들은 모두 multithread를 이용한다.
multi-process보다 시간도, 자원도, 비용도 더 적게 드는 multi-thread
Multi-threaded 장점
- 응답성 향상
- 리소스 공유(리소스가 차지하는 메모리 공간 낮아짐)
- 비용적 측면, context switching 시간 빠름
- multicore의 장점을 가져갈 수 있다.
Multicore Programming
Parallelism VS Concurrency
Parallelism병렬처리: core라던지 cpu가 많은 환경
concurrency(Concurrent execution): 하나의 process나 하나의 core지만 소프트웨어적으로 동시에 수행하도록 짜는 것
parallelism의 종류
data parallelism: 데이터를 쪼갬
task parallelim:연산이나 수학적 논산을 쪼갬
Amdahl's Law
S: 순차적으로 해야하는 부분(serial protion)
1-S: 동시수행이 가능한 부분(parallel protion)
N: core의 수
모든 게 parallel protion이라면, speed up은 N배가 된다.
User Threads & Kernel Threads
User threads: 라이브러리에서 Multithread를 제공하는 것(Kernel Threads에서 할당받는다.)
Kernel Threads: 운영체제에서 Multithread를 제공하는 것(CPU에게서 할당받는다.)
User threads 와 Kernel threads의 관계(Multithreading Models)
1. many to one
- 하나의 kernel threds가 블로킹 당하면 user threads 가 모두 blocking.
- core가 여러개 있어도 결국에는 kernel threads가 하나기 때문에 진정한 의미의 병렬처리가 아니다.
2. one to one
- 코어가 여러개 있을 때 kernel threas도 많으니 concocurrency 효과가 높다
3. many to many
- 여러개의 user thread가 여러개의 kernel thread를 할당 받는다.
4. Two-level
- user thread가 정해진 kernel threads를 할당 받아야 한다.
Thread Libraries:
프로그래머에게 user thread를 제공하고 편하게 multi-thread환경을 만들 수 있는 API를 제공한다.
- (POSIC standard)Pthreads-UNIX & Linux& Mac
- Windows Mulththreaded
- JAVA Threads
'학교생활 > 운영체제' 카테고리의 다른 글
[운영체제] Ch5(1) Scheduling Criteria & Scheduling Algorithms (0) | 2022.10.13 |
---|---|
[운영체제] Ch4(2)Implicit Threading (0) | 2022.10.13 |
[운영체제] Ch3(2)InterProcess Communication(IPC) (0) | 2022.10.12 |
[운영체제] Ch3(1)Process개념과 작동 (0) | 2022.10.12 |
[운영체제] Ch2(2) linkers and loaders & OS설계와 디버깅 (0) | 2022.10.12 |