- 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 |