내 잡다한 노트

IPC 방식에 따른 속도 비교 본문

운영체제

IPC 방식에 따른 속도 비교

peanutwalnut 2025. 1. 20. 22:53

일단 IPC ( Inter-Process Communication ) 에는 공유메모리, 소켓, 파이프, DBus, 메세지 큐 등이 있다.

 

1. IPC 방식에 따른 속도 비교

1.1 공유 메모리(Shared Memory)

  • 속도:
    공유 메모리는 가장 빠른 IPC 방식 중 하나입니다.
    이유는 두 프로세스가 동일한 물리적 메모리 영역을 직접 액세스하기 때문입니다.
    • 메모리 접근 속도는 나노초(ns) 수준입니다.
  • 사용 사례:
    • 대량의 데이터 전송이 필요할 때.
    • 고성능 실시간 애플리케이션(예: 멀티미디어, 고속 트레이딩 시스템).
  • 제약:
    • 동기화(뮤텍스, 세마포어)가 필요하며, 이를 잘못 관리하면 경쟁 조건이나 데드락 문제가 발생할 수 있음.

1.2 파이프(Pipes)

  • 속도:
    파이프는 메모리 기반 버퍼를 사용하여 데이터를 전달합니다.
    일반적으로 공유 메모리보다 느리지만, 여전히 빠릅니다.
    • 속도 범위: 마이크로초(μs) 수준.
  • 익명 파이프: 부모-자식 프로세스 간에만 사용되며, 상대적으로 더 간단하고 빠릅니다.
  • 명명된 파이프(FIFO): 파일 시스템을 통해 통신하므로 약간의 추가 오버헤드가 있습니다.

1.3 소켓(Sockets)

Unix Domain Socket

  • 속도:
    네트워크 소켓보다 훨씬 빠르며, 로컬 통신용으로 최적화되어 있습니다.
    • 속도 범위: 마이크로초(μs) 수준.

TCP/UDP 소켓

  • 속도:
    TCP/UDP 소켓은 네트워크 프로토콜 스택을 거치므로 Unix Domain Socket보다 느립니다.
    • 속도 범위: 마이크로초밀리초(μsms) 수준.

1.4 메시지 큐(Message Queue)

  • 속도:
    메시지 큐는 커널 공간에서 큐를 관리하며, 소켓보다 빠르지만 공유 메모리보다 느립니다.
    • 속도 범위: 마이크로초밀리초(μsms) 수준.
  • 특징:
    • 동기화 메커니즘이 내장되어 있어 안전하게 사용할 수 있음.
    • 대량 데이터 처리보다는 이벤트 기반 통신에 적합.

 

1.5 파일 기반 통신

  • 속도:
    디스크 I/O를 통해 데이터를 주고받기 때문에 가장 느립니다.
    • 속도 범위: 밀리초(ms) 수준 이상.
  • 특징:
    • 파일 잠금(lock)을 관리해야 동시 접근 문제를 피할 수 있음.
    • 대량 데이터를 장기간 보관하면서 통신할 때 적합.

1.6 신호(Signals)

  • 속도:
    신호는 커널을 통해 전달되며, 매우 빠른 이벤트 전달 방식 중 하나입니다.
    • 속도 범위: 나노초마이크로초(nsμs) 수준.
  • 제한:
    • 간단한 신호 전달에만 적합하며, 복잡한 데이터 전송에는 적합하지 않음.

 

 

3. 속도 비교 요약

방식속도(대략적)특징사용 사례

공유 메모리 나노초(ns) 가장 빠름, 동기화 필요 대용량 데이터 전송, 실시간 애플리케이션
익명/명명된 파이프 마이크로초(μs) 부모-자식 간 빠른 통신 간단한 데이터 전송
Unix Domain Socket 마이크로초(μs) 로컬 프로세스 간 네트워크 없는 소켓 통신 범용적이고 유연한 통신
TCP/UDP 소켓 마이크로초~밀리초 네트워크 스택을 거침 멀티 호스트 간 통신, 네트워크 애플리케이션
메시지 큐 마이크로초~밀리초 동기화 내장, 중간 속도 이벤트 기반 통신, 메시징 시스템
파일 기반 밀리초(ms) 이상 디스크 I/O, 가장 느림 데이터 저장 및 비동기 처리
신호(Signals) 나노초~마이크로초 이벤트 전달, 단순 이벤트용 이벤트 알림

 

 

 

 

'운영체제' 카테고리의 다른 글

Page Fault와 Thrashing  (0) 2025.01.26
Unix Domain Socket  (0) 2025.01.20
Ephemeral port란?  (0) 2025.01.09
시스템콜 처리 과정, 시스템 콜 테이블  (0) 2023.03.31
프로세스 생성 시스템 콜  (0) 2023.03.20