CS/OS

멀티프로세싱, 멀티스레딩

KDGdev 2023. 3. 7. 21:01

멀티프로세싱, 멀티스레딩


 

이번 포스팅에선 멀티프로세싱, 멀티스레딩을 설명해 보겠습니다.

 

 

멀티프로세싱

우리가 알고 있는 일반적인 개념은 하나의 프로그램이 실행되면 하나의 프로세스가 된다는 것입니다.

 

멀티프로세싱이란 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 마찬가지로 여러 개의 프로세서가 하나의 작업을 처리하는 것입니다.

 

프로세서란 CPU를 의미하며 현재 우리가 사용하는 PC는 대부분 멀티코어로 여러 개의 프로세스를 가지고 있습니다.

 

 

멀티프로세싱에서 중요한 점은 하나의 프로그램이 여러개의 프로세스로 나누어진다는 것입니다.

 

나누어졌기 때문에 하나 이상의 일을 병렬로 처리할 수 있으며 프로세스 중 일부에 문제가 발생해도 다른 프로세스에 영향이 없어 신뢰성이 높은 강점이 있습니다.

 

 

하지만 각 프로세스들은 독립적으로 동작해 자원이 서로 다르게 할당된다는 문제가 있습니다.

 

이는 IPC란 프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 메커니즘을 통해 데이터를 공유해서 해결합니다.

 

그렇지만 메모리가 완전히 공유되는 스레드 보다는 속도가 떨어집니다.

 

 

아래는 멀티프로세스의 예시입니다. 웹 브라우저는 멀티프로세스의 구조를 가집니다.

 

멀티스레딩

먼저 스레드부터 설명하겠습니다.

 

스레드란 프로세스의 실행 가능한 가장 작은 단위입니다.

 

코드, 데이터, 힙 영역을 각각 생성하는 프로세스와는 달리 스레드는 코드, 데이터, 힙 영역은 스레드끼리 서로 공유하고 스택 영역은 각각 생성합니다.

 

 

멀티스레딩이란 프로세스 내 작업을 여러 개의 스레드, 멀티스레드로 처리하는 기법입니다.

 

스레드끼리 서로 자원을 공유하기 때문에 효율성이 높지만 한 스레드에 문제가 생기면 다른 스레드에도 영향을 끼쳐 프로세스에 영향을 줄 수 있습니다.

 

 

※ 잘못된 정보, 혹은 다른 의견이 있다면 댓글로 말해주세요. 감사합니다.