IPC (Inter Process Communication)

IPC의 종류

Same host

pipes, FIFOs, semaphores, shared memory

Different host

sockets

 

Communication

process1 -> channel(Same host) -> process3

 

pipe = 하나의 프로세스로부터 데이터 흐름을 다른 프로세스로 연결

한프로세스의 출력을 다른 프로세스의 입력으로 붙이거나 파이프로 연결

파이프 함수는 호출자가 순차적으로 생성된 파일 디스크립터를 통해 접근할수 있는 통신 버퍼 생성

 

Shared memory = 여러 프로세스들이 동일 메모리영역에서 읽고 쓸 수 있도록 제공

연관이 없는 프로세스들이 동일 물리적 메모리에 액세스

동기화 기능이 없어서 공유메모리에 대한 액세스를 동기화 해야함

 

Message Queue = 다른 프로세스들 간에 메시지를 주고받을 수 있는 IPC 메커니즘

파이프를 열고 닫을 필요가 없고, 송신프로세스, 수신프로세스에 대해 독립적으로 존재

 

부모-자식간은 Pipe 다른 부모-자식은 나머지것들

dup = copy fdp dup2 = change fdp

 

FIFO = open을 통해서 연 뒤 READ, WRITEFIFO에 액세스, 권한이 있음

mkfifo = Make FIFO file

unlink = REMOVE FIFO

 

Shared Memory

연관이 없는 두 프로세스가 동일 메모리에 액세스

read/write로 프로세스간 데이터를 주고받음

get key(ftok) -> get SM id(shmget) -> get start address(shmat) -> read/write -> free(remove)(shmdt) -> ipcrm(remove SM)(shmctl)

 

'SW > LINUX' 카테고리의 다른 글

Server & Client  (0) 2017.09.05
NETWORK (네트워크)  (0) 2017.09.05
GDB  (0) 2017.09.05
버전관리, SVN  (0) 2017.09.05
GCC compiler (내부 매크로, Makefile)  (0) 2017.09.05