原文: ipc
进程间通信在微内核从嵌入式实时内核向全面POSIX操作系统的转变中起着重要作用。随着各种服务提供过程被添加到微内核中,IPC是将这些组件连接成一个有凝聚力的整体的“粘合剂”。
虽然 message passing 是 QNX Neutrino RTOS中 IPC 的主要形式,但也有其他几种形式可供选择。 除非另有说明,否则这些其他形式的 IPC 是建立在我们的本机 message passing 之上的。该策略是创建一个简单、健壮的 IPC 服务,可以通过微内核中的简化代码路径来调整性能;然后可以从这些服务中实现更多“功能混乱”的IPC服务。
将更高级别的 IPC 服务(如通过我们的消息传递实现的pipes 和 FIFO)与其单片内核对应项进行比较的基准测试显示出相当的性能。
QNX Neutrino 至少提供以下形式的 IPC:
Service | 实现路径 |
---|---|
Message-passing | Kernel |
Signals | Kernel |
POSIX message queues | External process |
Shared memory | Process manager |
Pipes | External process |
FIFOs | External process |
设计人员可以根据带宽要求、排队需求、网络透明度等来选择这些服务。权衡可能很复杂,但灵活性很有用。 作为定义微内核的工程工作的一部分,我们有意将message passing 作为基本的 IPC 原语。
作为 IPC 的一种形式,message passing
(在 MsgSend、MsgReceive 和 MsgReply 中实现)是同步的并复制数据。让我们更详细地探讨这两个属性。
- Synchronous message passing 同步消息传递
- Message copying 消息拷贝
- Simple messages 简单的消息
- Channels and connections 通道和连接
- Pulses 脉冲信号
- Priority inheritance and messages 优先级继承和消息
- Message-passing API 消息传递相关API
- Robust implementations with Send/Receive/Reply 发送/接收/回复的鲁棒实现
- Event 事件
- Signals 信号
- POSIX message queues 消息队列
- Shared memory 共享内存
- Typed memory 类型化内存
- Pipes and FIFOs