IPC란 무엇인가
- 프로세스간 통신(Inter-Process Communication, IPC)은 운영 체제에서 서로 독립적으로 실행되는 프로세스들 간에 데이터를 주고받는 방법을 의미
- 각 프로세스는 독립적인 실행 객체이기 때문에 프로세스 간 통신을 하려면 커널이 제공하는 IPC 모델 방식을 사용해서 통신해야 함
IPC가 필요한 이유
- 운영 체제에서 멀티 태스킹이 가능하게 함
- 동시에 여러 프로세스가 협력하여 작업을 수행할 수 있도록 함
- 예를 들어, 웹 서버가 여러 클라이언트의 요청을 동시에 처리할 때 프로세스 간의 통신이 필수적
IPC 종류
공유 메모리 방식(Shared Memory)

- 프로세스들이 주소 공간의 일부를 공유하는 방식
- 속도
- 메모리 공간을 공유하기 때문에 다른 방식에 비해 데이터 전송 속도가 매우 빠름.
- 동기화
- 공유 메모리 방식은 동기화 문제가 발생할 수 있음
- 여러 프로세스가 동시에 메모리에 접근할 때 데이터의 일관성을 유지하기 위해 세마포어, 뮤텍스(Mutex) 같은 동기화 메커니즘을 사용해야 함
- 복잡성
- 동기화 문제와 데이터 접근 관리를 직접 해야 하므로 개발이 복잡해질 수 있음
- 사용 예시
- 대용량 데이터를 주고받거나, 고속 통신이 필요한 경우에 많이 사용
- 동작 과정
1. 한 프로세스가 공유 메모리를 생성하고, 해당 메모리의 참조 주소를 다른 프로세스와 공유
2. 다른 프로세스는 이 참조 주소를 통해 동일한 메모리 영역에 접근할 수 있음
3. 데이터를 읽거나 쓸 때는 동기화 기법을 통해 데이터의 일관성을 유지해야 함
- 장점
- 빠른 데이터 전송 속도
- 대용량 데이터 처리에 유리
- 단점
- 동기화 문제로 인한 복잡성 증가
- 교착 상태(Deadlock) 발생 가능성
메시지 전달 방식(Messsage Passing)

- 프로세스 간에 데이터를 메시지 형태로 주고받는 방식
- 캡슐화
- 메시지는 구조화된 데이터 형태로 주고받기 때문에 데이터 캡슐화가 잘 이루어짐
- 프로세스 간에 직접적인 메모리 공유가 없으므로 동기화 문제가 발생하지 않음
- 유연성
- 메시지 큐, 소켓, 파이프 등의 다양한 IPC 방법을 통해 구현할 수 있음
- 속도
- 메시지를 주고받는 과정에서 데이터 복사가 필요하기 때문에 공유 메모리 방식에 비해 속도가 느릴 수 있음
- 사용 예시
- 서로 독립적인 프로세스 간 통신, 분산 시스템, 네트워크 통신 등에 주로 사용
- 동작 과정
1. 한 프로세스가 메시지를 작성하고 IPC 메커니즘(예: 메시지 큐, 소켓, 파이프 등)을 통해 다른 프로세스에게 전송
2. 다른 프로세스는 이를 수신하여 메시지를 처리함
3. 메시지는 보통 FIFO(First In, First Out) 순서로 처리되지만 ,필요에 따라 우선순위를 설정할 수도 있음
- 장점
- 프로세스 간 독립성 보장
- 동기화 문제 없음
- 분산 환경에서 적합
- 단점
- 데이터 전송 속도가 느림
- 구현 시 오버헤드가 발생할 수 있음
- 메시지 큐(Message Queue)
- 메시지를 큐(Queue)에 저장하고, 수신 프로세스가 이를 읽어가는 방식
- 프로세스 간 비동기 통신이 가능하며, 메시지는 큐에 FIFO(First In, First Out) 순서로 저장됨
- 사용 예시 : 작업 대기열 시스템, 비동기 로그 처리
- 파이프(Pipe)
- 한 프로세스의 출력 데이터를 다른 프로세스의 입력으로 전달하는 단방향 통신 채널
- 주로 부모-자식 프로세스 간의 통신에 사용됨
- 익명 파이프(Anonymous Pipe) : 같은 부모 프로세스를 공유하는 프로세스 간 통신에 사용됨
- 소켓(Socket)
- 네트워크 통신을 위해 사용하는 양방향 통신 채널
- 로컬 및 원격 프로세스 간의 통신을 모두 지원
- TCP/IP 기반 통신 지원
- 사용 예시 : 웹 서버와 클라이언트 간 통신, 채팅 애플리케이션