Post

Inter Process Communication(IPC)

프로세스들은 독립적이가나, 협력적이다. 협력 프로세스는 데이터 공유를 포함하여, 프로세스들에게 영향을 주거나 받는다. 프로세스가 협력하는 이유는 정보 공유, 계산 가속화, 모듈성, 편의성 등의 이점이 있기 때문이다. 프로세스가 협력하기 위해서는 프로세스 간 통신 기법을 필요로 한다.

Inter Process Communication(IPC)

IPC는 프로세스들간의 통신하는 방법을 의미한다. IPC는 send/receive를 통해 메세지를 전달하여 통신한다.

프로세스가 통신을 해야한다면 서로간의 통신 링크를 설정하여 send/receive를 통해 메세지를 교환한다.

IPC는 두 가지 유형이 있다.

Communications models

  • 직접 통신(Direct Communication): 프로세스가 서로 직접적으로 주소를 명시하여 메시지를 주고받는다.
  • 간접 통신(Indirect Communication): 메시지 큐나 공유 데이터 구조 같은 중간 엔티티를 통해 메시지가 전송된다.

직접 통신(Direct Communication)

직접 통신(Direct Communication)은 프로세스 간에 서로를 명시적으로 지정하여 공유 메모리를 통해 통신하는 기법이다.

직접 통신의 통신 링크 특징은 다음과 같다.

  • 링크는 서로 인식하여 자동 설정된다.
  • 링크는 정확히 한 쌍의 통신하는 프로세스와 연관된다.
  • 각 쌍 사이에는 정확히 하나의 링크가 존재한다.
  • 링크는 단방향일 수 있지만, 보통은 양방향이다.

간접 통신(Indirect Communication)

간접 통신(Indirect Communication)은 포트를 통해 메시지를 주고 받는다. 각 포트는 고유한 ID가 있고, 프로세스는 같은 포트를 공유할 때만 통신할 수 있다.

간접 통신의 통신 링크 특징은 다음과 같다.

  • 링크는 오직 프로세스들이 같은 포트를 공유하는 경우에만 설정된다.
  • 링크는 여러 프로세스와 연관될 수 있다.
  • 링크는 단방향이거나 양방향이다.

동기화(Synchronization)

메세지 전달은 차단(Blocking) 또는 비차단(Non-Blocking)일 수 있다.

Blocking

차단은 동기로 간주된다. 차단 전송은 송신자가 수신자에게 메세지를 보낼 때, 수신자에게 메세지가 수신될 때까지 차단된다. 차단 수신은 수신자가 이용 가능한 메세지가 있을 때까지 차단된다.

Non-Blocking

비차단은 비동기로 간주된다. 비차단 전송은 송신자가 메세지를 보내고 다른 작업을 계속한다. 비차단 수신은 메시지를 수신할 때, 수신할 메시지가 없더라도 대기 상태로 머무르지 않고 즉시 반환한다. 메세지가 없을 경우에는 특별한 값이나 NULL 값을 반환하여 수신할 메세지가 없음을 알린다.

Buffering

통신 프로세스 간 교환되는 메세지는 임시 대기열(Buffering)에 존재한다.

버퍼링의 크기에 따라 메세지 전달은 차단될 수 있고 비차단 될 수 있다.

  • 버퍼링 크기가 0이면, 발신자는 수신자가 메세지 받을 때까지 차단된다.
  • 버퍼링 크기가 유한하면, 버퍼링의 크기가 다 차면 버퍼링의 공간이 확보될 때까지 발신자는 차단된다.
  • 버퍼링 크기가 무한하다면, 발신자는 절대 차단하지 않는다.

Ref

[1] Operating System Concepts(Silberschatz, Galvin and Gagne)