Thread
Task: A process, a thread activity, or, generally, a unit of computation on a computer.
Thread: A process control structure that is an execution location. A process with a single thread executes only one task at a time, while a multi- threaded process can execute a task per thread.
프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위.
Benefits
- Responsiveness: (kernel thread) 스레드가 CPU 실행 단위가 되고 상태가 스레드마다 관리되므로 프로세스 전체 작업이 대기하는 상황을 방지할 수 있다. (user thread) 한 프로세스의 작업들이 각각 스레드로 분리되어 동시 실행되므로 반응성이 좋아진다.
- Resource Sharing: shared memory나 message passing 같은 IPC 없이 한 프로세스 내의 자원(파일, 장치)을 공유해서 사용한다. (메모리 영역 중 code, data, files는 공유)
- Economy: 프로세스보다 생성이 가볍다. address space를 새로 할당받지 않는다. 메모리에 같은 코드가 중복 저장되는 상황을 막을 수 있다. PCB보다 용량이 작은 TCB를 사용하므로 context switching overhead가 감소한다.
- Scalability: (kernel thread) multicore architecture에서 실행되기 유리하다. CPU 실행단위가 프로세스에서 스레드로 분리되므로, 한 프로세스 내의 작업들이 동시에 여러 코어나 hardware thread에서 실행될 수 있다.
TCB & Thread Context Switching
Context Switching 이란?
2) TCB란?
하나의 Thread를 관리하는데 필요한 정보를 담고 있는 구조체이다. 프로세스의 상태를 관리하는 PCB보다 적은 양의 정보가 담겨있다. thread사이의 context switching & process 사이의 context switching을 할 때 CPU scheduling을 하는 최소단위이다. 다음과 같은 정보를 포함한다.
- Thread Identifier: 쓰레드를 구분하는 유일한 식별자
- Stack pointer: 쓰테드 별로 고유한 Stack의 pointer
- Program counter: 현재 instruction의 주소
- 쓰레드의 상태 (running, ready, waiting, start, done)
- Thread's register values
- 쓰레드가 소속된 processor의 PCB주소