728x90
반응형
Threads
- 프로세스 작업의 흐름
- Single Thread vs Multi Thread
- single - 한번에 하나의 작업만 수행
- multi - 동시에 여러 작업을 수행
- Why we use multi-thread? → 두 프로세서가 하나의 데이터를 공유하기 위해선 메세지 패싱 or 공유 메모리 or 공유 파이프 사용이 필요하다. 이는 효율도 떨어지고, 구현 및 관리도 번거롭다. → Context switch가 계속 일어나면 성능저하가 발생된다. Thread 전환은 비교적 속도가 더 빠르다.
Multithreaded Server Architecture & Multicore Programming
- 서버나 클라이언트 사이도 멀티쓰레드로 구현한다. 클라이언트가 서버에게 요청을 보내면 서버는 새로운 쓰레드를 생성해 요청을 수행한다. 이는 프로세서를 생성하는것보다 쓰레드를 생성하는 것이 더 빠르기 때문이다.
- 또한 멀티 코어 , 멀티 프로세서 시스템을 구현할때 동시성(Concurrency)와 병렬성(Parallelism)을 알아야 한다. 동시성 (Concurrency) : 동시에 실행되는 것처럼 보이게 하는 방식 병렬성 (Parallelism) : 쓰레드를 동시에 수행하는 방식( 여러개의 코어들이)
Multithreading Models
-
유저 쓰레드와 커널 쓰레드 간의 관계를 설계하는 방법이다.
-
Many to One Model
-하나의 커널 쓰레드에 여러개의 유저 쓰레드 연결 -한번에 하나의 유저 쓰레드만 커널에 접근이 가능하다.(⇒ 멀티코어 시스템에서도 병렬적인 수행이 불가능)
-
One to One Model
-하나의 유저 쓰레드에 하나의 커널 쓰레드가 대응하는 모델. 동시성을 높여주고, 멀티 프로세서 시스템에서 동시에 여러 쓰레드를 수행할 수 있게 해준다. 커널 스레드를 많이 생성해야 해서 오버헤드가 커지고 성능 저하가 발생할 수 있다.
-
Many to Many Model
-
여러 유저 쓰레드에 더 적거나 같은 수의 커널 쓰레드를 대응시키는 모델.
-
Two-level Model
-
특정 유저 쓰레드를 위한 커널 쓰레드를 따로 제공. 점유율이 높아야 하는 유저 쓰레드를 더 빠르게 처리해줄 수 있다.
Thread Pools
- 스레드 요청→ 새로운 쓰레드 생성 → 수행 →삭제 ⇒ 반복시 성능저하 때문에 미리 Pools에 여러개의 쓰레드를 만들어두고 요청 오면 풀에서 할당해주는 방법
Keyword Reviews
Threads? /
Multithreaded Server/
Multicore Programming/
Multithreading Models/
Thread Pools
출처 : parksb.github.io/article/8.html
반응형
'Computer Science > OS' 카테고리의 다른 글
Python Programming 요약 (0) | 2022.06.09 |
---|---|
직무면접을 위한 공룡책 OS ch.3 (0) | 2020.10.29 |
직무면접을 위한 공룡책 OS ch.1 (0) | 2020.10.28 |