IPC(Inter Process Communication)

GamzaTori·2024년 3월 5일
0

Operating System

목록 보기
6/7

IPC(Inter Process Communication)

프로세스간 통신하는 규칙에 대한 문제로 프로세스간 데이터를 주고받는 행위 또는 방법을 뜻한다

💡 IPC 통신은 크게 2가지로 분류할 수 있다 !

메시지 전달(Message Passing)공유메모리(Shared Memory
방식커널을 통해 메시지를 전달하는 방식으로 데이터를 주고받음공유 메모리 영역을 구축하여 데이터를 주고받음
장점커널을 이용하기 때문에 비교적 구현이 쉬움커널 의존도가 낮기 때문에 속도가 빠르고 통신이 자유로움
단점시스템 콜로 인한 오버헤드 발생자원과 데이터를 공유하기 때문에 동기화 이슈 발생
IPC 기법Pipe, Signal, Message Queue, Socket 등Shared Memory, Semaphore 등

PIPE

  • 상호 관련 있는 프로세스 간 통신에 사용
  • 2개의 프로세스 입출력을 직렬 연결하여 하나의 공유 페이지를 제공
    - e.g.) ls | pr : ls를 수행한 표준출력이 pr의 표준 입력으로 전달됨
  • 한쪽 방향으로만 통신이 가능한 특징으로 반이중통신 이라고도 불린다
    - 송수신을 모두 하기 위해서는 파이프를 두개 만들어야한다
  • 부모 자식 간에 단방향 통신으로 자주 사용된다
  • 기본적으로 읽기, 쓰기는 Block mode로 작동되어 각각 작업이 끝난 이후에 다른 작업이 실행된다

    장점

    • 하나의 프로세스는 읽기만, 다른 하나의 프로세스는 쓰기만 하는 단순한 데이터 흐름에 간단하게 사용할 수 있다.

    단점

    • 송수신을 모두 하기 위해서는 PIPE를 두 개 구현하는 것이 복잡하다.
    • Buffer가 상대적으로 작기때문에 오버플로우가 발생할 확률이 높다

Named PIPE

  • 장치 파일을 통해, 상호 관련 없는 프로세스 간 통신에 사용
  • 통신할 프로세스가 명확한 경우 사용
  • 통신 방식은 PIPE와 비슷하다

Signal

  • 실시간으로 프로세스에 이벤트 발생을 알리기 위해 사용
  • 프로세스 ID를 통해 특정 프로세스에 메시지를 전달하는 방식

Message Queue

  • FIFO 방식으로 데이터 송수신이 이루어지며 커널에서 관리
  • 메모리 공간을 사용하여 통신한다
  • Message Queue에 쓸 데이터에 번호를 사용함으로써 다수의 프로세스가 동시에 데이터에 접근할 수 있다

장점

  • 비동기 방식으로 처리량이 많다면 큐에 넣어놨다가 나중에 처리할 수 있다
  • 다수의 프로세스들과 통신할 수 있다

단점

  • 데이터가 많을수록 메모리를 많이 사용한다
  • 큐에 데이터를 삽입 / 삭제 할 때 오버헤드가 발생할 수 있다

Socket

  • 원래 소켓은 네트워크 통신을 위한 기술로써 IPC로 활용하기 위한 목적은 아니지만 충분히 활용 가능하다

기본적으로 소켓 통신 규격을 따른다

  • 양방향 통신이 가능하다
  • 패킷 단위로 데이터를 송수신한다

Shared Memory

커널 공간에 메모리 공간을 만들고 해당 공간을 프로세스간 공유하는 방법

장점

  • 곧바로 메모리에 접근할 수 있기 때문에 IPC중 가장 빠르다

단점

  • 메시지 전달 방식이 아니기 때문에 데이터를 읽어야하는 시점을 알 수 없다
    커널에 종속적이기 때문에 커널에서 허용하고 있는 공유메모리 사이즈에 제한된다

Semaphore

  • 프로세스들의 동시적인 Critical Section 진입을 막는데 목표로 하고 있다
  • 위의 IPC 통신 기법들과 달리 세마포어는 프로세스 간 데이터를 동기화하고 보호하는 목적으로 사용된다
  • 공유 자원에 대한 접근을 하나의 프로세스만 가능하도록 하는 기능을 통해 데이터의 일관성과 신뢰성을 보장한다

프로세스 동기화에 대해 더 궁금하다면

뮤텍스세마포어
대상스레드프로세스
목적공유 자원을 여러 스레드의 접근으로부터 보호공유 자원을 여러 프로세스의 접근으로부터 보호
상태0, 1 (이진 세마포어)0 이상의 임의의 정수값
용도mutual exclusion(lock/unlock)Resource Counting

ref IPC

profile
게임 개발 공부중입니다.

0개의 댓글