노트
메시지 전달 IPC만을 제공하는 프로그래밍 언어가 많다. Go 언어는 공유 메모리조차도 메시지 전달 방식으로 구현돼 있다. Go 언어에는 이를 잘 나타낸 다음과 같은 슬로건이 있다. “메모리 공유로 정보 교환을 하지 말고, 정보 교환으로 메모리 공유를 하라” 비슷한 예로 메시지 전달 방식으로만 프로세스 간 정보 교환을 하는 얼랭 언어가 있다.
이외에도 메시지 전달 IPC 방식을 구현한 다양한 기술이 있다. 여기서 현대적인 운영체제에서 널리 쓰이는 파이프와 소켓, 메시지 큐에 대해 살펴보자.
파이프
파이프는 가장 간단한 형태의 IPC다. 동기적으로 작업 간에 정보를 쉽게 전송할 수 있다. 이름에서 알 수 있듯 파이프는 작업 간의 단방향 데이터 흐름을 정의한다. 단방향이므로 데이터를 보내는 쪽과 읽는 쪽이 정해져 있다. 양방향의 데이터 교환이 필요하다면 두 파이프를 사용해야 한다.
파이프 IPC는 수도관을 생각하면 이해하기 쉽다. 수도관 한쪽에 고무 오리를 넣으면 이 고무 오리는 수류를 따라 파이프의 반대쪽까지 도달할 것이다.