Thread
- 프로세스의 특정한 수행 경로
- 프로세스가 할당 받은 자원을 이용하는 실행의 단위
Note:
- 프로그램(프로세스)의 실행 단위 이며 하나의 프로세스에 여러개의 쓰레드를 구성 가능
- 하나의 프로세슬 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유
- 프로세스와 같이 실행, 준비, 대기 등의 샐행 상태를 갖는다.
- 실행상태가 변할 때 쓰레드 문맥교환을 수행
- 쓰레드 별로 자신만에 stack 과 레지스터를 가진다.
- 한순간에 하나의 쓰레드 만 발생
특징
- 프로세스 내에 각각 stack 만 따로 할당을 받고 code,data,heap 영역을 공유
- 한 프로세스 내에서 동작되는 여러 실행의 흐름, 프로세스 내에 쓰레드 끼리 공유 하면서 실행
- 같은 프로세스 안에 있는 여러 쓰레드들은 같은 공간의 heap 메모리를 공유, 프로세스는 다른 프로세의 메모리에 접근 불가
- 각각의 쓰레드는 별도의 레지스터와 스택을 갖고 있지만, heap 메모리는 서로 읽고 상용이 가능
- 한 쓰레드가 프로세스 자원을 변경하면, 다른 쓰레드 또한 그 변경 결과를 즉시 볼 수 있다.
장점
- 프로세스 보다 생성 및 종료 시간, 쓰레드 간의 전환 시간이 짧다.
- 프로세스의 메모리, 자원등을 공유하므로 커널의 도움없이 상호 간의 통신이 가능하다.
프로세스 vs 쓰레드
프로세스는 운영체제로부터 자원을 할당 받는 작업의 단위
쓰레드는 프로세쓰가 할당 받은 자원을 이용하는 실행 단위