Linux IPC 选择?
Posted
技术标签:
【中文标题】Linux IPC 选择?【英文标题】:Linux IPC selection? 【发布时间】:2013-02-05 19:36:43 【问题描述】:我有两个进程 A 和 B。A 和 B 有时需要通信(双向)以传递信号、消息等。 我已经对 Linux 中可用的 IPC 进行了一些基础研究,例如信号量、消息队列、dbus 等。 现在我在决定使用哪个 IPC 时感到困惑,谁能告诉我哪个 IPC 更适合我的应用程序?
提前致谢
已编辑:详细说明应用程序。 (它是一个嵌入式应用程序) 进程 A 将监控温度、速度计算等。进程 B 将驱动电机、读取传感器值(数字)等。有时我需要向进程 B 发送信号,告知达到最高温度,因此停止驱动电机。有时需要将从进程 A 中的传感器读取的数据发送到进程 B。像这样,数字数据需要跨进程传递。我在 ARM 架构中这样做。
【问题讨论】:
这取决于您的应用程序... 也许您应该详细说明您的处理器将来回传递的数据类型,以及您正在使用的处理器类型(ARM?、x86?、MIPS?)。跨度> @n.m.和 LastCoder 我已经编辑了问题并添加了应用程序的详细信息。 您可以在 dbus 和手工制作的 socket ipc 之间进行选择。所以问题是:为什么要重新发明***而不使用 dbus? 我从 dbus 开始,但有点困惑 dbus 是否适合我的应用程序。 【参考方案1】:IPC 技术的选择取决于您尝试实现的应用程序。下面是一个很好的性能比较:
IPC name Latency Throughput Description
-----------------------------------------------------------------------------------------
Signal Low n/a Can be used only for notification, traditionally-
to push process to change its state
Socket Moderate Moderate Only one mechanism which works for remote nodes,
not very fast but universal
D-Bus High High A high-level protocol that increases latency and
reduces throughput compared to when using base
sockets, gains in increased ease of use
Shared n/a High Data saved in-between process runs(due to swapping
memory access time) can have non-constant access latency
Mapped files n/a High Data can be saved in-between device boots
Message Low Moderate Data saved in-between process runs. The message
queue size is limited but there is less overhead
to handle messages
这里有一个更好的比较
Comparing Unix/Linux IPC
【讨论】:
感谢您的比较,计划在我的应用程序中使用 D-Bus,因为它的高延迟我很担心。我的是实时应用程序。 D-bus的吞吐量部分说“高”,根据提供的描述,这应该是低的。 此表对 D-Bus 没有意义。它说“与使用基本套接字时相比降低了吞吐量”。套接字被列为“中等”吞吐量,因此 D-Bus 必须为“中等”或更少。根据描述,它不能是“高”。以上是关于Linux IPC 选择?的主要内容,如果未能解决你的问题,请参考以下文章