Thread, 이는 무엇일까? 이는 프로세스 내에서 실행되는 흐름의 단위를 스레드라고 한다. 또, 프로세스 내에서 실제로 작업을 싱행하는 주체 라고 한다.

이 두가지의 설명을 보앗을 때 공통점이 있다. 바로, “프로세스에 의해 실행되는 것” 이라는 공통점이다.

자, 여기서 프로세스안에 스레드가 있다는것으로 보이는데 그럼 프로세스랑 스레드는 같은것일까? 이는 좀 에매한데 이 두개의 차이점을 알아보면 위 질문에 대해서 약간의 답이 될 것 같다.

차이점

프로세스 안에는 다른 어느 누구와도 공유하지 않는 Code, Data, Heap, Stack이 존재한다. 그런데 스레드의 경우 이 Stack과 Register를 독립적으로 할당을 해주게 된다.

이 때 프로세스 하나에 여러개의 스레드가 존재하기도 하며, 위에 할당을 해준 Stack과 Register를 제외한 Code, Data, Heap은 다양한 스레드가 서로 공유한다.


스크린샷 2020-07-25 오전 10.26.07.png

스택을 스레드마다 독립적으로 할당하는 이유

PC Register를 스레드마다 독립적으로 할당하는 이유