Etc./CS

[CS 스터디] IPC (Inter Process Communication)

Jonnie 2022. 5. 20. 11:51

IPC (Inter Process Communication)

  • 서로 독립된 프로세스들 간의 통신을 가능하게 함
  • 통신이 가능하다 → 데이터를 주고 받을 수 있다 → 공유하는 메모리가 필요하다 → IPC 활용
  • How? → 커널이 제공하는 IPC 설비를 이용 (커널: 운영체제의 핵심적인 부분으로, 다른 모든 부분에 여러 기본적인 서비스를 제공)
  • 프로세스간 데이터 동기화 및 보호를 위해 세마포어와 뮤텍스 사용
    • 세마포어와 뮤텍스
      • 세마포어: 공유된 자원의 데이터 혹은 임계영역(Critical Section) 등에 여러 프로세스 혹은 쓰레드가 접근하는 것을 막아줌(즉, 동기화 대상이 하나 이상)
        • 임계영역(Critical Section): 다중 프로그래밍 운영체제에서 여러 프로세스가 데이터를 공유하면서 수행될 때 각 프로세스에서 공유 데이터를 접근(Access)하는 프로그램 코드 부분
      • 뮤텍스: 공유된 자원의 데이터 혹은 임계영역(Critical Section) 등에 하나의 프로세스 혹은 쓰레드가 접근하는 것을 막아줌(즉, 동기화 대상이 하나)

IPC 종류

1. PIPE

: 통신을 위한 메모리 공간(버퍼)을 생성하여 데이터를 주고 받을 수 있게 하는 방법

  • 프로세스간 단방향 통신 중 한 방법: 하나의 프로세스는 쓰기만, 다른 하나는 읽기만 가능. 반이중 통신이라고도 부름
  • 양쪽으로 송/수신을 하고 싶다면 2개의 파이프가 필요
  • 장점: 사용이 간단하여 단순한 데이터 흐름에서 효율적인 사용 가능
  • 단점: 전이중 통신(양쪽으로 통신)할 때는 구현이 복잡
  1. 익명 PIPE (Anonymous pipe)
    • 부모 프로세스 - 자식 프로세스 간 통신
    • : 부모 프로세스에서 fork 함수를 통해 생성한 자식 프로세스와 통신
  2. 통신할 프로세스가 명확한 일반적인 파이프를 의미
  3. Named PIPE(FIFO)
    • 전혀 모르는 상태의(외부) 프로세스들 간 통신
    • 파이프에 이름을 붙여서 외부 프로세스와의 통신 가능

2. Message Queue

  • 메시지 지향 미들웨어(Message Oriented Middleware: MOM)을 구현한 시스템
    • 메시지 지향 미드웨어: 비동기 메시지를 사용하는 응용 프로그램들 사이에서 데이터를 송수신하는 것
  • 입출력 방식은 Name PIPE와 동일

Named 파이프와 메시지 큐의 차이

메시지 큐는 네임드 파이프와 달리 여러 개의 프로세스가 동시에 데이터를 쉽게 다룰 수 있다

  • 파이프는 데이터의 흐름, 메시지 큐는 메모리 공간이기 때문에 메모리 큐에서는 데이터에 번호를 붙여 여러 데이터를 쉽게 다룰 수 있다

3. 공유 메모리

  • kernel space에 메모리 공간을 만들고, 해당 공간을 변수처럼 사용
  • 메시지 큐처럼 FIFO 로직이 아니라, 해당 메모리 주소를 변수처럼 접근하는 방식
  • 공유 메모리 key를 가지고, 여러 프로세스가 접근 가능
  • 중개자 없이 곧바로 메모리에 접근할 수 있어 IPC 중 가장 빠르게 작동

4. 메모리 맵

오픈된 파일에 한해 메모리를 공유하는 방법

  • 이미 열려있는 파일에 접근하여 또 메모리에 올릴 경우 메모리가 낭비되므로 기존의 메모리 공간에 같이 접근
  • 주로 파일로 대용량 데이터를 공유할 때 사용

File Open: 파일이 오픈되면 데이터가 메모리에 올라감 → 해당 메모리에 접근하여 데이터 읽고 쓰기 가능

5. 소켓

네트워크 소켓 통신을 통해 데이터 공유하는 방법

소켓 통신: 양쪽 PC에 각각 임의의 포트를 정하고 포트간 대화를 통해 데이터를 주고 받는 방식

  • 원격에서 프로세스 간 데이터 공유할 때 사용

출처.

PIPE https://mangkyu.tistory.com/9

파이프, 메시지 큐, 공유 메모리 차이 https://velog.io/@zero_mountain/운영체제-프로세스-구조-5

소켓

https://bluemoon-1st.tistory.com/22

세마포어와 뮤텍스 https://jwprogramming.tistory.com/13