首页 > 其他分享 >D-Bus学习

D-Bus学习

时间:2024-01-26 13:23:33浏览次数:25  
标签:对象 Bus 总线 学习 名称 进程 客户端

D-Bus学习

https://blog.csdn.net/f110300641/article/details/106823611

概念

D-Bus是在Linus上桌面系统中各应用程序之间通信(IPC)和远程过程调用(RPC)的机制,实现了多个程序在计算机上同时通信。

D-Bus将原本一对一的通信过程出抽象出一个软件总线,应用程序链接到这个总线,不关心总线的实现细节,通过这个介质来交换信息,从而简化通信网络。

image

D-Bus规范

连接名称(Bus Name)

唯一名(unique name):1.1553(冒号后面的字符没有特定含义),唯一标识一个进程到D-Bus的连接。只有唯一名而没有公共名叫做私有连接,因为它们没有提供可以通过公共名访问的服务。

公共名(well-know name)org.freedesktop.NetworkManager。是进程又额外申请的总线名称,用来提供众所周知的服务,其他进程可以通过这个名称来使用对应的服务。

面向对象

在 D-Bus 中,进程A通过公开「对象」 来提供服务。这些对象具有可以调用的「方法」,以及该对象可以发出的「信号」。两者统称为对象的「成员」。进程B就可以调用进程A公布的这些对象的方法来与进程A进行交互,也可以监听相关的信号。接收到消息的D-Bus连线会被转送到一个特定的对象,而非进程。因此,客户端只知道它们是与对象交互,但并不知道另一侧是否真的有对象。

对象路径(Object path)

object path就像是一个文件路径,可以叫做/org/kde/kspread/sheets/3/cells/4/5等。路径下面有一些对象。

接口(Interface)

在每个Object Paths下都包含有多个接口(Interfaces),一个接口就是多个方法和信号的集合

image

使用 D-Feet 浏览 D-Bus 总线中现有的总线名称、对象、接口、方法和信号

通信模型

数据传输

D-Bus 规范没有规定使用哪些特定的 IPC 传输机制,可以使用Unix域套接字也可以用TCP套接字,具体实现要看底层的通信库。

每个 D-Bus 消息均由标头和正文组成。标头由几个字段组成,这些字段标识消息类型、发送者以及将消息传递给接收者所需的信息(目标总线名称、对象路径、方法或信号名称、接口名称等)。 )。正文包含接收器进程解释的数据有效负载,例如输入或输出参数。

所有数据都以众所周知的二进制格式(称为有线格式(wire format))进行编码。

总线类型:

  • 单一的系统总线(System bus),在引导时就会启动,它由操作系统和后台进程使用
  • 每个用户的会话总线(Session bus),普通进程创建,可同时存在多条。会话总线属于某个进程私有,它用于进程间传递消息。

一个进程可以连接到任意数量的总线,只要它已被授予对该总线的访问权限。

大多数的系统会实现一个具较高权限的系统频道,连同给每一个已登录的用户的专用频道,这就可以让D-Bus中可用的登录信息受到限制。因此,D-Bus服务同时包含了系统守护进程(给像是“新增硬件设备”或是“打印机队列变更”等事件使用)以及一个给每个用户的登录会话(给这个用户启动的进程间的一般通信使用)使用的独有守护进程。

总线支持两种在客户端和服务进程之间交换消息的模式[5]

  • 一对一的请求-响应:这是客户端调用对象方法的方式。客户端向导出对象的服务进程发送一条消息,而服务又将一条消息回复给客户端进程。[17]客户端发送的消息必须包含对象路径、调用方法的名称(以及可选的接口名称)以及对象所选接口定义的输入参数值(如果有)。回复消息携带请求的结果,包括对象方法调用返回的输出参数的值,或者出现错误时的异常信息。[5] [17]
  • 发布/订阅:这是对象向感兴趣的各方宣布信号发生的方式。对象的服务进程广播总线仅传递给订阅该对象信号的连接客户端的消息。[17]消息携带对象路径、信号名称、信号所属接口以及信号参数值(如果有)。该通信是单向的:任何客户端进程都不会响应原始消息,因为发送方既不知道接收方的身份,也不知道接收方的数量。

标签:对象,Bus,总线,学习,名称,进程,客户端
From: https://www.cnblogs.com/3to4/p/17989105

相关文章

  • 机器学习从入门到放弃:卷积神经网络CNN(一)
    一、前言在上一篇中我们使用全连接网络,来构建我们的手写数字图片识别应用,取得了很好的效果。但是值得注意的是,在实验的最后,最后我们无论把LOSS优化到如何低,似乎都无法在测试数据集testdata中提高我们的识别准确度,你可以回头尝试全连接的网络连接,新增多几层layer,来尝试......
  • 『学习笔记』重谈圆锥曲线
    定义第一定义:圆锥曲线,又称二次曲线,是由一平面截二次锥面得到的曲线。包括椭圆、抛物线和双曲线。二次曲线标准解析式为\(ax^2+bxy+cy^2+dx+ey+f=0\),在不同情况下会退化。第二定义:到定点(焦点)与到定直线(准线)的距离之比为常数\(e\)的点的轨迹。分类几何分类当平面与二次锥......
  • [SQLAlchemy] sqlAlchemy学习笔记(3): 在orm中使用join
    JOIN连接表➡️官方文档⬅️在sqlalchemy中实现JOIN/ON语句,需要用到Select.join()或者Select.join_from()假设我们有两张表(在python中就变成了两个类)User和Address,User表中有一列addresses,表示该用户使用的所有地址的集合(反映到代码中,就是Address对象的集合);同时Ad......
  • 云计算学习day4
    学习了不同命令的使用方法alias命令用于给一个命令加以简称格式:alias简称=“命令”nualias删除命令格式:unalias简称当只输入alias时即为查询所有简称du命令用于查看当前文件夹占用磁盘多少单元块(不足4k按4k计算)格式:du【选项】文件或目录【选项】包括如下:-a:显......
  • 圆方树学习笔记
    圆方树学习笔记圆方树是优秀的图论算法,从仙人掌图向无向图扩展,利用割点和点双联通分量的性质,实现了图向树的转换。对仙人掌的处理:圆方树——处理仙人掌的利器而且实现十分简单算法思路前置知识割点和桥,点双联通分量。思路对于一个无向图,圆方树理解可以如下:原图中点是圆......
  • 全同态加密的硬件加速:让机器学习更懂隐私保护
    PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。问题:保护敏感数据企业机构间合作处理数据越来越频繁,通常使用云服务为数据共享保驾护航。保护数据隐私至关重要,特别是在处理个人可识别信息(PII......
  • 【跟着ChatGPT学深度学习】ChatGPT带我入门深度学习
    【跟着ChatGPT学深度学习】ChatGPT带我入门深度学习【跟着ChatGPT学深度学习】ChatGPT带我入门深度学习【跟着ChatGPT学深度学习】第一弹,入门深度学习。本次ChatGPT老师共教我三个知识点,分别是深度学习基础、深度学习的学习资源和深度学习需要掌握的技能和知识。最后,ChatGPT老......
  • 人工智能(第3版) 第二章—学习笔记
    人工智能(第3版)第二章—学习笔记2.0简介:智能系统中的搜索这一部分内容简单的列举了我们生活中出现的一些常见的搜索问题,并简单介绍了本章之后需要学习的状态分析图,生成——测试搜索范式,盲目搜索算法,贪心算法和回溯法等内容。2.1状态空间图状态空间图(state-spacegraph)是对......
  • WinDbg学习四(标准命令)
    命令都是实现在WinDBG内部的,执行这些命令时不需要加载任何扩展模块。大多数标准命令是一两个字符或者符号,只有version等少数命令除外。测试代码namespaceWinDbgConsoleSearch{internalclassProgram{privatestaticinti;......
  • OpenMP学习 第十一章 同步与OpenMP内存模型
    第十一章同步与OpenMP内存模型内存一致性模型OpenMP线程在共享内存中执行,共享内存是组中所有线程都可以访问的地址空间,其中存储着变量.使共享内存系统高效运行的唯一方法是允许线程保持一个临时的内存视图,该视图驻留在处理器和内存RAM之间的内存结构中.当线程通过共享内存......