Interprocess Communication (IPC)

Posted by Underdog Linux on October 13, 2023

原文: 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(在 MsgSendMsgReceiveMsgReply 中实现)是同步的并复制数据。让我们更详细地探讨这两个属性。