IPC(Inter Process Communication)

sojukang·2022년 8월 7일
0

IPC(Inter Process Communication)

무엇인가?

하나의 컴퓨터 안에서 실행 중인 서로 다른 프로세스 간에 발생하는 통신

왜 쓰는가?

프로세스는 독립적인 주소 공간을 가지기 때문에 프로세스가 다른 프로세스의 주소 공간을 참조할 수 없다. 따라서 프로세스 간 협력하려면 운영체제가 제공하는 협력 메커니즘인 IPC가 필요하다.

특징

IPC는 서로 다른 프로세스 간 통신하므로 동기화를 보장해주어야 한다. 공유 데이터를 서로 다른 두 프로세스가 사용하면 데이터의 불일치 문제가 발생할 수 있기 때문이다.

대표적인 방식

대표적인 방식으로 메시지 전달(Message Passing) 방식과 공유메모리(Shared Memory) 방식이 있다. 이 두 방식의 차이는 프로세스 사이에 공유 데이터(Shared Data)를 사용하는가, 그렇지 않은가에 있다.

메시지 전달(Message Passing)

  • 무엇인가?: 프로세스 간에 공유 데이터를 일절 사용하지 않고 메시지를 주고받으면서 통신하는 방식이다.

  • 종류는?: 메시지의 전송 대상이 다른 프로세스인지 메일박스라는 일종의 저장공간이지에 따라 직접통신과 간접통신으로 나뉜다. 두 방식의 차이는 연산의 인터페이스 차이일 뿐 구현은 커널의 중재에 의해 거의 동일하다.

직접통신(Direct Communication)

통신하려는 프로세스의 이름을 명시적으로 표시한다. 두 프로세스 사이에 링크가 생성되어 할당된다.

  • Anonymous Pipe
    • 한쪽 방향으로만 통신이 가능한 반이중 통신
    • 부모, 자식 프로세스 사이 같은 단순한 데이터 흐름에 쓰인다.
  • Named Pipe(FIFO)
    • 전혀 모르는 상태의 프로세스 사이 통신에 사용한다. 이를 위해 이름이 필요하다.
    • 반이중 통신이다.

간접통신(Indirect Communication)

메시지를 메일박스(Mail Box) 또는 포트로부터 전달받는다. 각 메일박스는 고유의 ID가 있으며 메일박스를 공유하는 프로세스들만 서로 통신할 수 있다.

공유메모리(Shared Memory)

프로세스들이 주소 공간의 일부를 공유한다. 운영체제는 공유메모리를 사용하는 시스템콜을 지원하여 서로 다른 프로세스들이 그들의 주소 공간 중 일부를 공유할 수 있도록 한다.
주고 공간이 물리적 메모리에 매핑될 때 동일한 물리적 메모리 주소로 매핑된다.

장단점

  • 프로세스 간 통신을 수월하게 하는 인터페이스 제공
  • 중개자 없이 곧바로 메모리에 접근할 수 있어서 IPC 중에서 가장 빠르게 작동
  • 데이터 일관성 문제 발생 가능

기타 방식

메모리 맵

공유 메모리 처럼 열린 파일을 메모리에 매핑시켜서 공유한다. 주로 파일로 대용량 데이터를 공유할 때 사용한다.

소켓

네트워크 소켓 통신을 통해 데이터를 공유한다. 클라이언트와 서버가 소켓을 통해 통신하는 구조로, 원격에서 프로세스 간 데이터를 공유할 때 사용한다.

참고

운영체제와 정보기술의 원리
gyoogle.dev

profile
기계공학과 개발어린이

0개의 댓글