IPC(IPC : Inter Process Communication)
프로세스 간 통신(IPC)이란?
프로세스 간 데이터를 주고받는 통신 방법을 말한다.
프로세스 간 통신의 종류

1) 공유 메모리나 공유 파일을 이용한 통신
- 일정한 메모리 영역이나 파일을 공유하고 이를 이용하여 데이터를 주고 받는다.
- 데이터를 주고 받는 방법을 프로세스끼리 알아서 결정해야 한다.
- 가장 원시적인 방법
2) 파이프를 이용한 통신
- 프로세스 간 통신을 위하여 운영체제가 제공하는 통신 기법이다.
- 하나의 컴퓨터 내의 프로세스 간 통신에 많이 이용되는 수단이다.
- 보통 부모-자식 프로세스간의 통신에 사용된다.(fork())
3) 소켓을 이용한 통신
- 컴퓨터와 컴퓨터가 네트워크로 연결된 경우 사용된다.
- 같은 컴퓨터 내의 프로세스끼리 소켓으로 통신하게 할 수 있지만, 파이프와 비교했을 때 초기화할 내용도 많고 시스템 자원도 많이 사용하기 때문에 같은 컴퓨터내의 통신으로 소켓을 사용하는 것은 비효율적이다.
프로세스간 통신시 고려해야할 사항
- 상대 프로세스를 어떻게 찾을지?
- 데이터의 크기는 얼마로 할지?
- 데이터 도착 여부를 어떻게 확인할지?
프로세스 간 통신의 분류
1) 통신 방향에 따른 분류 - 양방향 통신, 단양방향 통신, 단방향 통신
2) 통신 구현 방식에 따른 분류 - 동기화 통신, 비동기화 통신
통신 방향에 따른 분류
- 양방향 통신
- 데이터를 양쪽 방향으로 동시에 전송할 수 있는 구조
- 예시 : 소켓을 이용한 통신
- 반양방향 통신
- 데이터를 양쪽 방향으로 전송할 수 있지만 동시 전송은 불가능한 구조
- 특정 시점에 한쪽 방향으로만 전송할 수 있는 구조
- 예시 : 무전기
- 단방향 통신
- 한쪽 방향으로만 데이터를 전송할 수 있는 구조
- 예시 : 공유 메모리 및 공유 파일을 이용한 통신, 파이프를 이용한 통신
프로세스 간 통신의 종류
- 대기가 있는 통신
- 동기화 통신 : 파이프 이용 통신, 소켓 이용 통신
- 데이터를 받는 쪽은 데이터가 도착할 때까지 자동으로 대기 상태
- 대기가 없는 통신
- 비동기화 통신 : 공유 메모리나 공유 파일 이용 통신
- 데이터를 받는 쪽은 바쁜 대기를 사용하여 데이터 도착 여부를 직접 확인
바쁜 대기(busy waiting)
- 데이터를 받는 쪽에서 데이터 도착 여부를 반복적으로 점검하는 것을 말한다.