IPC(Inter-Process Communication)

Godssi·2025년 4월 10일

Communication

목록 보기
7/8

하나의 운영 체제(OS)에서 실행 중인 여러 프로세스가 서로 데이터를 주고 받거나 동기화 하기 위해 사용하는 메커니즘

운영 체제(OS)는 기본적으로 프로세스 간의 메모리를 격리하므로, 이들을 연결해주는 수단인 IPC(Inter-Process Communication)이 필요


방식

Pipe(파이프)

운영 체제에서 제공하는 가장 기본적인 IPC 통신 메커니즘으로 단방향 통신을 위해 사용되며, 부모 프로세스와 자식 프로세스 사이에서 데이터를 전달하는 용도로 주로 활용

파일 디스크립터를 통해 접근되며, 파이프에 데이터를 기록하는 프로세스는 파이프로부터 데이터를 읽는 프로세스에게 데이터를 전달

부모 프로세스는 파이프를 생성하고 자식 프로세스에게 파이프를 상속 이후 부모 프로세스는 파이프의 쓰기 끝을 닫고 자식 프로세스는 파이프의 읽기 끝을 닫아서 데이터를 주고 받음

파이프는 운영 체제에서 관리되기 때문에 별도의 동기화 메커니즘 필요 x

장점

  • 구현이 쉽고 운영 체제에서 제공하는 기본적인 IPC 매커니즘
  • 단일 시스템 내에서 부모 프로세스와 자식 프로세스 간의 통신에 적합

단점

  • 단방향 통신만 가능하며, 양방향 통신을 위해서는 파이프를 2개 사용
  • 동일한 시스템 내의 프로세스 간 통신에만 제한한

종류

익명 Pipe

부모-자식 관계인 두 프로세스 간에만 사용 가능

Named Pipe

이름을 부여해서 전혀 관련 없는 프로세스 간에도 사용 가능

Message Queue

운영체제 Kernel이 관리하는 Queue에 메시지를 보내고 받음.
비동기적으로 데이터를 주고 받을 수 있는 구조

Shared Memory

여러 프로세스가 **동일한 메모리 공간을 공유**하여 데이터를 교환하는 IPC 통신 메커니즘 Shared Memory는 **효율적이고 빠른 데이터 공유와 동기화를 위해 사용** Process는 Shared Memory 영역에 데이터를 **쓰거나 읽을 수 있으며**, 이를 통해 다른 프로세스들과 데이터를 굥유하고 통신 가능

Shared Memory를 사용하기 위해서는 OS가 제공하는 Shared Memory 함수를 사용하여 Shared Memory Segment를 생성하고 Process의 주소 공간에 연결 필요

Shared Memory를 사용할 때 주의할 점은 데이터의 일관성과 동기화!!
여러 Process가 동시에 Shared Memory에 접근하므로, 적절한 동기화 메커니즘(Mutex, Semaphore)를 사용하여 데이터의 일관성과 상호 배타적인 접근 보장 필요

장점

  • Shared Memory는 데이터를 직접 공유하므로 데이터의 복사나 전달 과정 필요 X, 이로 인해 빠른 데이터 공유 가능
  • 데이터를 공유하기 위한 동기화 메커니즘이 필요 없으므로, 동기화 오버헤드가 적음

단점

  • Shared Memory는 동시에 여러 프로세스가 접근할 수 있기 때문에 데이터의 일관성과 동기화 보장 필요
  • Shared Memory의 크기가 커지면 시스템의 자원을 소비하게 되므로 주의 필요
  • 다중 프로세스 환경에서 안전한 접근을 위한 동기화 메커니즘 구현 필요

Socket

네트워크를 기반으로 프로세스 간 통신을 지원하는 IPC 메커니즘으로 **Client-Server** 기반으로 동작하며 네트워크 소켓을 사용하여 **다른 시스템에 위치한 프로세스와 통신 가능** Socket은 **TCP/IP 또는 UDP Protocol**을 사용하여 데이터를 주고 받으며 프로세스 간에 **안정적이고 신뢰할 수 있는 통신** 제공

일반적으로 Socket은 IP주소와 Port 번호를 사용하여 특정 프로세스와 통신하며, Client Socket과 Server Socket이 상호 작용하여 데이터를 송수신

임베디드 시스템에서 Socket을 구현하기 위해서는 네트워크 스택과 Socket Library를 사용

장점

  • Socket은 네트워크를 통한 IPC 메커니즘으로서, 다른 시스템의 프로세스 간 통신도 가능
  • Client-Server Model로 동작하여 분산 시스템 구축에 용이

단점

  • Network 기반으로 동작하기 때문에 Network Protocol 및 Infra의 제약 사항 존재
  • Socket 통신은 System Call이 필요하고, 데이터의 직렬화와 역직렬화가 필요할 수 있어 오버헤드 발생이 있을 수 있음

Signal

프로세스 간에 간단한 메시지를 보내는 방식
예: SIGKILL, SIGINT, 사용자 정의 시그널 등.


마무리

지금까지 대표적인 IPC(Inter-Process Communication) 방식들인 Pipe, Message Queue, Shared Memory, Socket, Signal에 대해 간단히 정리해보았습니다.
각 방식마다 특징과 사용 목적이 다르기 때문에, 시스템 구조나 요구 사항에 따라 적절한 IPC 기법을 선택하는 것이 중요합니다.
앞으로는 이 중에서도 Shared Memory와 Socket을 중심으로,
직접 구현해보는 예제와 함께 실제 개발에서 어떻게 활용할 수 있는지에 대해 자세히 다룰 예정입니다.

예제를 통해 이론 뿐만아니라 실무 감각까지 익힐 수 있는 글을 준비하겠습니다!😄


참고 자료

  1. IPC (Inter-Process Communication) 통신 메커니즘이란? 파이프, 메시지 큐, 공유 메모리, 소켓, 신호 : 네이버 블로그
  2. Intro to IPC | Sockets - Austin G. Walter
profile
세상을 도울 로봇 개발자

0개의 댓글