Inter Process Communication(IPC)

강준호·2021년 12월 3일
0

운영체제

목록 보기
6/14

프로세스 간 통신이란

  • Process들 간에 데이터 및 정보를 주고 받기 위한 메카니즘
  • 커널에서 시스템 콜 형태로 IPC 도구 제공
  • 프로세스 협력 모델을 구현하기 위해서 IPC가 필요함

IPC - 공유메모리

Ex) faster PID, slower PID

  • Read and Write 방식
  • 프로세스의 특정 메모리 영역을 공유 ex) shared Memory
  • 공유메모리가 설정되면 그 이후의 통신은 커널 도움없이 바로 접근 가능

단점

  • 공유 메모리를 위해서 메모리 일부를 오직 그 목적으로 사용해야함.
  • 동기화 문제있음. => 누군가가 메모리 영역에 접근하는 순서를 정해줘야함 => Locking이나 세마포어가 대안

IPC - 메세지 교환

  • Send and Receive 방식
  • 프로세스 간 메모리 공유없이 동작가능
  • 메세지를 송/수신자들끼리 주고받음
  • 클라이언트 -서버의 통신 에서 사용

장점

  • 메모리 이슈없음
  • 커널이 동기화제공함

단점

  • 커널을 항상 통해야함. => context switching 발생 => 성능 안좋아짐

디테일한 IPC 방법들

Pipe 파이프

  • 하나의 프로세스가 다른 프로세스로 데이터를 직접 전달하는 방법
  • 한쪽 방향으로만 데이터가 이동
  • 1대1의 의사소통만 가능
  • 보내진 순서대로만 받음
  • 용량제한 있어서 꽉차면 못씀

시그널

  • 특정 프로세스에게 커널을 통해 이벤트를 전달하는 방법

송신 프로세스:

프로세스의 여러신호 중 하나를 특정 프로세스에게 보냄. 이는 수신하는애 의사와 상관없이 보냄. (마치 비동기적인 interrupt)

수신 프로세스:

신호 종류에 따라서 다른 대응. (interrupt와 달라)

  • 무시
  • 단순히 신호 붙잡아둠
  • 특정 처리 루틴으로 처리

메세지 큐

  • 메세지 패싱의 메세지 + shared 메모리의 큐 메모리
  • 고정 크기 메세지의 연결리스트를 이용해서 통신함
  • 메세지 형식! 으로 shared memory 큐에다가 데이터를 써주고,
    프로세스들이 메세지 단위로 B와 C에서 읽어들임.
  • 메세지는 링크드 리스트로 되어있음으로 선입 선출
  • 여전히 동기화가 필요

소켓

  • 데통네의 TCP/UDP 소켓과 동일
  • 포트를 이용해서 통신
  • 포트 번호를 이용해서 상대 프로세스의 소켓을 찾아감

- 다른 IPC와 달리 프로세스 위치에 Independent

  • remote 의 경우 IP주소 + 포트번호

0개의 댓글