BMC开发九 - D-Bus (1)

D-Bus介绍

D-Bus是针对桌面环境优化的IPC(interprocess communication)机制, 用于进程间的通信或者进程与内核的通信。 最基本的D-Bus协议是一对一的通信协议。 但在很多情况下, 通信的一方是消息总线。 消息总线是一个特殊的应用, 它同时与多个应用通信, 并在应用之间传递消息。 

D-Bus分为两种类型: system bus (系统总线), 用于系统(Linux) 和用户程序之间进行通信和消息的传递;session bus (会话总线), 用于桌面 (GNOME, KDE等)用户程序之间进行通信。 两者之间不能互相通信。 

GDBus是GNOME的GLib项目的一部分, 而sd-bus是Github上systemd项目的一部分。 

D-Bus应用场景

D-Bus提供一种高效的进程间通信机制, 主要用户进程间函数调用以及进程间信号广播。 

  • 函数调用: D-Bus可以实现进程间函数调用, 进程A发送函数调用的请求(MethodCall消息), 经过总线转发至进程B。 进程B将应答函数返回值(Method Return消息)或者错误信息(Error消息)
  • 消息广播: 进程间消息广播(Signal消息)不需要响应, 接收方需要向总线注册感兴趣的消息类型,当总线接收到“Signal消息”类型的消息试, 会将消息转发至希望几首的进程。 

D-Bus是一种低延迟, 低开销, 高可用性的进程间通信机制。 其协议是二进制的,避免序列化的过程, 通信效率较高。 D-Bus可以提供一些更高层的功能

  • 结构化的名字空间
  • 独立于架构的数据格式
  • 支持消息中的大部分通用数据元素
  • 带有异常处理的通用远程调用接口。
  • 支持广播类型的通信。 

D-Bus是一种高级的IPC通信机制, 在D-Bus通信过程中,存在一个后台进程(Bus Daemon Process), 后台进程和普通进程间信息交互是通过域套接字进行通信的。 

 D-Bus基本类型

 

posted @ 2023-08-03 15:59  球球小世界  阅读(277)  评论(0编辑  收藏  举报