IPC (Inter-Process Communication / 프로세스 간 통신)
프로세스 간 통신을 위한 IPC 정리
운영체제스레드는 같은 프로세스 안에서 메모리를 공유하며 쉽게 소통한다.
그러나 프로세스는 운영체제로부터 완전히 독립된 메모리 공간을 받기 때문에 독립적으로 사는 프로세스들은 서로 대화하기 위해 IPC를 사용한다.
💬 비유: 옆집과 소통하기
- 스레드 간 통신: 같은 집(프로세스)에 사는 가족(스레드)끼리는 그냥 거실에서 대화하면 된다. (공유 메모리)
- 프로세스 간 통신(IPC): 옆집 사람과는 벽에 대고 소리쳐도 들리지 않는다. 그래서 통신 수단이 필요하다.
- 우편함(파일 시스템), 전화(소켓), 비밀 통로(공유 메모리)
이처럼 IPC는 독립된 프로세스들이 데이터를 주고 받고, 서로의 작업을 동기화할 수 있도록 OS가 제공하는 다양한 통신 방법의 모음이다.
IPC 기법들
1. 파이프
- 한쪽에서는 데이터를 쓰기만 하고 다른 한쪽에서는 읽기만 하는, 단방향 통신 채널
- 마치 두 프로세스 사이에 좁은 관을 연결한 것과 같다
- 부모-자식 프로세스처럼 밀접한 관계에서 많이 사용
2. 소켓
- 가장 범용적인 기법, 같은 컴퓨터 안은 물론 네트워크를 통해 서로 다른 컴퓨터에 있는 프로세스끼리도 통신할 수 있게 해준다
3. 공유 메모리
- 가장 빠른 방법, 운영체제가 특별한 메모리 공간을 만들어, 여러 프로세스가 이 공간을 자신의 주소 공간처럼 접근할 수 있도록 허용한다.
- 위에 언급한
비밀 통로비유처럼, 데이터를 복사할 필요 없이 바로 공유하므로 매우 빠르다.- 그러나 여러 프로세스가 동시에 접근할 수 있으므로 뮤텍스 같은 동기화 기법을 반드시 함께 사용해 레이스 컨디션을 막아야 한다.