Thread와 Multi thread

OH JU HYEON·2022년 7월 12일
1

CS

목록 보기
5/11
post-thumbnail

Thread와 Multi Thread

시작

쓰레드와 멀티 쓰레드는 프로세스와 멀티 프로세스와 비교하기 좋다. 일단, 비교를 하기 전에 쓰레드와 멀티 쓰레드가 무엇인지부터 알아봐야 한다.

프로세스는 이 글을, 멀티 프로세스는 이 글을 참고하면 된다.

Thread

쓰레드는 한 프로세스 내에서 실행되는 기능의 단위이다. 이 쓰레드는 각각 독립적인 기능을 수행하게 된다.

쓰레드는 독립적인 메모리와 Program Counter register가 필요하다.

쓰레드가 독립적인 스택 메모리 영역이 필요한 이유는 다음과 같다.

스택 영역은 함수 호출 시 전달되는 인자를 저장하기 위한 메모리 영역인데 쓰레드가 독립적인 기능을 수행한다는 것은 독립적인 함수를 호출한다는 것과 같은 말이다. 때문에 각 쓰레드가 독립적인 기능을 수행하기 위해서는 쓰레드마다 스택 메모리 영역이 독립적이어야 한다.

Stack memory

쓰레드가 함수를 호출하기 위해 인자 전달, Resturn Address 저장, 함수 내 지역 변수 저장 등 독립적인 스택 메모리 공간을 필요로 한다.

Program Counter Register

멀티 쓰레드에서는 각 쓰레드마다 PC register를 가지고 있어야 한다.

왜냐하면 프로세스 내에서도 쓰레드끼리 Context switch가 일어나게 되는데 PC register에 Code Address가 저장되어 있어야 실행을 할 수 있기 때문이다.

Multi Thread

멀티 쓰레드는 한 프로세스 안에 여러 쓰레드가 있는 것이다. 이때, 각 쓰레드들은 프로세스의 스택 메모리를 제외한 나머지 메모리 영역을 공유할 수 있다.

멀티 쓰레드는 하나의 프로세스가 여러 일을 수행할 수 있게 해준다. 다시 말해서 하나의 프로세스에서 각 쓰레드가 서로 다른 작업을 하면서 여러 작업을 병렬로 처리할 수 있게 된다.

profile
읽기만 해도 이해가 되는 글을 쓰기 위해 노력합니다.

0개의 댓글