[Operating System] IPC - Inter-Process Communication

olwooz·2023년 1월 24일
0

Operating System

목록 보기
4/10

IPC (Inter Process Communication)

- 프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 메커니즘
- 프로세스끼리는 커널이 제공하는 IPC 설비를 이용해 통신 가능
- 메모리가 완전히 공유되는 스레드보다는 속도 떨어짐

e.g. 클라이언트와 서버

IPC의 종류

익명 파이프 unnamed pipe

- 프로세스 간에 FIFO 방식으로 읽히는 임시 공간인 파이프 기반으로 데이터를 주고받음
- 단방향 방식의 read-only, write-only 파이프를 만들어서 작동하는 방식
- 매우 간단하게 사용할 수 있음, 단순한 데이터 흐름을 가질 때 효율적
- 부모, 자식 프로세스 간에만 사용 가능
- 전이중 통신을 위해 2개를 만들 땐 구현이 복잡함

명명된 파이프 named pipe

- 파이프 서버와 하나 이상의 파이프 클라이언트 간의 통신을 위한 명명된 단방향 또는 이중 파이프
- 익명 파이프의 확장된 상태, 부모 프로세스와 무관한 다른 프로세스도 통신 가능
- 통신을 위해 이름있는 파일 사용
- 클라이언트/서버 통신을 위한 별도의 파이프 제공
- 컴퓨터의 프로세스끼리 또는 다른 네트워크상의 컴퓨터와도 통신 가능
- 보통 서버용/클라이언트용 파이프 구분
- 하나의 인스턴스를 열거나 여러 개의 인스턴스를 기반으로 통신

메시지 큐

- 메시지를 큐 데이터 구조 형태로 관리하는 것
- 커널의 전역변수 형태 등으로 커널에서 전역적으로 관리됨
- 다른 IPC 방식에 비해 사용 방법이 매우 직관적이고 간단
- 사용할 데이터에 번호를 붙이면서 여러 프로세스가 동시에 데이터를 쉽게 다룰 수 있음
- 메세지 큐는 파이프처럼 데이터 흐름이 아니라 메모리 공간임
- 공유 메모리를 통해 IPC 구현 시 읽기/쓰기 빈도 높으면 동기화 때문에 기능 구현 복잡 
  → 대안으로 메시지 큐 사용

공유 메모리

- 여러 프로세스에 동일한 메모리에 대한 접근 권한을 부여해 프로세스끼리 통신할 수 있도록 공유 버퍼 생성
- 매개체를 통한게 아니라 메모리 자체 공유 → 불필요한 데이터 복사 오버헤드 없어서 가장 빠름
- 동기화 필요
- 하드웨어 관점에서 RAM을 가리키기도 함
- 중개자 없이 곧바로 메모리에 접근할 수 있어서 IPC중 가장 빠름

메모리 맵

- 공유 메모리처럼 메모리 공유
- 디스크에 저장된 데이터 또는 파일 서버에서 제공한 데이터를 메모리에 매핑
- 주로 파일로 대용량 데이터 공유 시 사용

소켓

- 네트워크 소켓 통신을 통해 데이터 공유
- 클라이언트와 서버 = 소켓을 통해서 통신하는 구조
- 서버 (bind, listen, accept), 클라이언트 (connect)
- TCP, UDP가 있음

0개의 댓글