Thread는 한 프로세스 내에서 실행되는 동작의 단위입니다. 각 Thread는 속해있는 process의 stack 메모리를 제외한 나머지 메모리 영역을 공유할 수 있습니다. 스레드는 프로세스 내에서 독립적인 기능을 수행합니다. 즉, 독립적으로 함수를 호출함을 의미하고 이를 위해 stack 메모리가 각자 필요하다.
멀티 스레드란 하나의 프로세스가 동시에 여러개의 일을 수행할 수 있도록 해주는 것입니다. 즉, 하나의 프로세스에서 여러 작업을 병렬로 처리하기 위해 멀티 스레드를 사용합니다. 멀티 스레드에서는 한 프로세스 내에 여러 개의 스레드가 있고, 각 스레드들은 Stack 메모리를 제외한 나머지 영역(code, date, heap) 영역을 공유하게 됩니다.
스레드는 프로세스 내에서 독립적인 기능을 수행합니다. 각 스레드가 독립적인 기능을 수행한다는 것은 독립적으로 함수를 호출함을 의미합니다.
스레드가 함수를 호출하기 위해서는 인자 전달, return address저장, 함수 내 지역변수 저장 등을 위한 독립적인 stack memory 공간을 필요로 합니다. 결과적으로 스레드는 프로세스로부터 stack memory 공간을 필요로 합니다. 결과적으로 스레드는 프로세스로부터 stack memory영역은 독립적으로 할당받고 Code, Data, Heap 영역은 공유하는 형태를 갖게 됩니다.
또한 멀티 스레드에서는 각각의 스레드마다 PC register를 가지고 있어야 합니다. 그 이유는 한 프로세스 내에서도 스레드끼리 context switch가 일어나게 되는데, PC register에 code address가 저장되어 있어야 실행을 할 수 있기 때문입니다.
스택 영역은 함수 호출 시 전달되는 인자, 함수의 return address, 함수 내 지역변수 등을 저장하기 위한 메모리 영역이다. 스레드가 프로세스 내에서 독립적인 기능을 실행한다는 것은 독립적으로 함수를 호출함을 의미한다. 따라서 스레드가 독립적인 동작을 실행하기 위해서는 각 스레드의 stack memory 영역이 독립적이여야 한다.
프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고, 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위입니다.
즉 프로세스는 실행파일이 메모리에 적재되어 CPU를 할당받아 실행되는 것이고, 스레드는 한 프로세스 내에서 실행되는 동작단위 입니다.
프로세스는 메모리 공간에 code, data, heap, stack 영역이 있는데, 스레드는 프로세스 내에서 stack영역을 제외한 code, date heap영역을 공유합니다.
Multi Process 와 Multi Thread (0) | 2024.03.06 |
---|---|
Multi process (1) | 2024.03.06 |
Process (0) | 2024.03.06 |