1. 쓰레드 Thread란
- A thread (or lightweight process) is a basic unit of CPU utilization"
- 쓰레드(가벼운 프로세스)는 CPU 사용의 기본 단위이다.
- 하나의 프로세스(task)에 여러 개의 쓰레드가 작동할 수 있다.
- 전통적인 개념의 heavyweight process는 하나의 프로세스(task)에 하나의 thread만 가지고 있다.
- 다중 스레드로 구성된 태스크에서 하나의 스레드가 blocked 상태라 하더라도 다른 스레드가 running 하여 빠른 처리를 할 수 있다.
- 다중 스레드가 동일한 업무를 협력하여 처리하여 성능 향상을 할 수 있다.
- 쓰레드의 메모리 구성
- 여러 개의 쓰레드는 하나의 프로세서에서 작동한다. code, data 등 하나의 프로세서의 자원을 여러 개의 쓰레드가 공유한다. 하지만 cpu의 점유와 관련한 PCB의 Program counter와 register 영역에, 쓰레드마다 각각 메모리를 점유하고 있다.
- 해당 프로세스의 주소 공간 중 stack 영역에 쓰레드는 쓰레드마다 각각의 메모리를 점유하고 있다.
- PCB와 stack의 분리를 통해, 스레드는 cpu를 점유할 수 있고, cpu을 빼앗기더라도 스레드 문맥교환을 통해 작업을 계속 유지할 수 있다.
- 쓰레드의 장점
- 응답성 Responsiveness : 하나의 쓰레드가 blocked 되어도 다른 쓰레드가 작동 가능.
- 자원의 공유 Resource Sharing : 여러 개의 쓰레드가 하나의 프로세스의 자원을 공유함.
- 경제성 Economy : 여러 개의 프로세서를 생성하고 Context Swich를 하는 것보다 쓰레드를 여러 개를 가지는 것이 효율적임.
- 멀티 프로세서 cpu에서의 장점 : 멀티 프로세서 cpu의 경우 각각의 cpu를 각각의 쓰레드가 병렬적으로 사용하여 자원을 효과적으로 사용.
- 쓰레드의 구축 방식
- 커널이 쓰레드를 통제 Kernel Threads
- 라이브러리를 통해 쓰레드를 통제 User Threads
출처 : http://www.kocw.net/home/search/kemView.do?kemId=1046323
이화여대 반효경 교수의 영상강의를 주요자료로 하여 운영체제를 학습하고 정리하고 있습니다.