CS/운영체제

CH4) Threads

코딩하는 포메라니안 2021. 9. 12. 14:15

1. Thread

1. Thread의 개념

- 실행의 가장 작은 단위

- stack과 register는 분리해서 가짐 : thread마다 독립적으로 실행 흐름을 갖기 위해서

- 메모리는 공유하고 있어서 process간 통신이 많은 경우 유리한 구조

 

 

 

2. Thread를 사용하는 이유

1) 병렬성을 높일 때 효율적

- process 생성은 memory to memory copy라서 thread 생성이 더 빠르고, 가벼워서 많이 생성 가능

- 처리 가능한 동시 접속자 수 증가

2) 자원을 효율적으로 사용 : thread는 process의 메모리 안에서 해결

3) IPC를 사용하지 않고 data 공유 가능

 

 

 

2. Multicore Programming

1. 개념

- core 1개에 thread 1개 mapping 가능 => 병렬성 없음

- 싱글 코어 CPU에서 멀티스레드로하면 성능에 큰 차이가 없다. => multicore로

 

2. 문제점

1) 어떤 부분을 병렬화할 수 있는지 잘 파악해야 함

2) 복잡한 부분과 간단한 부분을 동시에 실행하면 한쪽이 놀기 때문에 규모를 비슷하게 나눈다.

3) 자원을 잘 분배해주어야 한다. 프로그램 내용에 비해 많이 받은 쪽이 빨리 끝내고 논다.

4) Data dependency :  한 thread의 결과값이 다음 thread에 영향을 주면 기다려야 한다.

5) 병렬적으로 수행되기 때문에 Test & Debug가 어렵다.

 

 

 

3. Concurrency VS Parallelism

1. Concurrency (동시성)

- 여러 일을 번갈아 가면서 수행 => 시간을 두고 보면 모든 일이 진전된 것처럼 보임

 

2. Parallelism

- 동시에 task를 수행할 수 있는 능력

 

+) Hyper - threading : CPU가 더 많은 것처럼 속인다. 하나의 thread가 CPU를 안 쓰는 시간이 있으니까 다른 곳에 쉬고 있는 CPU를 사용

 

 

 

4. Multithreading Model

 

1. User-level thread

1) 개념

- thread의 상태 정보(TCB)가 user-level process 메모리 영역에 저장됨

- thread 관련 함수들(생성, 삭제, thread scheduling)이 library형태로 프로그램 내에 존재 (OS와 관련 X)

 

2) 장점

- 간단한 library 함수(systemcall X)를 사용해서 빠르고 가볍다.

 

3) 단점

- kernel이 thread에 대한 정보가 없으니까 맞춰서 scheduling을 하지 못한다. (=scheduling 대상은 process)

- 한 process 내에 thread 중 하나가 disk I/O가 필요하면 다 같이 wait queue로 간다.

 

 

2. Kernel-level thread

1) 개념

- TCB와 함수가 kernel에 존재한다.

- scheduling의 대상 = thread

 

2) 장점

- 하나의 thread가 block 되면 다른 thread에게 줄 수 있다.

 

3) 단점

- 생성할 때 시간이 많이 걸림

  • process에서 thread 생성할 때 context switching 발생 : system call => kernel mode로 => user mode로
  • TCB에 담을 정보도 커짐 : 어느 process의 thread인지에 대한 정보 필요

 

 

 

5. Thread Pool

 

 

- 요청이 오면 처리하기 위한 thread들의 모음

- request가 오면 thread pool에서 하나를 꺼내서 해당 요청을 수행하도록 한다.

- Dispatcher(request queue) : 여유 있는 thread에게 request를 연결시켜준다.

'CS > 운영체제' 카테고리의 다른 글

CH3) Process  (0) 2021.09.05
CH2) Operating System Structure  (0) 2021.09.01
CH1) Introduction  (0) 2021.08.31