Thread
View all Operating System Knowledges.
스레드란, 프로세스 내에서 할당받은 실행 단위로, 하나의 프로세스에는 CPU의 core 개수만큼 할당 받을 수 있다.
같은 주소 공간의 스레드는 서로 동일한 메모리 공간을 공유하며, 따라서 동일한 리소스에 접근할 수 있다. 이를 통해 스레드간 데이터 교환이 용이해지지만, 동시에 충돌 등과 같은 문제를 해결하기 위해 동기화에 신경써야 한다.
스레드는 독립된 실행 플로우이기 때문에, 동시에 여러 스레드가 각기 다른 작업을 수행할 수 있다.
initial 스레드
프로세스가 생성됐을 때, 하나의 스레드가 기본적으로 생성되는데 이를 initial 스레드라고 한다. 멀티 스레드 시스템에서는 이를 메인 스레드라고 한다.
멀티 스레딩
하나의 프로세스 내에서 여러 스레드를 동시에 실행하는 기술을 말한다.
각 스레드는 동일한 메모리 공간(ex. Code, Data, Heap. 이때 Stack은 스레드마다 별도로 할당된다)을 공유하기 때문에, 메모리 공간과 자원의 소모가 줄어든다.
이는 프로세스간 메모리를 공유할 때와 달리, CPU 캐시를 초기화 할 필요가 없으며, MMU가 프로세스를 관리하는 등의 오버헤드를 줄일 수 있기 때문이다.
싱글 스레드인 경우, 프로세스가 process property
(ex. PID, PGID, UID, GID, Environment, Working Directory)를 가졌는데, 멀티 스레드 시스템인 경우, 프로세스와 스레드가 나눠 갖는다.