멀티스레드 자료구조
멀티스레드의 장점: 병렬적으로 여러 스레드를 한번에 동시에 동작할 수 있다.
Responsiveness
Resource Sharing: 자원 공유 비용 감소
Economy: 스레드 생성이 프로세스 생성보다 비용 감소. 스레드 스위칭 오버헤드가 컨텍스트 스위칭보다 낮음.
Scalability: 프로세스는 멀티프로세서 자료구조의 이점을 받는다.
Multicore (Multiprocessor) Programming
개발자가 multicore나 multiprocessor 시스템을 구현할 때는
Task dividing activities
Load balancing
Data splitting
Minimizing data dependency
Testing and debugging
Parallelism(병렬성)
-Data parallelism: 같은 data를 각 같은 operation으로 멀티코어를 통해 나누는 것
-Task parallelism: core끼리 thread를 분배해, 각 thread는 각자 다른 operation을 하는 것
Concurrency(동시성, 병행성)
하나의 코어가 여러 작업을 하는 것.
Amdahl's Law(암달의 법칙)
코어가 추가될 때, seqential 부분은 성능 증가에 불균형한 영향을 준다.
seqential과 parallel 구현 프로그램을 모두 고려해야한다.
S = seqential 동작 부분
N 프로세스 코어
speedup <= 1 / (S + (1-S)/N))
만약 75% 병렬, 25% 순차면, 1->2 코어 증가는 1.6배의 속도증가를 발생한다.
'운영체제 OS' 카테고리의 다른 글
[운영체제/OS] User 스레드와 Kernel 스레드, Implicit Threading (0) | 2020.12.08 |
---|---|
[운영체제/OS] User 스레드와 Kernel 스레드, Implicit Threading (0) | 2020.12.08 |
[운영체제/OS] Threads & Synchronization 스레드&동기화_Mutex Lock, Semaphore (0) | 2020.12.05 |
[운영체제/OS] Frames Allocation Algorithm, Kernel Memory Allocation (0) | 2020.12.05 |
[운영체제/OS] Copy-on-Write와 Page Replacement (0) | 2020.12.05 |