- Thread (lightweight process): CPU의 수행 단위
- thread의 구성: program counter, register set, stack space (CPU 수행 관련 정보)
 - thread끼리 공유하는 부분(=task): code section, data section, OS resources
 - heavyweight process: 하나의 thread
 - 다중 스레드로 구성되면 하나의 서버 스레드가 blocked 상태여도 다른 스레드가 실행되어 빠른 처리 가능
 - 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율과 성능 향상
- 동일한 일을 수행하는 프로세스를 여러개 실행하면 메모리 낭비가 심함
 - 스레드 생성, CPU switching이 프로세스 생성, context switching보다 오버헤드가 훨씬 적다
 
 - (다중 CPU일때) 다중 스레드 사용시 병렬성 ↑ (각각의 스레드가 서로다른 CPU에서 실행)
 
 

- Implementation of Threads
- 커널 스레드: 커널이 다중 스레드의 존재를 알며 CPU 스케줄링 하듯이 관리
 - 사용자 스레드: 커널은 다중 스레드인지 모르고, 사용자 프로세스가 라이브러리의 도움을 받아 관리
- 커널이 모르기 때문에 구현 상으로 약간의 제약이 있을 수 있음
 
 - 실시간 기능을 지원하는 스레드도 있음
 
 
출처: https://core.ewha.ac.kr/publicview/C0101020140321141759959993?vmode=f
https://core.ewha.ac.kr/publicview/C0101020140321143516139010?vmode=f
'CS > OS' 카테고리의 다른 글
| 10. CPU Scheduling 1 (0) | 2022.03.23 | 
|---|---|
| 8. Process Management 1 & 9. Process Management 2 (0) | 2022.03.14 | 
| 5. Process1 (0) | 2022.03.07 | 
| 4. System Structure & Program Execution 2 (0) | 2022.03.04 | 
| 3. System Structure & Program Execution 1 (0) | 2022.03.04 |