IPC (Inter-Process Communication, 프로세스 간 통신) - 2. IPC의 기본 개념과 종류

2025. 2. 8. 13:31정보기술/운영체제 (OS)

2️⃣ IPC의 기본 개념과 종류

운영체제에서 실행 중인 프로그램은 프로세스(Process) 라고 합니다. 하지만 운영체제는 각 프로세스가 독립적인 메모리 공간을 가지도록 설계되어 있어, 기본적으로 다른 프로세스의 메모리에는 접근할 수 없습니다.

하지만 현실에서는 여러 개의 프로세스가 서로 협력해야 하는 경우가 많습니다. 예를 들어, 웹 브라우저의 렌더링 프로세스와 네트워크 프로세스가 데이터를 공유해야 하거나, 음악 앱의 UI 프로세스와 오디오 재생 프로세스가 통신해야 할 때가 있습니다.

이처럼 독립적인 프로세스 간에 데이터를 교환하기 위해 사용하는 기술이 바로 IPC(Inter-Process Communication, 프로세스 간 통신) 입니다.


📌 프로세스란 무엇인가?

프로세스는 운영체제에서 실행 중인 프로그램의 인스턴스를 의미합니다.

하나의 프로그램은 여러 개의 프로세스로 실행될 수도 있으며, 각 프로세스는 독립적인 메모리 공간을 할당받습니다. 따라서 프로세스 간 직접적인 데이터 공유가 불가능하며, 반드시 IPC를 통해 데이터를 주고받아야 합니다.

🔹 프로세스의 특징

  • 독립적인 메모리 공간을 가지며, 기본적으로 다른 프로세스의 메모리에 접근할 수 없음
  • 운영체제의 스케줄링에 따라 실행됨 (동시에 여러 프로세스가 실행 가능)
  • 멀티프로세스 환경에서는 프로세스 간 협업이 필요 (예: 웹 브라우저, 데이터베이스 서버)

운영체제는 이러한 협력을 가능하게 하기 위해 여러 가지 IPC 기법을 제공합니다.


📌 IPC 방식 소개: 공유 메모리 vs. 메시지 기반 통신

IPC는 크게 두 가지 방식으로 나뉩니다.

1️⃣ 공유 메모리(Shared Memory) 방식

여러 프로세스가 운영체제에서 제공하는 공유 메모리 영역을 이용하여 데이터를 주고받는 방식입니다.

  • 특징
    • 데이터 전송 속도가 빠름 (메모리를 직접 읽고 쓰기 때문)
    • 하지만 데이터 동기화 문제가 발생할 수 있음
      → 두 프로세스가 동시에 데이터를 수정하면 충돌 발생
      → 이를 방지하기 위해 세마포어(Semaphore)나 뮤텍스(Mutex) 사용

📌 비유
➡️ 공용 노트북을 사용하는 연구팀
➡️ 연구원들이 하나의 노트북을 공유하며 실험 데이터를 기록하고 분석하는 방식입니다.
➡️ 그러나 동시에 여러 연구원이 접근하면 데이터가 꼬일 수 있기 때문에, 일정한 규칙(세마포어)을 적용해야 합니다.

📌 사용 사례

  • 데이터베이스와 애플리케이션 간 데이터 공유
  • 고속 데이터 처리가 필요한 그래픽 프로세싱
  • 운영체제 커널과 사용자 프로세스 간 통신

2️⃣ 메시지 기반 통신(Message Passing) 방식

운영체제가 제공하는 메시지 전달 메커니즘을 이용하여 데이터를 교환하는 방식입니다.

  • 특징
    • 데이터를 공유하지 않고, 운영체제를 통해 데이터를 송수신
    • 독립적인 프로세스 간 안정적인 통신 가능
    • 하지만 공유 메모리 방식보다 속도가 느릴 수 있음 (운영체제를 거쳐야 하기 때문)

📌 비유
➡️ 물류센터의 택배 시스템
➡️ 한 연구실에서 다른 연구실로 실험 도구를 전달할 때, 택배 상자를 포장하여 운송하는 과정과 유사합니다.
➡️ 수신자는 상자를 개봉하여 필요한 정보를 얻으며, 중간에 택배 시스템이 데이터를 관리해 줍니다.
➡️ 직접 공유하지 않기 때문에 안전하지만, 물류 이동 시간이 필요합니다.

📌 사용 사례

  • 클라이언트-서버 모델 (웹 브라우저와 서버 간 데이터 전송)
  • 분산 시스템에서 원격 프로세스 간 통신
  • 네트워크 기반 애플리케이션 (예: 채팅 프로그램)

📌 대표적인 IPC 기법 간단 소개

운영체제는 IPC를 위해 다양한 기법을 제공합니다. 주요 IPC 기법을 정리하면 다음과 같습니다.

IPC 방식 설명 특징
파이프(Pipe) 한 방향(또는 양방향)으로 데이터를 전달하는 통로 주로 부모-자식 프로세스 간 통신
메시지 큐(Message Queue) 운영체제가 관리하는 메시지 저장소에 데이터를 저장하고 꺼내는 방식 독립적인 프로세스 간 비동기식 통신 가능
공유 메모리(Shared Memory) 프로세스 간 특정 메모리 영역을 공유하여 데이터 교환 빠르지만 동기화 문제 해결 필요
소켓(Socket) 네트워크를 이용해 프로세스 간 통신 (로컬 및 원격) 인터넷 기반 서비스에서 많이 사용
시그널(Signal) 특정 이벤트가 발생했을 때 프로세스에 알림을 보내는 방식 프로세스 종료, 인터럽트 등 처리

📌 정리

✔️ 프로세스(Process) 란 운영체제에서 실행 중인 프로그램의 인스턴스이며, 각 프로세스는 독립적인 메모리 공간을 가짐
✔️ IPC(Inter-Process Communication)는 프로세스 간 데이터를 주고받는 기술
✔️ IPC 방식은 크게 공유 메모리 방식과 메시지 기반 방식으로 나뉨
✔️ 공유 메모리는 빠르지만 동기화가 필요하고, 메시지 기반 통신은 안정적이지만 속도가 느릴 수 있음
✔️ 파이프, 메시지 큐, 공유 메모리, 소켓, 시그널 등 다양한 IPC 기법이 존재함