QNX RTOS: 5. Interprocess Communication
2025. 11. 27. 17:46ㆍ운영체제/QNX
1. IPC란 무엇인가?
IPC(Inter-Process Communication) =
두 프로세스가 서로 데이터를 보내거나(Event, Data), 제어 명령을 교환하는 행위
예:
- 한 프로세스의 스레드가
다른 프로세스의 스레드로 메시지를 보내는 것 → IPC - 이벤트 발생을 알려주는 알림(Notify) → IPC
- 데이터를 공유하는 Shared Memory 활용 → IPC
즉, “프로세스 간 협업을 위한 모든 수단”이 IPC.

2. QNX가 제공하는 IPC는 크게 두 종류
QNX IPC는 크게 Core IPC와 POSIX IPC로 나뉨.
2.1 QNX Core IPC (QNX 고유 기능 — 핵심)
QNX OS의 가장 기초가 되는 IPC이며, OS 내부 구성요소도 전부 이걸로 움직인다.
✔ 구성 요소
- QNX Message Passing (기본 IPC)
- 프로세스 간 Request/Reply 기반 메시지 전송
- Block/Unblock 기반 → RTOS 실시간성 최적화
- 서버/클라이언트 구조 구현에 최적
- QNX Pulses
- 매우 빠르고 작은 notification 이벤트
- Interrupt handler → User thread 전달에도 사용
- 비용이 극도로 낮아서 신호(notify) 용도에 최적
- QNX Shared Memory (Core SHMEM)
- 여러 프로세스가 동일 메모리 페이지를 맵핑하여 데이터 공유
- 가장 빠른 IPC 형태
- 단점: 동기화는 별도로 필수(Mutex/Condvar 필요)
Core IPC는 QNX 전용 구조이며, 모든 QNX 드라이버/서버가 실제로 사용하는 방식.
2.2 POSIX IPC (Portable API — 다른 OS에서도 동일하게 사용)
다른 UNIX 계열 OS와 호환되는 IPC 표준 API.
다만 QNX에서는 일부 기능이 프로세스 형태로 구현되어 있음.
✔ POSIX IPC 구성 요소
- POSIX Signals (시그널)
- POSIX Shared Memory (shm_open())
- POSIX Pipes
- 사용하려면 pipe 프로세스가 반드시 존재해야 함
- POSIX Message Queues
- QNX에서는 mqueue 프로세스가 필요
- TCP/IP Sockets
- QNX에서 TCP/IP 기능은 io-sock 리소스 매니저가 제공
즉, POSIX IPC는 “휴대용 API”라서 다른 OS와 코드 공유에 유리하지만,
QNX 핵심 성능은 Core IPC가 훨씬 우수함.
3. QNX IPC를 보는 핵심 관점
✔ (1) QNX Core IPC는 RTOS 실시간성 최적화
- Message Passing은 “커널이 직접 스레드 간 데이터 복사”
- Block/Unblock 기반 scheduling → latency 매우 낮음
- microkernel 구조에서 모든 자원 관리가 “메시지 기반”으로 동작
즉, QNX는 IPC 중심으로 설계된 OS.
✔ (2) POSIX IPC는 portability는 좋지만 성능은 QNX Core보다 낮음
- mqueue / pipe / io-sock 같은 프로세스에 의존
- latency가 QNX Message Passing보다 높음
- 실시간 제어에는 다소 불리
→ 차량/로봇 분야에서는 대부분 Core IPC 사용
4. 핵심 요약
- IPC = 프로세스 간 데이터/이벤트 교환
- QNX는 Core IPC(Message, Pulse, SHMEM)와 POSIX IPC 모두 지원
- Core IPC는 QNX OS의 근간이며 실시간성과 성능이 탁월함
- POSIX IPC는 휴대용이지만 QNX에서는 부가 프로세스(pipe, mqueue, io-sock)가 필요함
'운영체제 > QNX' 카테고리의 다른 글
| QNX RTOS: 5-2. Pulses (0) | 2025.12.02 |
|---|---|
| QNX RTOS: 5-1. Message Passing (0) | 2025.11.27 |
| QNX RTOS: 4-11. Atomic Operations 실험 (0) | 2025.11.27 |
| QNX RTOS: 4-11. Synchronization - Atomic Operations (0) | 2025.11.27 |
| QNX RTOS: 4-10. Conditional Variables 실험 (0) | 2025.11.27 |