DongDD's IT

Thread - 정의, Multithread, Kernel thread, User thread, thread pool, LWP 본문

운영체제

Thread - 정의, Multithread, Kernel thread, User thread, thread pool, LWP

DongDD 2017. 10. 20. 15:41

Thread


Thread


Definition : 프로세스 내에서 실행되는 작업의 단위

-> 일반적으로 프로세스는 하나의 thread만 가짐


Multi thread


Definition : 하나의 thread를 갖는 프로세스가 아니고 둘 이상의 thread를 가지는 프로세스를 의미


- code, data, files을 공유하고 각각의 thread는 stack과 register를 가짐


Benefit 

1) Responsiveness

- 다른 thread가 block되어 있는 동안 다른 thread들은 계속해서 수행될 수 있음

2) Resource Sharing

- thread들은 binary code,  data, 프로세스의 resource를 공유함

3) Economy

- 프로세스를 새로 생성하는 것보다 thread를 생성하는 것이 더 효율적임

4) Multi-processor에서의 Utilization

- 여러 개의 CPU들이 thread들을 병렬적으로 수행할 수 있게 해줌


Kernel thread, User thread


1) Kernel thread

- kernel에 의해 내부에서 생성되고 제거되는 thread

- 프로세스에 연관될 필요는 없음

- OS에 의해 관리됨

2) User thread

- kernel이 제공하는 library를 통해 user가 생성할 수 있음

- kernel이 관여하지는 않음


Thread Model(User thread : Kernel thread)


1) Many-to-one model

- 빠르고 overhead가 작다는 장점을 가짐

- 하나의 프로세스가 block될 경우 모든 user thread가 block 상태가 됨

- 멀티프로세서의 병렬실행을 할 수 없음


2) One-to-one model


- kernel thread 하나에 user thread 하나가 연결된 형태

- multi-processor에 의해 병렬적으로 수행될 수 있음

- kernel thread 생성이 많아져 자원이 많이 소요됨

- Linux, Window에서 이런 구조를 사용함


3) Many-to-many model

- kernel thread의 갯수 이상의 user thread가 동시에 연결되어 있음

- 장점    

-> 필요에 따라 많은 thread 생성 가능

-> Multi-processor에 의해 병렬적인 수행 가능

-> block시 다른 thread를 선택해 수행 가능


4) Two-level model

- Many-to-many model + One-to-one model 형태로 되어 있음


Thread pool


Definition : 제한되지 않은 thread 생성은 자원 소모가 크기 때문에 thread pool을 통해 thread를 관리하기 위해 사용


Benefit 

1) 새로운 thread를 생성하는 것보다 thread pool에 저장된 thread를 가져와 쓰는 것이 더 빠름

2) Pool의 size에 맞게 thread 생성을 제한할 수 있음


LWP(Light Weight Process)


Definition : PCB를 가지는 경량화된 Process  

-> OS에 따라 thread와 동일시되기도 함 

- kernel thread에 연결되어 user thread를 연결하는 형태로 되어 있음



- 위와 같은 형태로 LWP가 kernel thread와 user thread를 연결함

- 이와 같은 경우를 사용하면 각 thread는 다른 CPU를 할당받을 수 있음

-> kernel thread와 LWP가 1:1로 연결되어 있기 때문에


Comments