IPC(프로세스 간 통신)이란 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로를 뜻한다.

process는 완전히 독립된 실행객체이기 때문에 다른 프로세스의 영향을 받지 않는다는 장점이 있지만, 그렇기 때문에 서로간에 통신을 할수가 없다. 이를 해결하기 위해 커널 영역에서 IPC(프로세스 간 통신)을 제공하게 되고, 프로세스는 커널이 제공하는 IPC설비를 이용해서 프로세스간 통신을 할 수 있게된다.

이 IPC의 모델은 크게 두가지가 있다.

Untitled

Message Passing

필요한 자원을 그때 그때 커널을 거쳐서 Message를 전달하는 방식이다.

프로세스 A에서 커널로 복사 → 커널에서 프로세스 B로 복사 기존에 있는 커널에 복사하면 되는 것이기에 쉽게 구현할수 있다.

그러나 커널을 거치는 것이기 때문에 매번 시스템 호출을해야 하고, 커널의 한 구석에는 이를 저장하기 위한 공간이 필요하고, 직접 전달하는 방식이 아닌 2번에 걸쳐서 전달하는 방식이라 느리다.

그래도 적은 양의 데이터를 전달하는 경우에 한해서는 사용되는 방법이다.

Shared Memory

shared memory(공유 메모리)로 프로세스간에 공유가 되도록 설정해놓은 메모리로 모든 프로세스가 접근이 가능하다.

공유 메모리의 경우에는 처음 생성할 때만 시스템 호출을 사용하기 때문에 속도가 빠르다.(공유메모리 접근은 커널을 통하는게 아니라는 점도 속도에 영향을 미친다.) 속도가 빠르기 때문에 아무래도 많은 양의 데이터를 전달하는 경우에 많이 사용된다.

그러나 단점으로 동기화(synchronization)기술이 매우 중요하다.