Skip to Content

IPC (Inter-Process Communication)

IPC란

IPC(Inter-Process Communication)는 프로세스 간 데이터를 주고받는 통신 메커니즘이다. 각 프로세스는 독립된 메모리 공간을 가지므로 다른 프로세스의 메모리에 직접 접근할 수 없다. 따라서 프로세스 간 협력이 필요할 때는 운영체제가 제공하는 IPC 메커니즘을 사용해야 한다.

IPC는 다양한 방식으로 구현될 수 있으며, 각 방식은 서로 다른 특징과 용도를 가진다.

IPC의 필요성

프로세스 간 통신이 필요한 상황은 다음과 같다:

  • 데이터 공유: 여러 프로세스가 동일한 데이터를 직접 읽거나 수정해야 할 때 (공유 메모리), 또는 데이터의 복사본을 주고받아 협력해야 할 때 (파이프, 메시지 큐)
  • 병렬 처리: 큰 작업을 여러 프로세스로 나누어 처리하고 결과를 통합할 때
  • 모듈화: 시스템을 독립적인 프로세스로 분리하여 각 모듈 간 통신이 필요할 때
  • 이벤트 알림: 한 프로세스의 상태 변화를 다른 프로세스에게 알릴 때

IPC 메커니즘

1. 파이프 (Pipe)

파이프한 방향으로만 데이터가 흐르는 통신 방식이다. 파이프를 통해 한 프로세스의 출력을 다른 프로세스의 입력으로 연결할 수 있다.

특징:

  • 단방향 통신: 데이터는 한쪽 방향으로만 흐른다. 양방향 통신이 필요하면 두 개의 파이프를 사용해야 한다
  • FIFO 구조: 먼저 쓴 데이터가 먼저 읽힌다

사용 사례:

  • 셸 명령어 체인: 여러 명령어를 파이프로 연결하여 데이터 처리 파이프라인 구성
  • 부모-자식 프로세스 통신: 부모 프로세스가 자식 프로세스에게 작업 지시 전달
  • 데이터 스트림 처리: 로그 생성 프로세스가 파이프를 통해 로그 분석 프로세스에 전달

2. 메시지 큐 (Message Queue)

메시지 큐는 프로세스 간 메시지 형태로 데이터를 주고받는 방식이다. 파이프와 달리 메시지 단위로 데이터를 관리하며, 메시지 타입을 지정할 수 있다.

특징:

  • 양방향 통신: 여러 프로세스가 큐에 메시지를 보내고 받을 수 있다
  • 메시지 타입: 메시지에 타입을 지정하여 선택적으로 수신 가능

사용 사례:

  • 로그 수집 시스템: 여러 프로세스가 로그 메시지를 큐에 전송
  • 작업 분배: 마스터 프로세스가 작업을 큐에 넣고 워커 프로세스들이 가져감

3. 공유 메모리 (Shared Memory)

공유 메모리여러 프로세스가 동일한 메모리 영역에 접근할 수 있게 하는 방식이다. 가장 빠른 IPC 메커니즘이지만, 동기화 문제를 직접 해결해야 한다.

특징:

  • 고속 통신: 커널을 거치지 않고 직접 메모리에 접근하므로 매우 빠르다
  • 대용량 데이터: 큰 데이터를 효율적으로 공유할 수 있다
  • 동기화 필요: 여러 프로세스가 동시에 접근할 때 세마포어 등으로 동기화가 필요하다
  • 메모리 관리: 공유 메모리 생성, 연결, 해제를 명시적으로 관리해야 한다

사용 사례:

  • 데이터베이스 시스템: 여러 프로세스가 동일한 데이터베이스 버퍼 풀에 접근
  • 멀티미디어 처리: 대용량 이미지나 비디오 데이터를 여러 프로세스가 공유

4. 소켓 (Socket)

소켓네트워크를 통한 프로세스 간 통신을 위한 메커니즘이다. 동일한 컴퓨터뿐만 아니라 네트워크로 연결된 서로 다른 컴퓨터의 프로세스 간에도 통신할 수 있다.

특징:

  • 네트워크 통신: 로컬뿐만 아니라 원격 시스템 간 통신 가능
  • 양방향 통신: 데이터를 보내고 받을 수 있다
  • 프로토콜 지원: TCP(신뢰성), UDP(빠른 전송) 등 다양한 프로토콜 선택 가능
  • 포트 번호: IP 주소와 포트 번호로 통신 대상을 식별한다

사용 사례:

  • 웹 서버-클라이언트 통신: HTTP 프로토콜을 통한 웹 페이지 전송
  • 데이터베이스 연결: 애플리케이션과 데이터베이스 서버 간 통신
  • 실시간 채팅: 여러 사용자 간 메시지 전송

IPC 메커니즘 비교

메커니즘속도데이터 크기동기화주요 용도
파이프중간제한적커널 관리단순한 데이터 흐름
메시지 큐중간중간커널 관리구조화된 메시지 전달
공유 메모리매우 빠름대용량사용자 구현 필요대용량 데이터 공유
소켓느림제한 없음커널 관리네트워크 통신
Last updated on