


- 전 시간까지는 프로세스에 대한 얘기를 했는데, 프로세스 안의 CPU 실행 단위를 쓰레드라고 한다(lightweight process라고 부르기도 한다).
- 같은 일을 하는 프로세스를 여러개 띄워놓고 싶다 → 여러개의 프로세스를 실행하기보다는 어차피 같은 코드를 사용하기 때문에 여러개의 쓰레드를 두고
- CPU가 코드의 어느 부분을 실행하고 있는가, 즉 프로그램 카운터만 여러 개를 두는 것이다.
- 프로세스 안의 CPU 실행 단위만 여러개 두고 있는 것을 쓰레드라고 한다.
- 각 쓰레드(CPU 실행 단위마다) 현재 레지스터에 어떤 값들을 넣고 코드의 어느 부분을 가리키고 실행되고 있는지의 정보를 갖고있으면 된다.
- 각각 다른 부분의 코드를 실행하고 있기 때문에 스택에 다른 데이터가 들어있을 것이다 → 그렇기 때문에 스택은 쓰레드 각각으로 공간을 가지고 있는 것이다.
- 프로그램 카운터, 레지스터 셋(set), 스택 공간만 쓰레드가 독립적으로 가진다.
- 코드, 데이터, 각종 운영체제 자원은 공유해서 사용한다.