운영체제를 공부하기 위해 운영체제 아주 쉬운 세 가지 이야기 라는 책을 읽고 공부한 내용을 정리합니다.
잘못되거나 부족한 부분이 있으면 언제든 댓글로 가르침 부탁드립니다.
스레드는 프로세스의 작업 단위를 뜻한다. 한 프로세스가 한번에 한 작업만 한다면 싱글스레드, 한번에 여러 작업을 동시에 한다면 멀티스레드이다. 여기서 싱글스레드를 여러 개 운영하는 것이 아닌, 멀티스레드를 이용하는 이유는 메모리 공유로 인한 효율성 증가 이점을 얻음과 동시에 잦은 컨텍스트 스위칭으로 인한 성능 저하 문제를 해결하기 위함이다.
이 둘의 가장 큰 차이점은 공유 메모리 영역이다. 프로세스는 코드, 데이터, 힙, 스택 4가지 데이터 영역을 프로세스마다 각각 따로 가지고 있다. 하지만 스레드는 스택을 제외한 나머지 3가지 데이터 영역을 동일 프로세스 내에 있는 다른 스레드들과 공유한다.
스레드는 스택 외의 나머지 메모리를 공유하다보니, 여러 스레드가 하나의 데이터에 접근했을 때 문제가 발생한다. 따라서 실행 순서에 따라 결과가 달라지는 상황이 발생하게 된다. 이는 상호 배제(Mutual Exclusion)을 통해 해결할 것이다.(이후)