📌 Thread
프로세스 내에서 실제로 작업을 수행하는 주체이다.
- 프로세스가 하나 주어지면 주소공간이 만들어진다. 프로세스를 관리하기위해 운영체제 내부에 프로세스의 정보를 저장하는 PCB가 생성된다.
- 프로세스는 하나만 띄어놓고, 현재 cpu가 어느부분을 시행하고 있는가를 알기위해 CPU수행 정보를 여러개 두는 경우를 Thread라고 한다.
- Thread의 구성
- registers set
- process counter
- stack space
- Thread가 다른 thread와 공유하는 부분
✌ Thread의 장점
- 응답성 (Responsiveness)
-
하나의 프로세스 안에 thread가 여러 개라면 blocked상태일때 다른 thread가 실행되어 빠른 처리가 가능하다.
:) HTML파일의 이미지파일을 서버에 요청하면 해당 스레드는 blocked되고, 이때 바로 다른 (text를 보여주는 등등) 스레드를 수행하여 오래 걸리는 요청을 기다리지 않고, 먼저 display한다.
- 자원 공유 (Resource Sharing)
- 같은 일을 하는 프로세스를 별도로 만든다면 메모리 공간을 낭비하게 되니 여러 개의 thread를 놓는다. :) 웹 브라우저를 여러 개 열거나 한글 파일을 여러 개 띄어 놓는 경우
- 경제성 (Economy)
- 프로세스를 만들어 메모리를 생성하는 것보다 프로세스 안에 스레드를 생성하는 것이 더 경제적이다.
- Utilization of MP Architectures
- 각각의 스레드가 다른 cpu에서 병렬적으로 일 할 수 있다.
📍 implements Thread
- Kernel Threads : Kernel에 의해 지원되어 kernel이 아는 상태
- User Threads : library에 의해 지원되어 사용자 수준에서 아는 상태