눈송이의 개발생활

[운영체제]프로세스 사이 통신 - IPC(Inter Process Communication) 본문

Computer Science/Operating System

[운영체제]프로세스 사이 통신 - IPC(Inter Process Communication)

꾸지새미언니

IPC(Inter Process Communication)

  • 프로세스 간 통신
  • 컴퓨터 내부에서 프로세스들끼리 효율적으로 정보를 주고 받기 위한 통신의 일존
  • 프로세스는 통신을 위한 별도의 공간 필요
    • 커널 영역에서 IPC 제공 → IPC 설비 이용해서 프로세스 간 통신 가능

 

종류

1️⃣ 공유 메모리(Shared Memory)

  • 공유 메모리가 데이터 자체를 공유하도록 지원
  • 여러 프로세스가 메모리 영역 공유해서 사용할 수 있게 허용
  • 프로세스가 공유 메모리 할당을 커널에 요청하면 커널이 해당 프로세스에 메모리 공간 할당
  • 공유 메모리는 모든 프로세스가 접근 가능
  • 메모리 자체를 공유하기 때문에 불필요한 데이터 복사의 오버헤드 발생 
  • IPC 방법 중 가장 빠름 (중개자없이 바로 메모리에 접근할 수 있기 때문)
  • 동기화 필요
  • 대량의 정보를 다수의 프로세스에 배포 가능
  • 프로세스 간 Read, Write 모두 필요할 때 사용

2️⃣ 파이프(Pipe)

  • 통신을 위한 메모리공간(버퍼) 생성해서 프로세스가 데이터를 주고받게 해줌
  1. 익명 파이프(Anonymous Pipe)
    • 일반적인 파이프
    • 통신할 프로세스가 명확하게 알 수 있는 경우 사용(부모-자식 or 형제 프로세스끼리)
    • 하나의 파이프는 2개의 프로세스 연결
      • 한 끝은 데이터를 쓰기만 가능
      • 한 끝은 데이터를 읽기만 가능
    • 송/수신 모두 원하면 2개의 파이프 연결해야 함
    • 단점
      1. 반이중 통신 - 송/수신 모두 하려면 pipe 2개 만들어야 하는데 구현 복잡
      2. 전이중 통신 해야하는 상황일 때 낭비 심함
  2. 네임드 파이프(Named Pipe)
    • 전혀 모르는 상태의 프로세스들 사이의 통신에 사용
    • 프로세스 통신을 위해 이름이 있는 파일 사용
    • 여러 파이프 동시에 사용 가능
    • 외부 프로세스 통신 가능
    • 단점
      1. 반이중 통신 - 송/수신 모두 하려면 pipe 2개 필요

3️⃣ 소켓(Socket)

  • 네트워크 소켓 통신을 통해 데이터 공유
  • 데이터 교환을 위해 양쪽 PC에서 각각 임의의 포트의 정하고 해당 포트 간의 대화를 통해 데이터 주고 받는 방식
  • PORT를 담당하는 소켓은 각각 하나의 프로세스
  • 1:1로 데이터 주고 받는 방식
  • 원격에서 프로세스 간 데이터를 공유할 때 사용
  • 전이중(Full Duplex) 통신 가능
  • 서버/클라이언트 환경 구축하는데 용이
  • 중대형 어플리케이션에서 주로 사용

4️⃣ 메시지 큐(Message Queue)

  • 입출력 방식은 named pipe와 동일
  • 메시지 큐 == 메모리 공간
  • 다수의 프로세스 간 메시지 전달 가능
  • 사용할 데이터에 번호를 붙이면서 여러 프로세스가 동시에 데이터를 쉽게 다룰 수 있음
  • 메시지의 접근을 위해서는 키(key)가 필요
  • 단방향

5️⃣ 메모리 맵(Memory Map)

  • 열린 파일 메모리에 맵핑시켜 공유하는 방식 (공유 매개체 = 파일 + 메모리)
  • 파일로 대용량 데이터를 공유해야 할 때 사용
  • 파일의 크기는 메모리 맵 파일 사용 이전 or 이후에만 바꿀 수 있음

6️⃣ RPC(Remote Procedure Call)

  • 분산 네트워크 망에서 많이 사용됨
  • 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게 하는 프로세스 간 통신 기술
  • 분리된 PC에 저장된 데이터를 마치 내 PC에 존재하는 것처럼 데이터를 가져와 사용하는 통신 방식

 

  Shared Memory PIPE Named PIPE Socket Message Queue Memory Map
사용
시기
다른 프로세스와 양방향 통신 부모 자식 간 단방향 통신 다른 프로세스와 단방향 통신 다른 시스템 간 양방향 통신 다른 프로세스와 단방향 통신 다른 프로세스와 양방향 통신
공유
매개체
메모리 파일 파일 소켓 메모리 파일 + 메모리
통신
단위
구조체 Stream Stream Stream 구조체 페이지
통신
방향
양방향 단방향 단방향 양방향 단방향 양방향
통신  범위 동일 시스템 동일 시스템 동일 시스템 동일 + 외부 시스템 동일 시스템 동일 시스템



참고
https://dar0m.tistory.com/233
📖면접을 위한 CS 전공지식 노트

Comments