IPC - 프로세스 간의 통신

IPC(Inter Process Communication)

IPC(Inter Process Communication)이란?

IPC란 내부 프로세스 간의 통신을 하는 것이다. 프로세스 혼자 작업을 할 수도 있지만 프로세스끼리 통신을 하여 데이터를 주고 받어 작업 속도를 높이거나 편의를 향상 시킬 수 있다. 하지만 각 프로세스는 독립적인 메모리 공간을 가지고 있기 때문에 별도의 매커니즘이 필요하며 이를 위해 커널 영역에서 IPC라는 내부 프로세스간 통신을 제공하고 프로세스들은 IPC를 이용해 통신을 하게 된다.

프로세스 통신

스레드는 메모리 공간과 자원을 공유하지만 프로세스는 fork같은 함수로 생성되면서 PC를 포함하여 메모리 공간을 복사하여 별도의 자원을 할당하기 때문에 프로세스 같은 경우는 통신할 공간이 없어 통신을 위한 별도의 공간을 만들어주어야 한다.

IPC 종류

IPC에는 기본적으로 메시지 패싱(Message Passing), 데이터 공유(Shared Memory) 두 가지 방법이 있다.

Messaging Passing (메시지 패싱)

커널이 메시지를 대신 전달해주는 방법으로 Direct Communication과 Indirect Communication방식이 있다. Direct Communication(오른쪽 그림)은 Process A가 커널에 메시지를 직접 주고 그 메시지를 커널이 Process B에게 메시지를 직접 전달하는 것이고 Indirect Communication(왼쪽 그림)은 Process A가 메시지를 메시지 큐라는 곳에 넣어두고 Prcoess B가 그 메시지큐에 가서 읽어오는 방식이다.

Message Passing같은 경우 커널이 알아서 동기화해주기 때문에 안전하고 동기화 문제가 없다는 장점이 있지만 오버헤드가 커서 성능이 떨어진다는 단점이 있다.

Shared Memory (데이터 공유)

두 프로세스 간의 공유할 수 있는 메모리를 생성 후 데이터를 교환하는 방법으로 중개자 없이 곧바로 메모리에 접근할 수 있기 때문에 성능이 좋지만 동기화 문제가 있을 수 있다.


참고: https://jhnyang.tistory.com/24

*틀린 부분이 있으면 언제든지 말씀해 주시면 공부해서 수정하겠습니다.


© 2022. All rights reserved.

Powered by 애송이