IPC
Inter Process Communication: 프로세스 간 통신을 위한 메커니즘
IPC 종류
Anonymous PIPE
- 하나의 프로세스는 데이터를 쓰기만, 다른 하나는 데이터를 읽기만 가능
- 한쪽 방향으로만 통신 가능
- 통신을 할 프로세스가 명확하게 알 수 있는 경우 사용
- 구현이 매우 간단하다는 장점
Named PIPE
- 부모 프로세스와 무관하게 전혀 다른 모든 프로세스들 사이에서 통신 가능
- 통신을 위해 이름이 있는 파일 사용
- 단방향 통신만 가능하지만 이름이 있는 파일 두 개를 사용해 해결 가능
Message Queue
- Named PIPE와 입출력 방식 동일
- Named PIPE는 데이터의 흐름, 메시지 큐는 메모리 공간이라는 차이
- 메시지 큐에 쓸 데이터에 번호를 붙임으로써 여러 개의 프로세스가 동시에 데이터를 쉽게 다룸
Shared Memory
- 데이터 자체를 공유하도록 지원하는 설비
- 별다른 통신 없이 직접적으로 데이터에 접근하기 때문에 IPC 중 가장 속도 빠름
- 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당해주며 이후 어떤 프로세스이든 해당 메모리영역에 접근 가능
Memory Map
- 열린 파일을 메모리에 맵핑시켜 공유
- 주로 파일로 대용량 데이터를 공유해야 할 때 사용
Socket
- 원격에서 프로세스 간 데이터를 공유할 때 사용
- domain, type, protocol 지정
- 서버에서 bind, listen, accept를 통해 소켓 연결을 위한 준비, 클라이언트에서 connect를 통해 서버에 요청
- 연결이 수립 된 이후 Socket send → 데이터 공유
references
👉 https://velog.io/@qweadzs/CS-IPCInter-Process-Communication