Learning
토픽 21 / 85·프로세스 동기화와 교착상태

공유 메모리 (Shared Memory)

공유 메모리 (Shared Memory)

여러 프로세스가 동일한 물리 메모리 영역을 자신의 가상 주소 공간에 매핑하여 직접 읽기/쓰기로 데이터를 교환하는 IPC 기법으로, 가장 빠른 프로세스 간 통신 방식

목적: 고속 대용량 데이터 공유, 커널 복사 오버헤드 제거

구현 방식

  • System V: shmget(생성) → shmat(연결) → shmdt(분리) → shmctl(제어/삭제)
  • POSIX: shm_open() + mmap(), 파일 디스크립터 기반, 더 현대적
  • mmap: 파일 또는 익명 매핑, MAP_SHARED 플래그, fork 시 자식과 공유

동기화 필요: 커널이 접근을 중재하지 않으므로 세마포어/뮤텍스/스핀락으로 직접 동기화 필수

성능: 가장 빠른 IPC, 커널↔사용자 공간 복사 없음, 캐시 효율적

장점: 최고 속도, 대용량 데이터 적합, 유연한 데이터 구조 공유

단점: 동기화 직접 구현, 디버깅 어려움, 보호/격리 약화, 프로세스 종료 시 정리 필요

비교: 공유 메모리(최고속/동기화 수동) vs 메시지 패싱(안전/커널 복사) vs 파이프(단순/단방향)

연관: IPC, mmap, 세마포어, 뮤텍스, 프로세스 간 통신