하나의 컴퓨터 안에서 실행 중인 서로 다른 프로세스 간에 발생하는 통신
프로세스는 독립적인 주소 공간을 가지기 때문에 프로세스가 다른 프로세스의 주소 공간을 참조할 수 없다. 따라서 프로세스 간 협력하려면 운영체제가 제공하는 협력 메커니즘인 IPC가 필요하다.
IPC는 서로 다른 프로세스 간 통신하므로 동기화를 보장해주어야 한다. 공유 데이터를 서로 다른 두 프로세스가 사용하면 데이터의 불일치 문제가 발생할 수 있기 때문이다.
대표적인 방식으로 메시지 전달(Message Passing) 방식과 공유메모리(Shared Memory) 방식이 있다. 이 두 방식의 차이는 프로세스 사이에 공유 데이터(Shared Data)를 사용하는가, 그렇지 않은가에 있다.
무엇인가?
: 프로세스 간에 공유 데이터를 일절 사용하지 않고 메시지를 주고받으면서 통신하는 방식이다.
종류는?
: 메시지의 전송 대상이 다른 프로세스인지 메일박스라는 일종의 저장공간이지에 따라 직접통신과 간접통신으로 나뉜다. 두 방식의 차이는 연산의 인터페이스 차이일 뿐 구현은 커널의 중재에 의해 거의 동일하다.
통신하려는 프로세스의 이름을 명시적으로 표시한다. 두 프로세스 사이에 링크가 생성되어 할당된다.
메시지를 메일박스(Mail Box) 또는 포트로부터 전달받는다. 각 메일박스는 고유의 ID가 있으며 메일박스를 공유하는 프로세스들만 서로 통신할 수 있다.
프로세스들이 주소 공간의 일부를 공유한다. 운영체제는 공유메모리를 사용하는 시스템콜을 지원하여 서로 다른 프로세스들이 그들의 주소 공간 중 일부를 공유할 수 있도록 한다.
주고 공간이 물리적 메모리에 매핑될 때 동일한 물리적 메모리 주소로 매핑된다.
공유 메모리 처럼 열린 파일을 메모리에 매핑시켜서 공유한다. 주로 파일로 대용량 데이터를 공유할 때 사용한다.
네트워크 소켓 통신을 통해 데이터를 공유한다. 클라이언트와 서버가 소켓을 통해 통신하는 구조로, 원격에서 프로세스 간 데이터를 공유할 때 사용한다.