[Linux] IPC 간단 정리

mommers·2026년 2월 4일

Linux

목록 보기
42/59

IPC (Inter-Process Communication) 및 프로세스 주소 공간 요약

프로세스는 독립된 가상 주소 공간(Virtual Address Space)을 가지므로, 서로의 메모리에 직접 접근할 수 없습니다. 따라서 프로세스 간 협력을 위해 커널이 중재하는 IPC 메커니즘이 필수적입니다.


1. 데이터 전송 (Data Transfer) 모델

커널 메모리를 매개체로 데이터를 복사하여 전달하는 방식입니다.

  • Write : 송신 프로세스가 사용자 메모리 데이터를 커널 메모리로 복사합니다.
  • Read : 수신 프로세스가 커널 메모리 데이터를 자신의 사용자 메모리로 복사합니다.

1-1) 바이트 스트림 (Byte Stream):

  • 구분자 없는 데이터의 흐름 (파이프, FIFO, 스트림 소켓).
  • 쓰기 크기와 읽기 크기가 일치하지 않아도 되며, 임의의 바이트 단위로 읽기 가능.

1-2) 메시지 (Message):

  • 경계가 분명한 메시지 단위 (System V/POSIX 메시지 큐, 데이터그램 소켓).
  • 한 번의 읽기 작업으로 하나의 전체 메시지를 소비함.
  • 파괴적 읽기: 데이터를 읽으면 커널 내에서 해당 데이터는 소멸됨.
  • 자동 동기화: 데이터가 없으면 읽기 작업은 기본적으로 Blocking 되어 동기화가 유지됨.

2. 공유 메모리 (Shared Memory) 모델

두 개 이상의 프로세스가 동일한 물리 메모리 영역을 자신의 주소 공간에 매핑하여 사용하는 방식입니다.

  • 구현 방식:
    • System V 공유 메모리
    • POSIX 공유 메모리
    • 메모리 매핑 (mmap)
  • 고속 통신: 커널을 거치지 않고 직접 메모리에 접근하므로 데이터 복사 오버헤드가 없음.
  • 비파괴적 읽기: 데이터를 읽어도 메모리에 잔류하여 다른 프로세스가 재사용 가능.
  • 수동 동기화: 커널이 동기화를 보장하지 않음. 데이터 일관성을 위해 세마포어(Semaphore)나 뮤텍스 등의 별도 메커니즘 필요.

3. 비교 요약

구분데이터 전송 (Data Transfer)공유 메모리 (Shared Memory)
속도상대적으로 느림 (Context Switch/Copy 발생)매우 빠름 (직접 접근)
복사 횟수2회 (User → Kernel → User)0회 (초기 매핑 후 없음)
동기화커널이 자동 제공 (Blocking)개발자가 직접 구현 (Semaphore 등)
데이터 유지읽기 후 삭제 (소비성)명시적 삭제 전까지 유지 (공유성)
profile
임베디드 개발자가 되기 위해 공부중입니다!

0개의 댓글