
안녕하세요! SSAFY 15기 유상은 기자입니다.
오늘은 운영체제의 개념 중 하나인
IPC(Inter-Process Communication, 프로세스 간 통신)에 대해 정리해보려고 합니다.
1. IPC란 무엇인가?
IPC (Inter-Process Communication)
프로세스 간 데이터를 주고받기 위한 통신 방식
프로세스는 왜 직접 통신할 수 없을까?
프로세스(Process)는 운영체제에서 실행 중인 프로그램이다.
운영체제는 각 프로세스에게 독립된 메모리 공간을 제공하며 실행한다.
이를 프로세스 격리(Process Isolation)라고 한다.
이 구조 덕분에
- 안정성과 보안이 향상되고
- 하나의 프로세스 오류가 전체 시스템에 영향을 덜 주게 된다.
하지만 문제도 존재한다.
프로세스들은 서로 메모리를 직접 공유할 수 없기 때문에 데이터를 바로 주고받을 수 없다.
예를 들어 현대 프로그램들은 여러 프로세스가 함께 협력하며 동작한다.
예시
웹 브라우저
- 브라우저 프로세스
- 렌더링 프로세스
- GPU 프로세스
- 확장 프로그램 프로세스
웹 서버 시스템
- 요청 처리 프로세스
- DB 프로세스
- 로그 저장 프로세스
부모 프로세스와 자식 프로세스
- 파일 압축 작업
- 백그라운드 작업 처리
즉, 서로 협력해야 하는 프로세스들은 데이터를 주고받을 수 있는 별도의 통신 방법이 필요하다.
그래서 등장한 것이 바로 IPC이다.
2. IPC의 목적
IPC의 목적은 크게 두 가지로 볼 수 있다.
2-1. 데이터 전달
프로세스 간 필요한 데이터를 주고받는다.
예:
- 부모 프로세스 → 자식 프로세스 작업 전달
- 서버 → 클라이언트 응답 전달
- 웹 서버 → DB 요청 전달
2-2. 작업 동기화
여러 프로세스가 동시에 같은 자원에 접근하면 문제가 발생할 수 있다.
예:
- 동시에 같은 파일 수정
- 동시에 같은 메모리 접근
따라서 실행 순서를 조정하고 충돌을 방지하는 동기화 과정이 필요하다.
3. IPC의 두 가지 방식
IPC는 크게 두 가지 방식으로 나뉜다.
| 방식 | 핵심 아이디어 |
| Message Passing | 데이터를 전달 |
| Shared Memory | 메모리 공간 자체를 공유 |

4. IPC의 첫 번째 방식 - Message Passing
가장 먼저 등장한 IPC 방식은 Message Passing (메시지 전달) 방식이다.
핵심 아이디어는 단순하다.
“프로세스끼리 직접 메모리를 공유하지 말고,
운영체제가 중간에서 데이터를 전달하자”
구조는 다음과 같다.
Process A
→ Kernel
→ Process B
프로세스는 직접 데이터를 전달하지 못하고 반드시 운영체제를 거친다.
왜 운영체제를 거칠까?
프로세스는 서로 메모리에 직접 접근할 수 없기 때문이다.
그래서 운영체제가 중간에서 데이터를 안전하게 전달해 준다.
이 과정에서 등장하는 중요한 개념이 바로 System Call이다.
System Call은 사용자 프로그램이 운영체제 기능을 요청하는 방식이다.
즉 프로세스는 운영체제에게
"운영체제야,
이 데이터를 다른 프로세스에게 전달해줘"
라고 요청하는 것이다.
📌Message Passing은 안전하지만 운영체제 개입 비용이 존재하는 방식
Pipe - 대표적인 Message Passing 방식
Pipe는 대표적인 IPC 방식 중 하나이다.

한쪽 프로세스가 데이터를 쓰고(write)
다른 프로세스가 데이터를 읽는다(read)
그래서 이름도 “파이프(pipe)”이다.
마치 물이 파이프를 따라 흐르는 것처럼 데이터가 전달된다.
어디에 사용할까?
대표적인 예시는 리눅스 명령어이다.
ls | grep txt
- ls → 파일 목록 출력
- grep txt → txt 파일만 필터링
데이터 생성 → 다른 프로세스가 가공
형태로 협력하는 것이다.
Pipe 종류
| 종류 | 특징 |
| unnamed pipe | 부모-자식 프로세스 관계 |
| named pipe(FIFO) | 관계 없는 프로세스도 가능 |
5. Message Passing은 왜 느릴까?
Message Passing은 안전성이 높다.
하지만 성능 비용이 존재한다.
왜냐하면 운영체제가 계속 개입하기 때문이다.
흐름을 보면 다음과 같은 형태로 동작한다.
User Mode
↓
Kernel Mode
↓
다시 User Mode
즉 데이터를 전달할 때마다 커널을 반드시 거쳐야 한다.
왜 비용이 발생할까?
- mode switching 비용
- 데이터 복사 비용
- context switching 가능성
등이 발생한다.
예를 들어 다음과 같이 데이터 복사가 발생한다.
Process A
→ kernel buffer 복사
→ Process B
따라서 데이터 크기가 커질수록 성능 비용도 증가하게 된다.
6. IPC의 두 번째 방식 - Shared Memory
운영체제는 여기서 새로운 문제를 마주한다.
“굳이 데이터를 계속 복사해야 할까?”
그래서 등장한 방식이 Shared Memory (공유 메모리)이다.
Shared Memory는:
프로세스들이 같은 메모리 공간 일부를 공유하는 방식
즉 데이터를 계속 전달하는 것이 아니라,
아예 같은 공간을 함께 사용하는 것이다.
예를 들어
프로세스 A:
공유 메모리에 "hello" 저장
프로세스 B:
공유 메모리에서 "hello" 읽음
즉 A가 쓴 데이터를 B가 바로 읽을 수 있다.
마치 같은 메모장을 함께 사용하는 느낌이다.
왜 빠를까?
Shared Memory는 커널 개입 감소, 데이터 복사 감소가 가능하다.
Process A ↔ Shared Memory ↔ Process B
형태로 직접 메모리에 접근한다.
그래서 일반 메모리 접근처럼 빠르게 동작할 수 있다.
📌 Shared Memory는 매우 빠르지만 동기화 문제가 발생할 수 있는 방식
7. Shared Memory의 문제점
속도는 빠르지만 문제점도 존재한다.
두 프로세스가 동시에 접근하면 데이터 충돌이 발생할 수 있다.
이 문제를 해결하기 위해 Mutex, Semaphore 같은 동기화 기법이 사용된다.
8. Signal - 이벤트를 알리는 IPC
앞에서 본 IPC 방식들은 데이터를 전달하는 목적이 강했다.
하지만 Signal은 조금 다르다.
Signal은 데이터를 전달하기보다는 특정 이벤트 발생을 알리는 방식에 가깝다.

예를 들어, 다음과 같은 상황을 프로세스에게 빠르게 알린다.
"강제 종료해"
"Ctrl + C 입력됨"
"잘못된 메모리 접근 발생"
대표적인 Signal
| Signal | 의미 |
| SIGINT | Ctrl + C 입력 |
| SIGKILL | 강제 종료 |
| SIGTERM | 종료 요청 |
| SIGSEGV | 잘못된 메모리 접근 |
특징
- 비동기 방식
- 빠르고 단순함
- 데이터 전달보다 이벤트 알림 목적
9. IPC의 확장 - Socket과 RPC
지금까지는 같은 컴퓨터 내부에서의 IPC를 살펴봤다.
하지만 현대 시스템은 여러 서버가 함께 동작한다.
서버 A
↔ 서버 B
↔ 서버 C
이런 구조에서는 네트워크를 통한 통신이 필요하다.
여기서 사용하는 것이 Socket과 RPC이다.
Socket
Socket은 프로세스 간 네트워크 통신을 가능하게 하는 방식이다.
즉 같은 컴퓨터 내부뿐 아니라 다른 컴퓨터와도 통신할 수 있다.
RPC (Remote Procedure Call)
RPC는 다른 컴퓨터의 함수를 마치 내 함수처럼 호출하는 방식이다.
함수 호출처럼 보이지만 실제로는 네트워크 통신이 일어난다.
대표 사례:
- gRPC
- REST API 기반 서비스
10. 프로그래밍 언어별 IPC 사용
IPC 개념은 운영체제 개념이지만 실제 사용 방식은 언어마다 조금씩 다르다.
예시 - pipe
C 언어
pipe(fd);
fork();
read();
write();
운영체제 IPC 기능을 시스템 콜 형태로 직접 사용하는 경우가 많다.
Python
from multiprocessing import Pipe
고수준 라이브러리 형태로 쉽게 사용할 수 있다.
Java
Java는 운영체제 pipe를 직접 다루기보다
PipedInputStream
PipedOutputStream
같은 방식으로 추상화하여 제공한다.
| 언어 | 특징 |
| C | 운영체제 IPC 기능 직접 사용 |
| Python | 고수준 라이브러리 제공 |
| Java | JVM 기반 추상화 제공 |
참고 자료: 이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접
📢 SSAFY 공식 채널 안내
📸 기자단 SNS 바로가기 →
SSAFY 기자단의 다양한 콘텐츠(SSAFY 생활, IT 지식, 취업 및 현직자 이야기)는 아래 채널에서 확인하실 수 있습니다.
🎥 SSAFY 유튜브 | 헬로싸피(싸피티비) 바로가기 →
AI, 취업, 인생 꿀팁까지! 라이브 방송과 싸피티비 콘텐츠가 주기적으로 방송됩니다.
🌐 SSAFY 공식 홈페이지 바로가기 →
SSAFY의 공식 홈페이지를 통해 주요 일정 및 내용을 확인해 주세요.
