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