본문 바로가기
Operating System

프로세스간 통신(IPC - InterProcess Communication)

by 기리의 개발로그 2015. 7. 8.


프로세스간 통신(IPC)


프로세스들간의 상호 자료와 정보를 교환하는 통신 방법.



목적


정보공유 : 동일한 정보에 대한 병행 접근(공유 파일 등)

계산 가속화 : 특정 태스크의 작은 분할 태스크로의 분할 실행

모듈성 : 별도의 프로세스나 스레드로 나누어 모듈식 형태의 시스템 구성

편의성 : 한 순간에 많은 작업 수행



통신 방법



1. Pipe


하나의 프로세스는 읽기만 하고 다른 하나의 프로세스는 쓰기만 할 수 있다. 한 쪽 방향으로만 통신이 가능하기 때문에

Half-duplex (반이중) 통신이라고 한다.



Full-duplex (전이중) 통신을 가능하게 하기 위해 두 개의 파이프를 만들어야 한다.


반이중 통신이므로 2개의 Pipe(읽기 전용, 쓰기 전용)가 필요하며 구현이 매우 복잡해진다.



2. Message Queue


Message Queue는 메모리 공간으로, 데이터에 번호를 붙임으로써 

여러 개의 프로세스가 동시에 데이터를 쉽게 다룰 수 있다.



3. Shared Memory



데이터 자체를 공유하도록 하는 방법이다.

공유 메모리는 프로세스간 메모리 영역을 공유해서 사용할 수 있도록 허용한다.

프로세스가 공유메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당한다.

공유 메모리는 중개자가 없이 바로 메뫼에 접근할 수 있기 때문에 IPC 중 가장 빠르게 작동한다.


하지만 공유 메모리 세그먼트의 크기를 확인해야 하며 

메세지 전달 방식이 아니기 때문에 데이터를 읽어야 하는 시점을 알 수 없다.



4. Semaphore



자원에 대한 접근을 제어하기 위한 목적으로 사용된다.

즉 세마포어 자체가 데이터를 공유하기 위한 어떤 공간을 제공하지 않는다.



5. Socket



컴퓨터끼리의 통신을 도와주기 위한 통신계층.

컴퓨터 - 컴퓨터 간 통신은 실제로 A 컴퓨터의 프로세스 - B 컴퓨터의 프로세스 간 통신이다.


반응형

'Operating System' 카테고리의 다른 글

SISD / SIMD / MISD / MIMD  (0) 2022.03.02
인터럽트(Interrupt)  (0) 2015.08.14
시스템 콜(System Call)  (0) 2015.08.14
프로세서 vs 프로세스  (0) 2015.07.20
Process(프로세스) vs Thread(스레드)  (0) 2015.07.06

댓글