반효경 교수님의 운영체제 강의를 듣고 정리하였습니다.
Thread란
- "A thread(or lightweight process) is a basic unit of CPU utilization".
- 프로세스 내에서 실행되는 여러 흐름의 단위
- 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위
- Thread의 구성
- program counter
- register set
- stack space
- Thread가 동료 thread와 공유하는 부분(=task)
- code section
- data section
- OS resources
- 전통적인 개념의 heavyweight process는 하나의 thread를 가지고 있는 task로 볼 수 있다.
(사진 출처: KOCW)
Thread의 장점
- 응답성(Responsiveness)
- 다중 스레드로 구성된 태스크 구조에서는 하나의 서버 스레드가 blocked(waiting) 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.
- 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다.
- 스레드 간 통신이 필요한 경우에도 쉽게 데이터를 주고 받을 수 있어 응답 시간이 단축된다.
- 자원 공유(Resource Sharing)
- 프로세스 내 자원들을 공유하기 때문에 시스템 자원 소모가 줄어든다.
- 경제성(Economy)
- Context Switching의 오버헤드를 줄인다.
- 프로세스의 Cntext Switching과 달리, 캐시 메모리를 초기화할 필요가 없고, Code, Data, Heap 영역을 공유하므로 Stack 영역만 처리를 하면 되기 때문이다.
- Context Switching의 오버헤드를 줄인다.
- 멀티프로세서 아키텍처에서의 이용성(Utilization of MP Architectures)
- 멀티프로세서 환경에서 스레드를 사용하면 병렬성을 높일 수 있다.
Thread의 단점
- 자원의 공유로 인한 동기화 문제
- 디버깅이 까다로워진다.
- 버그 생성될 가능성 증가
Thread의 구현
- Some are supported by kernel
- Kernel Threads (커널 스레드)
- Windows 95, 98, NT
- Solaris
- Digital UNIX, Mach
- Kernel Threads (커널 스레드)
- Others are supported by library
- User Threads (유저 레벨 스레드)
- POSIX Pthreads
- Mach C-threads
- Solaris threads
- User Threads (유저 레벨 스레드)
'Computer Science > 📺Operating System' 카테고리의 다른 글
[Operating System] CPU 스케줄링 (0) | 2021.11.14 |
---|---|
[Operating System] 프로세스 관리 (0) | 2021.10.29 |
[Operating System] 프로세스 (Process) (0) | 2021.10.08 |
[Operating System] 시스템 구조와 프로그램 실행 - 2 (0) | 2021.10.06 |
[Operating System] 시스템 구조와 프로그램 실행 - 1 (0) | 2021.10.05 |