학교생활/운영체제

[운영체제] Ch4(1)Multicore와 Multithread

sh1256 2022. 10. 13. 15:57
728x90

개요

하나의 app이라도 여러 task를 수행하기 위해 최근 프로그램들은 모두 multithread를 이용한다. 

multi-process보다 시간도, 자원도, 비용도 더 적게 드는 multi-thread

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배가 된다.

x축: core의 수 / y축: speedup


User Threads & Kernel Threads

User threads: 라이브러리에서 Multithread를 제공하는 것(Kernel Threads에서 할당받는다.)

Kernel Threads: 운영체제에서 Multithread를 제공하는 것(CPU에게서 할당받는다.)

 

User threads 와 Kernel threads의 관계(Multithreading Models)

왼쪽 위부터, 1, 2, 3, 4

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