티스토리 뷰

운영체제/이론

(19) Thread

geonwoopaeng@gmail.com 2020. 9. 19. 21:50

### Thread ###

: 프로세스가 할당받은 자원을 이용하는 실행의 단위

: thread ID, PC(program counter), register set, stack으로 구성된다.

: 여러 기능을 담당하는 module 들로 세밀하게 분할 할 수 있는 단위

=> process(프로그램 하나를 돌리는 것)에서 여러 thread가 공통 code/ data/ os resource(open files and signal)을 공유합니다.

<Threading type>

출처: Operating System Concepts 10th Ed (John Wiley & Sons, Inc. 2018)

 

 

1. Singlethreading

: traditional processes에서 사용된다.

: request가 도착 할 때마다 새로운 process를 생성한다.

2. Multithreading

: 하나의 process에서 운용하는 둘 이상의 thread가 동시에 작업을 수행하는 것

: 새로운 request가 발생 했을 때 thread가 생성된다.

: 메모리 공간과 시스템 자원 소모가 줄어든다.

 

 

 

 

<Benefits in Multithreading>

1. Responsiveness(응답성)

: multithreading을 사용하면 program 일부가 차단되거나 length operation 수행하더라도 프로그램을 계속 사용할 수 있다.(여러 thread를 통해 reply를 잘 보내 줄 수 있다.)

2. Resource sharing

: 서로 다른 종류의 작업을 수행하는 thread가 process 내에서 동일 memory공간에 있는 data, code를 접근할 수 있어 추가적인 작업 없이 수행 할 수 있다.

=> multithreading은 공통 process의 자원을 내재적으로 공유합니다.

3. Economy

: thread를 생성될 때 마다 처리해야 되는 절차가 복잡하지 않다

: thread 전환은 process context 전환보다 overhead가 낮습니다.

4. Scalability(확장성)

: multithreading에서 thread들은 process에서 분산 할당 되서 병렬로 처리가 가능하다.

=> multithreading은 multicore(multiprocessor) architectures에서 병렬 계산을 이용 할 수 있습니다.

 

 

<Multicore Programming>

- multithreaded(multicore) programming

: 더 좋은 process성능을 내기 위한 계발 방법론

- Concurrency(병행 처리)

: single/multiprocessor에서 구현 할 수 있습니다.

: 시간 공유 기반 multithread 처리

 

출처: Operating System Concepts 10th Ed (John Wiley & Sons, Inc. 2018)

 

 

 

-Parallelism(병렬 처리)

: multiprocessor에서만 구현할 수 있습니다.

:System은 둘 이상의 thread를 동시에 수행 할 수 있습니다.

(모든 thread를 할 수는 없다 => parallelism + concurrency)

 

출처: Operating System Concepts 10th Ed (John Wiley & Sons, Inc. 2018)

 

 

 

<Parallelism과 관련 된 법칙 >

### Amdahl's Law ###

출처: Operating System Concepts 10th Ed (John Wiley & Sons, Inc. 2018)

 

: 어떤 정교한 parallelism 알고리즘을 만든다 하더라도 이 공식을 넘기는 값은 발생 할 수 없다.

: core를 증가해도 성능향상은 process에 따라 한계가 있다.

: 통신 overhead는 고려하지 않습니다.(이상적인 상황)

: task/data 분할 및 통합에 대한 overhead를 고려하지 않습니다.(이상적인 상황)

 

 

<Type of Paralllelism>

출처: Operating System Concepts 10th Ed (John Wiley & Sons, Inc. 2018)

 

1. Data parallelism

: 분산해야 되는 대상이 data를 대상으로 하는 것

: multiple cores에 걸친 data 배포

: 각 데이터에서 동일 한 task(thread)

2. Task parallelism

: data parallelism과 반대이며 구현 하기가 어렵다.

: 분산해야 되는 대상이 task(thread)를 대상으로 하는 것

: multiple cores에 걸친 task(thread) 배포

: 각 task(thread)은 동일/독립적 인 data에서 작동합니다.

3. Hybrid parallelism

: data parallelism + task parallelism

<User / Kernel Threads>

: user thread 랑 kernel thread 가 서로 연계하며 작업수행

=> 어떤 형태로 관계를 맺는냐에 따라 multithread의 형태가 달라진다.

1. User thread

: user space에서 존재하는 thread

: kernel 개입 없이 사용자 수준 thread librart로 구현됩니다.

(ex. Window threads, Java threads)

2. Kernel threads

: system call하고도 직접적으로 연결된다.

 

출처: Operating System Concepts 10th Ed (John Wiley & Sons, Inc. 2018)

반응형

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

(21) CPU scheduling  (0) 2020.09.19
(20) Multithreading Models  (0) 2020.09.19
(18) Process Management(Process termination)  (0) 2020.09.17
(17) Process Management(Process creation)  (0) 2020.09.17
(16) Context Switching  (0) 2020.09.17
공지사항
최근에 올라온 글