IPC (Inter Process Communication)

문지원(JiwonMoon)·2022년 7월 3일
0
post-thumbnail

🤔 목적

컴퓨터공학의 기초가 되는 cs지식을 되새기면서 이 후 있을 기술면접을 대비 하고자한다.

IPC(Inter Process Communication)란?

IPC는 프로세스 간 통신(Inter-Process Communication)의 약자이다. 프로세스는 서로 간섭되어서도 안되고 독립적인 객체로 존재하므로 프로세스끼리 통신하려면 여러가지 방법을 사용해야 한다. 그런 방법들을 IPC라고 한다.

즉, IPC는 "프로세스 간 통신" 프로세스들끼리 서로 데이터를 주고받는 행위 또는 그에 대한 방법을 뜻한다.

위 그림처럼 Process는 완전히 독립된 실행객체이다. 서로 독립되어 있다는 것은 다른 프로세스의 영향을 받지 않는다는 장점이 있다. 그러나 독립되어 있는 만큼 별도의 설비가 없이는 서로간에 통신이 어렵다는 문제가 있게 된다.

이를 위해서 커널 영역에서 IPC라는 내부 프로세스간 통신을 제공하게 되고, 프로세스는 커널이 제공하는 IPC설비를 이용해서 프로세스간 통신을 할 수 있게 된다.

커널(Kernel)이란?
운영체제 자체도 소프트웨어이기 때문에 메모리에 올라가야 사용할 수 있다. 하지만 메모리 공간의 제약으로 운영체제 중 항상 필요한 부분만을 메모리에 올려놓고, 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 된다. 이 때 메모리에 상주하는 운영체제의 부분을 커널이라 한다. (보통은 운영체제라고 하면 커널을 말하게 된다.)
즉, 커널은 메모리에 상주하는 부분으로써 운영체제의 핵심적인 부분을 뜻한다.

IPC의 종류

  1. 메시지 전달 (Message Passing)
    커널이 제공하는 API를 이용해서 커널 공간을 통해 통신한다. 메시지 큐(Mesage Queue)를 사용하여 송신 프로세스는 큐에 enqueue, 수신 프로세스는 큐에 dequeue 하며 상호간 통신한다. 메시지 큐는 커널 단에서 관리된다.
  • 파이프 (쉘에서 사용하는 그 파이프임)
  • 소켓 (TCP/IP) - 로컬에서도 통신이 가능하며 원격에서도 통신이 가능하다. (IP : 127.0.0.1일 경우 로컬에서 패킷을 통해 프로세스끼리 통신하기도 한다.)
  1. 메모리 공유 (Shared Memory)
    프로세스끼리 특정 공통의 메모리 영역을 공유하며 상호간 통신하는 방법이다.

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

위 그림 왼쪽 : Message Passing 방법, 오른쪽 : Shared Memory 방법

이 외
이러한 IPC 통신에서 프로세스 간 데이터를 동기화하고 보호하기 위해 세마포어(Semaphore)와 뮤텍스(Mutex)를 사용한다. (공유된 자원에 한번에 하나의 프로세스만 접근시킬 때)

References (참고 자료)

0개의 댓글