반응형
✅ IPC(Inter-Process Communication)
: 서로 다른 프로세스 간에 데이터를 주고받기 위한 메커니즘
IPC에는 크게 공유 메모리(Shared Memory) 방식과 메시지 전달(Message Passing) 방식이 있다.
공유 메모리는 말 그대로 같은 메모리를 읽고 써서 협력하는 것이고,
메시지 전달은 프로세스들 사이에 메시지를 교환해서 협력한다.

그리고 메시지 전달 방식에는 구체적으로 파이프, 메시지 큐, 소켓 방식이 있다.
| 파이프 (Pipe) | 단방향 통신, 부모-자식 간 주로 사용 |
| 메시지 큐 (Message Queue) | 메시지를 큐 형태로 전달, 비동기식 통신, 단방향 |
| 소켓 (Socket) | 네트워크 기반 IPC, 서로 다른 시스템 간 통신도 가능 |
| 공유 메모리 (Shared Memory) | 메모리를 공유하여 빠르고 효율적인 통신이 가능 (속도 빠름, 동기화 필요) |
📍파이프 (Pipe)
: 파일 I/O를 통해 프로세스 간 데이터를 주고받는 방식
- 단방향 통신이다.
- FIFO 구조를 가진다.
- 양방향 통신을 하려면 두 개의 파이프가 필요하다.
- 간단하고 빠르게 설정 가능하다.
💡 언제 사용?
- 주로 부모-자식 프로세스 간 단순한 데이터 전달을 할 때
📍메시지 큐 (Message Queue)
: 커널이 관리하는 큐를 통해 프로세스 간 구조화된 메시지를 주고받는 방식
- 메시지 큐는 기본적으로 단방향 통신 구조이다.
- 다음과 같이 역할이 나뉜다.
- Producer(생산자): 메시지를 생성하여 보냄
- Consumer(소비자): 생산자가 보낸 메시지를 받음
- 만약 양방향 통신을 하고 싶다면, 두 개의 메시지큐를 사용하여 할 수 있다.
- A -> B 메시지 큐, B -> A 메시지 큐
💡 언제 사용?
- 비동기 통신이 필요할 때
- 구조화된 데이터를 교환할 때
📍소켓
: 네트워크 통신 모델을 기반으로 한 양방향 통신 방식
- 두 프로세스가 통신하려면 각 프로세스마다 하나씩 소켓이 필요하여, 총 2개의 소켓이 필요하다.
- 같은 컴퓨터 내 통신뿐 아니라, 다른 컴퓨터 간 통신(네트워크 통신)에도 사용된다.
- TCP, UDP 같은 다양한 통신 프로토콜을 사용할 수 있다.
💡 언제 사용?
- 다른 컴퓨터 간 통신이 필요할 때
- 양방향 통신이 필요할 때
- 다수의 클라이언트와 서버 통신이 필요할 때
📍공유 메모리
: 두 개 이상의 프로세스가 같은 물리적 메모리 영역을 동시에 접근할 수 있도록 함
- 중개자 없이 곧바로 메모리에 접근할 수 있기 때문에 모든 IPC 중 가장 빠르다.
- 프로세스가 공유 메모리 할당을 커널에 요청하면 커널은 해당 프로세스에 공유 메모리 공간을 할당한다.
💡 언제 사용?
- 프로세스 간 읽기/쓰기를 모두 필요로 할 때
- 대용량 데이터를 교환할 때
- 빠른 속도가 필요할 때
🚨 주의할 점
- 여러 프로세스가 동시에 접근하면 데이터 충돌이 일어날 수 있으므로 동기화 기법을 사용해야 한다.
- 공유 메모리의 크기는 서로 사용하는 프로세스 간 일치해야 한다.
반응형
'⚙️ CS > 운영체제' 카테고리의 다른 글
| [운영체제] Thread Pool & Fork-Join (0) | 2025.04.29 |
|---|---|
| [운영체제] 데드락 (Deadlock) (0) | 2025.04.29 |
| [운영체제] 프로그램 실행 과정 (0) | 2025.04.29 |
| [운영체제] 동기화 (0) | 2025.04.29 |