1. What is Thread?
Thread in Operating System - GeeksforGeeks
프로그램에서 Thread 란, 분리된 실행 경로를 뜻한다. Thread 는 OS 가 다른 Thread 들과 함께 동시에 실행 가능하고, 그 순서를 스케줄링 할 수 있는 경량 프로세스이다. OS 는 Thread 를 만들고 관리하며, Thread 들은 해당 Thread 를 생성한 프로그램의 메모리와 리소스를 공유한다. 이와 같은 특성은 여러 Thread 가 하나의 프로그램에서 서로 협력하여 효율적으로 작업할 수 있도록 한다.
2. Why Do We Need Thread?
- 병렬적으로 실행되는 Thread 들은 애플리케이션의 성능을 향상할 수 있다. 각각의 Thread 들은 별도의 CPU state 와 stack 을 갖지만, 프로세스의 주소 공간을 공유한다.
- Thread 들은 데이터를 공유하기 때문에 IPC(Interprocess Communication) 이 불필요하다. 프로세스와 동일하게, Thread 또한 ready, executing, blocked 등과 같은 상태를 갖는다.
- Thread 의 실행 우선순위는 프로세스에서와 같이 부여되고, 가장 우선순위가 높은 Thread 가 가장 먼저 스케줄된다.
- 프로세스의 PCB(Process Control Block) 과 같이 각각의 Thread 들은 별도의 TCB(Thread Control Block) 을 갖는데, 이 또한 동일하게 문맥 교환이 이루어지고, 문맥 교환시 레지스터의 데이터는 TCB 에 저장되게 된다. Thread 들은 동일한 주소 공간과 리소스를 공유하기 때문에, Thread 의 다양한 동작에 대한 동기화가 필요하다.
3. Why Multi-Threading?