IT지식/Computer Science

프로세스간의 통신 IPC(Inter-Process Communication)

맨땅에헤딩개발자 2025. 1. 30. 19:08

프로세스의 개념에 대하 간략히 알고오시면 도움이 됩니다.

https://steady-snb.tistory.com/50

 

프로세스의 메모리 할당 구조 및 역할

프로세스(process)란? 기계어로 이루어진 .exe파일을 우리는 프로그램이라 하고 실행을 위해 메모리위에서 재구성 하는 것을 프로세스라 한다. 운영체제가 제공하는 메모리 공간은 크게 4가지로

steady-snb.tistory.com

 

프로세스는 각자 독립적인 주소 공간을 가지고 있어서 다른 프로세스간의 통신이 불가능할 것 같지만

실제로 IPC(Inter-Process Communication)를 통해 프로세스간의 통신이 가능합니다.

 

IPC의 대표적 모델

 

- 공유메모리

- 파이프

- 파일

- 소켓

- 메시지 큐

- 메모리 맵

 

 

데이터를 공유하는 방법에는 2가지가 존재합니다.

1. 통신을 이용한 데이터 주고 받기 (Message-Passing)

2. 데이터를 공유하여 함께 사용하는 것 (Shared-Memory)

 

 

 

공유메모리 (Shared-Memory)

 

공유메모리는 데이터 공유방법 중 2번 데이터를 공유하여 함께 사용하는 쪽에 속합니다.

프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 메모리 공간을 할당해줍니다.

이후 어떤 프로세스건 해당 메모리영역에 접근할 수 있습니다.

* 공유메모리는 중간 매개체가 없어 IPC중 가장 빠르게 동작합니다.

 

 

 

파이프

 

통신을 위한 메모리 공간(버퍼)을 생성하여 프로세스가 데이터를 주고 받게끔 합니다.

 

1. 익명파이프(Anonymous PIPE)

 - 통신할 프로세스가 명확할경우 사용

 - 외부 프로세스에서 사용할 수 없음

 - 파이프는 두 개의 프로세스를 연결하고, 하나는 읽기, 하나는 쓰기만 가능하기 때문에 반이중통신 이라고도 함

 - 송/수신을 위해 두 개의 파이프를 만들어야 사용가능함

 

2. 네임드파이프(Named PIPE)

 - 전혀 모르는 상태의 프로세스들 사이의 통신에 사용

 - 외부와의 통신이 가능함

 - 익명파이프와 동일하게 송/수신을 위해 두 개의 파이프를 만들어야 함

 

 

파일

 

파일을 읽어와 그 안의 저장된 데이터를 기반으로 통신하는 것을 의미합니다.

 

 

소켓

 

클라이언트와 서버간 네트워크 소켓 통신을 통해 데이터를 공유합니다.

 

 

메시지 큐

 

Queue(큐)는 선입선출의 자료구조를 가지는 통신설비로 커널에서 관리합니다.

입출력방식은 네임드파이프와 동일하며 네임드파이프는 데이터의 흐름이라면

메시지 큐는 메모리 공간이라는 점에서 차이가 납니다.

따라서 여러 개의 프로세스가 동시에 데이터를 쉽게 다룰 수 있습니다.

 

 

 

메모리 맵

 

메모리 맵은 열린 파일을 메모리에 매핑시켜서 공유하는 방식입니다.

위에서 설명한 공유메모리 + 파일을 합친 형태라 생각하시면 됩니다.

주로 대용량 데이터를 공유해야 할 때 사용됩니다.

 

 

 

 

 

출처 - https://dar0m.tistory.com/233

 

[OS] 프로세스 간 통신 방법(Inter Process Communication, IPC)

개념 프로세스들 간의 의사소통하는 것을 IPC라고 한다. 프로세스가 통신 가능하다는 것은 서로 다른 프로세스가 데이터를 주고 받을 수 있다는 것이며, 동시에 접근 가능한 메모리 즉, 프로세스

dar0m.tistory.com