[Back-end] 프로세스간 통신

Geun·2022년 3월 10일
0

Back-end

목록 보기
20/74

IPC (Inter Process Communication)

IPC는 프로세스들간에 서로 데이터를 주고받는 행위 또는 그에대한 방법을 의미한다.


그림처럼 Process는 완전히 독립된 실행객체이다.
서로 독립되어 있다는 것은 다른 프로세스의 영향을 받지 않는다는 장점이 있다.
그런데 독립되어 있는 만큼 별도의 설비 없이는 서로 통신이 어렵다는 문제가 있다.
이를 보완하기 위해서 커널영역에서 IPC라는 내부 프로세스간 통신을 제공하고, 프로세스는 커널이 제공하는 IPC 설비를 이용해서 프로세스간 통신을 할 수 있게된다.

  • 커널: 메모리에 상주하고 있는 운영체제 부분을 의미한다.

IPC 표준

  • Ststem V IPC
    오래된 버전이다. 그 역사가 긴 만큼 다른 기종간의 코드 호환성을 보장해 주지만 API가 오래되었으며 함수명도 명확하지는 않다.

  • POSIX IPC
    비교적 최근에 개발된 표준이다. 직관적인 API들로 구성되어 있어 상대적으로 사용하기 쉽다.


IPC 종류

IPC에는 여러가지 종류가 있지만 메모리 공유, 메시지 전달을 기본적이고 핵심적인 IPC로 취급한다.

메모리 공유 (Shared Memory)

프로세스끼리 특정 메모리 영역을 공유하며 상호간 통신하는 방법이다.

데이터 자체를 공유하도록 지원한다.
한 프로세스에서 변경한 메모리 공간의 내용을 다른 프로세스에서 접근할 수 있다.
공유 메모리는 커널에서 관리된다.

  • POSIX Shared Memory
  • Memory-Mapped File

메시지 전달 (Message Passing)

Message Passing은 커널이 제공하는 API를 이용해서 커널 공간을 통해 통신한다.
프로세스끼리 메시지를 전달할 때 메시지 큐에 넣어두며 송신 프로세스는 큐에 enqueue, 수신 프로세스는 큐에 dequeue하며 상호간 통신한다.
메시지 큐는 커널 단에서 관리한다.

  • 파이프 : 쉘에서 사용하는 파이프를 의미한다.
  • 소켓(TCP/IP) : 로컬에서도 통신 가능하며 원격에서도 통신이 가능하다.

그 외 방법

  • 파일을 통한 통신
  • 신호(signal) : 거의 사용하지 않는다.
  • 세마포어(Semaphore)

참고자료

https://velog.io/@yanghl98/OS%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-IPC%EB%9E%80
https://been2.tistory.com/23?category=798940
https://jwprogramming.tistory.com/54
https://profq.tistory.com/34

0개의 댓글