IPC는 프로세스들간에 서로 데이터를 주고받는 행위 또는 그에대한 방법을 의미한다.
그림처럼 Process는 완전히 독립된 실행객체이다.
서로 독립되어 있다는 것은 다른 프로세스의 영향을 받지 않는다는 장점이 있다.
그런데 독립되어 있는 만큼 별도의 설비 없이는 서로 통신이 어렵다는 문제가 있다.
이를 보완하기 위해서 커널영역에서 IPC라는 내부 프로세스간 통신을 제공하고, 프로세스는 커널이 제공하는 IPC 설비를 이용해서 프로세스간 통신을 할 수 있게된다.
Ststem V IPC
오래된 버전이다. 그 역사가 긴 만큼 다른 기종간의 코드 호환성을 보장해 주지만 API가 오래되었으며 함수명도 명확하지는 않다.
POSIX IPC
비교적 최근에 개발된 표준이다. 직관적인 API들로 구성되어 있어 상대적으로 사용하기 쉽다.
IPC에는 여러가지 종류가 있지만 메모리 공유, 메시지 전달을 기본적이고 핵심적인 IPC로 취급한다.
프로세스끼리 특정 메모리 영역을 공유하며 상호간 통신하는 방법이다.
데이터 자체를 공유하도록 지원한다.
한 프로세스에서 변경한 메모리 공간의 내용을 다른 프로세스에서 접근할 수 있다.
공유 메모리는 커널에서 관리된다.
Message Passing은 커널이 제공하는 API를 이용해서 커널 공간을 통해 통신한다.
프로세스끼리 메시지를 전달할 때 메시지 큐에 넣어두며 송신 프로세스는 큐에 enqueue, 수신 프로세스는 큐에 dequeue하며 상호간 통신한다.
메시지 큐는 커널 단에서 관리한다.
https://velog.io/@yanghl98/OS%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-IPC%EB%9E%80
https://been2.tistory.com/23?category=798940
https://jwprogramming.tistory.com/54
https://profq.tistory.com/34