이전 글에서 프로세스는 실행의 가장 작은 단위라는 말을 했었다. 하지만 프로세스는 여전히 덩치가 너무 컸고 이는 스레드라는 개념을 만들게 되었다. 프로세스보다 더 작은 개념으로 스레드에 대해서 알아보자~

Thread

스레드는 프로세스 내에서 실제로 작업을 수행하는 주체를 말한다. 모든 프로세스에서는 한 개 이상의 스레드가 존재하여 작업을 수행한다! 모든 작업마다 프로세스를 생성한다면 왼쪽과 같은 그림이 나타나겠지만 일련의 작업에 대해서 스레드를 생성해서 작업한다면 오른쪽과 같이 나타낼 수 있다. 오른쪽 같이 하나의 프로세스에 여러 스레드가 존재하는 것이 멀티 스레드 프로세스이다. 전자의 경우 각 작업이 모두 별개의 메모리 공간을 가져야하지만 후자의 경우 하나의 메모리 공간을 나누어 사용할 수 있다!

image

Single & Multi threaded processes

앞서 말한 메모리 공유에 대한 이야기이다. 멀티 스레드일 때 하나의 프로세스에 존재하는 경우 하나로 공유할 수 있는 영역과 개별로 존재해야하는 영역으로 나눌 수 있다.

image

이를 자세하게 살펴보자면 스레드별로 코드가 존재하고, 각 지역 변수들이 별개로 존재하기 때문에 code segment, stack 부분이 별개로 필요함을 알 수 있다.

image

thread 를 생성하기 위한 시스템 콜로 Pthread를 주로 사용한다. Pthread는 POSIX thread(portable operationg system interface) 유닉스의 표준이다. 유닉스의 종류가 너무 다양하다보니 같은 유닉스더라도 호환이 안되는 경우가 발생하기에 그것을 방지하기 위한 표준이다.

업데이트:

댓글남기기