IPC (Inter Process Communication)

I. 다중 프로세스 상호 간 통신, IPC

가. IPC (Inter Process Communication)의 개념

  • 공유 메모리가 없는 독립된 프로세스 간 동기화 및 데이터 교환을 위한 상호통신 기법

나. IPC의 필요성

동기화
문제 해결
– 다중 프로세스 환경에서 여러 사용자가 동시 쓰기 시 데이터 무결성 보장 가능
프로세스간
데이터 교환
– 작은 데이터의 경우 메시지 큐 방식
– 큰 데이터의 경우 공유메모리 방식 권고

 

II. IPC 통신 기법

구분통신 기법설명
직접
통신
 
 
– Send(P, Message)
– Receive(Q, Message)
– 두 프로세스가 상대 호출
– 대칭통신, 모듈성 낮음
– 프로세스 P에 메시지 송신
– 프로세스 P로부터 수신
간접
통신
 
 
– Send(A, Message)
– Receive(A, Message)
– 우편함과 송수신 방식
– 송/수신 분리, 유연성제공
– 우편함 A로 메시지 송신
– 우편함 A로부터 수신
버퍼링 
– Zero Capacity
– Bounded Capacity
– Unbounded Capacity
– 링크의 메시지 보유 용량
– 버퍼링 없음, 동기 통신
– 유한길이 큐, 자동 버퍼링
– 무한길이 큐, 자동 버퍼링
동기화 
– Blocking Send
– Non-Blocking Send
– Blocking Receive
– Non-Block Receive
– Data 수신대기 동기/비동기
– 메시지 받을 때까지 대기
– 메시지 보내고 다른 연산
– 메시지 있을 때까지 대기
– 메시지유무 관계없이 수신

 

III. IPC 구현 방식

구현방식핵심 기술설명
파이프
방식
– Pipe 기반
 단방향
– 통신 버퍼기반 단방향 통신
– 익명파이프, 네임드파이프(반이중)
세마포어– P(), V()
  연산
– 프로세스 간 동기화, 보호
– 상호배제, 자원공유
공유
메모리
– 커널생성
  메모리
– 프로세스가 커널에 메모리 요청
– 공간 할당, 메모리 영역 접근
메시지
– System
  Call
– 커널 내부 메시지 기록 공간생성
– 송수신 시 OS에 요청, 전달느림
소켓– 소켓기반
  송수신
– 생성 도메인, Type, Protocol 지정
– Bind, Listen, Accept 소켓 연결

 

IV. 메시지 큐 방식과 공유 메모리 방식

가. 메시지 큐 방식 구성 및 수행 절차

구성도수행 절차
① 송신필요 P#1 커널 통해 메시지전달
② 전송 메시지는 마지막에 연결
③ 수신측 P#2, 메시지 큐 선택적 수신
– msgget():큐 생성, msgsnd(), msgctl()
– 프로세스 간 이산적 양 송수신
– 전송 데이터를 메시지형태 생성/수신

나. 공유 메모리방식 구성 및 수행 절차

구성도수행 절차
– P 요청으로 커널에 의해 생성/관리
① 통신필요 P#1 공유 메모리 생성
–  자신의 메모리 영역으로 첨부, 쓰기
② P#2가 공유 메모리 찾음, 첨부, 읽기
– 생성된 공유메모리는 직접 제거 필요
  • 공유 메모리 생성 후 사용하는 모든 프로세스가 종료되어도 메모리는 종료 안되므로 수동 제거 필요

 

V. IPC 기법 중 Pipe 방식

① 파이프 1 생성 후 파이프 2 생성
② Fork 수행
③ 부모 프로세스는 Pipe#1 읽기 닫음
④ 부모 프로세스는 Pipe#2 쓰기 닫음
⑤ 자식 프로세스는 Pipe#1 쓰기 닫음
⑥ 자식 프로세스는 Pipe#2 읽기 닫음
⑦ 전송 완료 후 모든 파이프 닫음
  • 모든 파이프는 단일 방향을 가지며, 한 방향 데이터 흐름
  • 양방향 데이터 흐름 필요 시, 두 개의 파이프 생성 후 방향 전송위해 각각 하나씩 사용

콘텐츠 사용 시 출처 표기 부탁 드리고, 궁금한 점이나 의견은 댓글 남겨주세요^^