[운영체제] 프로세스 간 통신(Inter Process Communication, IPC)

김성록·2023년 3월 11일
0

운영체제

목록 보기
6/14

IPC에 대해 설명해보세요.


프로세스 간 통신

  • 프로세스는 독립적인 실행 객체로서, 다른 프로세스의 영향을 받지 않고 서로 간의 통신이 어렵다. 따라서 프로세스 간의 통신을 위해 커널 영역에서 IPC라는 통신 방법을 제공한다. 즉, IPC는 프로세스 간의 통신을 말한다.

IPC의 종류

  • IPC는 크게 두 가지 모델로 나뉜다.

    Shared Memory(공유 메모리)

    • 공유 메모리 방식은 프로세스들이 공유하는 메모리를 이용하여 통신하는 방법이다. 프로세스가 공유 메모리 할당을 커널에 요청하면, 커널은 해당 프로세스에 메모리 공간을 할당하고, 다른 프로세스도 해당 메모리에 접근할 수 있다. 공유 메모리가 설정되면 그 이후의 통신은 커널의 관여없이 가능하다.
    • 장점
      • 커널의 관여 없이 메모리를 직접 사용하여 통신 속도가 빠르다.
    • 단점
      • 데이터를 읽어야 하는 시점을 알 수 없고, 동시에 같은 메모리 위치를 접근하는 상황이 발생할 수 있다. 따라서 동기화 문제에 신경써야 한다.

    Message Passing(메시지 전달)

    • 메시지 전달 방식은 커널이 제공하는 API를 이용해서 커널 공간을 통해 메시지를 주고 받는다. 커널을 통해 메시지를 송/수신자끼리 주고 받으며, 커널에서는 데이터를 버퍼링한다. 프로세스 간의 메모리 공유 없이 가능하다.

    • 장점

      • 커널에서 데이터를 주고 받는 것을 컨트롤할 수 있어 동기화할 필요가 없다.
    • 단점

      • 공유 메모리 모델에 비해 통신 속도가 느리다.
    • 종류

      • Pipe(파이프)

      : 두 개의 프로세스를 파이프로 연결하여 하나의 프로세스는 데이터를 쓰기만 하고 다른 프로세스는 데이터를 읽기만 하며 데이터를 통신한다. 따라서 한 쪽 방향으로만 데이터가 이동하고 주로 부모-자신 간의 단방향 통신으로 사용된다.

      • Message Queue(메시지 큐)

      : 부모-자신 관계가 아니더라도 어느 프로세스 간의 데이터 송신이 가능하다. 양방향 통신이 가능하며, 메시지의 형태는 사용자가 정의하여 사용할 수 있다. 다수의 프로세스가 동시에 데이터를 쉽게 다룰 수 있으며, 비동기 방식이기에 방대한 처리량이 있다면 큐에 넣은 후 나중에 처리할 수 있다.

      • Socket(소켓)

      : 흔히 네트워크 통신 기법으로 많이 사용되는 방법으로, 양쪽 PC에서 각각 임의의 포트를 정하고 해당 포트 간의 대화를 통해 데이터를 주고 받는다. 양방향 통신이 가능하며, 원격에서 프로세스 간의 데이터를 공유할 때 사용한다.

profile
예비 개발자

0개의 댓글