운영체제 OS

[운영체제/OS] Threads & Concurrency

멀티스레드 자료구조

멀티스레드의 장점: 병렬적으로 여러 스레드를 한번에 동시에 동작할 수 있다. 

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배의 속도증가를 발생한다.