IPC (Inter Process Communication)은 프로세스 간 통신을 말한다.

해당 그림처럼 Process는 완전히 독립된 실행 객체이다.
이를 위해서 커널 영역에서 IPC라는 내부 프로세스 간 통신을 제공하게 되어 프로세스는 커널이 제공하는 IPC 설비를 이용해서 프로세스간 통신을 할 수 있게 되었다.
현실에서도 다양한 통신 장비가 존재하는 것 처럼 IPC에도 상황에 맞는 설비를 선택할 필요가 있다. 그 중 System Ⅴ 방식에서 쓰는 내용만 설명하겠다.
메시지 큐(Message Queue)는 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법 중에 하나로, 메시지 지향 미들웨어(Message Oriented Middleware:MOM)를 구현한 시스템을 의미한다.
다른 IPC 설비들이 대부분 프로세스 간 메시지 전송을 목적으로 하는데 반면, Semaphore는 프로세스 간 데이터를 동기화하고 보호하는데 그 목적을 둔다.
프로세스 간 메시지 전송을 하거나 혹은 공유 메모리를 통해 특정 데이터를 공유하게 될 경우, 공유된 자원에 여러개의 프로세스가 동시에 접근하면 안되며, 단지 한번에 하나의 프로세스만 접근 가능하게 만들 때 사용되는 것이 Semaphore이다.
데이터를 공유하는 방법에는 크게 두가지가 있다.
1. 통신을 이용해서 데이터를 주고 받기 2. 데이터를 아예 공유하여 함께 사용하기
Shared Memory는 프로세스 간 메모리 영역을 공유해서 사용할 수 있도록 허용한다. 프로세스가 공유 메모리 할당을 커널에 요청하면 해당 프로세스에 메모리 공간을 할당한다.
[References]