일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- SQL
- System
- Spring Framework
- stack overflow
- OS
- webhacking.kr
- Buffer Overflow
- Shell code
- Payload
- Operating System
- Pwnable.kr
- BOF
- 해킹
- 정보보안기사
- 정보처리기사 실기
- 웹해킹
- LOB
- pwnable
- system hacking
- Spring MVC
- Spring
- webhacking
- hacking
- 워게임
- 운영체제
- 네트워크
- 정보보안기사 실기
- PWN
- wargame
- Lord of BOF
- Today
- Total
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:41Thread
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로 연결되어 있기 때문에