IPC
IPC가 무엇이고 어떤 종류가 있는지 설명해 주세요
IPC (Inter Process Communication)
프로세스 간 소통 방법이다. 프로세스는 독립적이거나 다른 프로세스와 협력한다. 독립적인 프로세스는 동시에 실행 중인 다른 프로세스에 영향을 주지 않지만, 협력이 필요한 경우 영향을 주고받을 수 있다.
IPC가 필요한 이유
- 정보 공유: 여러 사용자가 동일한 정보에 관심을 가지면, 이 정보에 동시에 접근할 수 있는 환경을 제공한다.
- 계산 속도 증가: 특정 연산을 빠르게 실행하기 위해서는 작업은 작은 단위로 나누어서 병렬로 실행 가능하다.
- 모듈성: 시스템 기능을 프로세스 단위 또는 스레드 단위로 나눈 모듈 방식으로 시스템을 구성할 수 있다.
- 편리성: 개발 사용자도 동시에 많은 작업을 할 수 있다.
Shared Memory가 무엇이며, 사용할 때 유의해야 할 점에 대해 설명해 주세요.

협력 프로세스 간 공유되는 메모리를 생성한 후, 이를 사용하여 정보를 교환하는 방식이다. 데이터의 형식과 위치는 프로세스들에 의해 결정되며 운영체제의 소관은 아니다. 성능은 좋지만 동기화 문제가 발생해서 어플리케이션에서 직접 동기화를 해야 한다.
IPC 종류
- 익명 Pipe
- 단방향 통신 채널로 한 쪽은 보내기만 하며, 한 쪽은 받기만 한다. 양방향 통신을 위해서는 pipe가 두 개 필요하다.
- 자식 프로세스와 부모 프로세스 사이에서만 생성이 가능하다.
- Named Pipe (FIFO)
- 이름을 가진 pipe를 통해서 양방향 통신을 지원한다.
- Message Queue
- 메모리를 이용한 Pipe이며, 구조체를 기반으로 통신한다.
- 메시지 타입에 따라 구조체 종류를 다르게 받을 수 있으며, 여러 프로세스가 동시에 데이터를 다룰 수 있다. 커널에서 제공하기 때문에 메모리 제한이 있다.
- Shared Memory
방법
- Shared Memory model에는 producer 프로세스와 consumer 프로세스가 있다.
- 공유 메모리를 통해 동시에 통신한다.
- 생산자가 item을 생산하고 buffer에 저장하면, 소비자는 buffer의 item을 소비한다.
- 가용한 항목이 있을 때만 소비가 이루어지도록 생산자와 소비자 사이의 프로세스는 동기화되어야 한다.
메시지 큐는 단방향이라고 할 수 있나요?
메시지 큐는 단방향이 아니라, 단방향과 양방향 통신을 모두 지원할 수 있다.
메시지 큐는 프로세스 간 통신(Inter-Process Communication, IPC)의 한 형태로, 기본 개념은 프로세스나 스레드가 메시지를 큐에 넣고 다른 프로세스나 스레드가 이런 메시지를 가져와 처리하는 것이다.
- 단방향 메시지 큐: 단방향 메시지 큐에서는 프로세스나 스레드가 메시지를 큐에 보낼 수 있지만, 직접적인 응답을 기대하지 않는다. 다른 프로세스나 스레드는 이러한 메시지를 읽고 처리할 수 있다.
- 양방향 메시지 큐: 양방향 메시지 큐(요청-응답 패턴으로도 알려짐)에서 프로세스는 요청 메시지를 보내고 응답을 기대한다. 수신 프로세스는 요청을 처리하고 응답 메시지를 발신자에게 다시 보낼 수 있다.
단방향 메시지 큐는 프로세스가 다른 프로세스에게 알림이나 정보를 전달해야 할 경우에 적합하며, 양방향 메시지 큐는 요청이 제기되고 응답이 수신되어야 하는 더 상호작용적인 통신이 필요한 경우에 유용하다.