Thread
- 프로세스 내의 실행 단위
- Lightweight process라고도 부름
프로세스 내부에서
등은 공유하고,
CPU 수행을 위한
은 각 스레드가 독립적으로 가지고 있다.
스레드의 장점
- 프로세스를 여러 개 할당하는 경우 Code, Data, Stack을 별도로 할당해야 하므로 메모리 낭비가 심할 수 있다.
- 하나의 서버 스레드가 blocked(waiting)인 상태에서도 동일한 태스크 내의 다른 스레드가 실행(running)되어 빠른 처리를 할 수 있다.
- 동일한 일을 수행하는 다중 스레드가 협력하여 높은 처리율(throughput)과 성능 향상을 얻을 수 있다.
- 스레드를 사용하면 병렬성을 높일 수 있다.
스레드의 장점 정리
- Responsiveness
- 하나의 thread가 blocked된 경우 다른 thread는 지속적으로 동작할 수 있다.
- Resource Sharing
- Code, Data, 각종 자원을 공유하여 효율적
- Economy
- 생성, context switching으로 인한 overhead가 process에 비해 현저히 적다.(Solaris의 경우 위 두 가지 overhead가 각각 30배, 5배 적다.)
- Utilization of MP Architecture
- 각 스레드가 멀티프로세서 환경에서 병렬적으로 동작 가능
Kernel의 지원을 받으면 Kernel Thread
Library의 지원을 받으면 User Thread