http://blog.mcuol.com/User/AT91RM9200/Article/12816_1.htm
http://www.cnblogs.com/wzh206/archive/2010/05/13/1734901.html
一個(gè)完整的DBus學(xué)習(xí)教程(強(qiáng)烈推薦,寫得相當(dāng)?shù)娜?:
http: " /> 久久精品嫩草影院免费看,国产亚洲福利精品一区,一二三四视频免费社区5

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

DBus學(xué)習(xí)筆記

一些基本概念的解釋和翻譯:
http://blog.mcuol.com/User/AT91RM9200/Article/12816_1.htm
http://www.cnblogs.com/wzh206/archive/2010/05/13/1734901.html
一個(gè)完整的DBus學(xué)習(xí)教程(強(qiáng)烈推薦,寫得相當(dāng)?shù)娜?:
http://blog.csdn.NET/fmddlmyy/archive/2008/12/23/3585730.ASPx
兩個(gè)DBus的完整示例,相當(dāng)有參考價(jià)值
http://blog.chinaunix.NET/u1/58649/showart_462468.html
http://hi.baidu.com/zengzhaonong/blog/item/670b98d6e63ae42c07088bae.html
DBus官方網(wǎng)站,最原滋原味的DBus學(xué)習(xí)內(nèi)容
http://www.freedesktop.org/wiki/Software/dbus
http://dbus.freedesktop.org/doc/dbus-tutorial.html
http://dbus.freedesktop.org/doc/dbus-specification.html
歡迎大家提供更多的DBus學(xué)習(xí)資料,一起研究

 

DBus是一種IPC機(jī)制,由freedesktop.org項(xiàng)目提供,使用GPL許可證發(fā)行,用于進(jìn)程間通信或進(jìn)程與內(nèi)核的通信。
:Linux中的IPC通信機(jī)制還包括,管道(fifo),共享內(nèi)存,信號(hào)量,消息隊(duì)列,Socket等。
DBus進(jìn)程間通信主要有三層架構(gòu)
1.底層接口層:主要是通過(guò)libdbus這個(gè)函數(shù)庫(kù),給予系統(tǒng)使用DBus的能力。
2.總線層:主要Message bus daemon這個(gè)總線守護(hù)進(jìn)程提供的,在Linux系統(tǒng)啟動(dòng)時(shí)運(yùn)行,負(fù)責(zé)進(jìn)程間的消息路由和傳遞,其中包括Linux內(nèi)核和Linux桌面環(huán)境的消息傳遞。總線守護(hù)進(jìn)程可同時(shí)與多個(gè)應(yīng)用程序相連,并能把來(lái)自一個(gè)應(yīng)用程序的消息路由到0或者多個(gè)其他程序。
3.應(yīng)用封裝層:通過(guò)一系列基于特定應(yīng)用程序框架將DBus的底層接口封裝成友好的Wrapper庫(kù),供不同開(kāi)發(fā)人員使用(DBus官方主頁(yè)http://www.freedesktop.org/wiki/Software/dbus,提供了大部分編程語(yǔ)言的DBus庫(kù)版本)。比如libdbus-glib, libdbus-Python.

 

如上圖所示,Bus Daemon Process是運(yùn)行在linux系統(tǒng)中的一個(gè)后臺(tái)守護(hù)進(jìn)程,dbus-daemon運(yùn)行時(shí)會(huì)調(diào)用libdus的庫(kù)。Application Process1代表的就是應(yīng)用程序進(jìn)程,通過(guò)調(diào)用特定的應(yīng)用程序框架的Wrapper庫(kù)與dbus-daemon進(jìn)行通信。
從上圖也可以看出來(lái)Application和Daemon中其實(shí)還是通過(guò)socket進(jìn)行通行。

DBus的三大優(yōu)點(diǎn):低延遲,低開(kāi)銷,高可用性。

*低延遲:DBus一開(kāi)始就是用來(lái)設(shè)計(jì)成避免來(lái)回傳遞和允許異步操作的。因此雖然在Application和Daemon之間是通過(guò)socket實(shí)現(xiàn)的,但是又去掉了socket的循環(huán)等待,保證了操作的實(shí)時(shí)高效。

*低開(kāi)銷:DBus使用一個(gè)二進(jìn)制的協(xié)議,不需要轉(zhuǎn)化成像XML這樣的文本格式。因?yàn)镈Bus是主要用來(lái)機(jī)器內(nèi)部的IPC,而不是為了網(wǎng)絡(luò)上的IPC機(jī)制而準(zhǔn)備的.所以它才能夠在本機(jī)內(nèi)部達(dá)到最優(yōu)效果。

*高可用性:DBus是基于消息機(jī)制而不是字節(jié)流機(jī)制。它能自動(dòng)管理一大堆困難的IPC問(wèn)題。同樣的,DBus庫(kù)被設(shè)計(jì)來(lái)讓程序員能夠使用他們已經(jīng)寫好的代碼。而不會(huì)讓他們放棄已經(jīng)寫好的代碼,被迫通過(guò)學(xué)習(xí)新的IPC機(jī)制來(lái)根據(jù)新的IPC特性重寫這些代碼。

 

在介紹基本概念之前,先介紹一個(gè)學(xué)習(xí)DBus的好工具d-feet,這個(gè)工具主要是用來(lái)查看DBus的System Bus和Session Bus中的各個(gè)消息連接的。當(dāng)然,你也可以在這里面添加自己創(chuàng)建的消息總線,以便于觀察。

 

下面根據(jù)上圖介紹一下DBus中的一些基本概念。

會(huì)話總線(Session Buses普通進(jìn)程創(chuàng)建,可同時(shí)存在多條。會(huì)話總線屬于某個(gè)進(jìn)程私有,它用于進(jìn)程間傳遞消息。

系統(tǒng)總線(System Bus在引導(dǎo)時(shí)就會(huì)啟動(dòng),它由操作系統(tǒng)和后臺(tái)進(jìn)程使用,安全性非常好,以使得任意的應(yīng)用程序不能欺騙系統(tǒng)事件。當(dāng)然,如果一個(gè)應(yīng)用程序需要接受來(lái)自系統(tǒng)總線的消息,他也可以直接連接到系統(tǒng)總線中,但是他能發(fā)送的消息是受限的。

Bus Name按字面理解為總線名稱貌似不是很貼切,應(yīng)該是一個(gè)連接名稱,主要是用來(lái)標(biāo)識(shí)一個(gè)應(yīng)用和消息總線的連接。從上圖可以看出來(lái),總線名稱主要分為兩類

"org.kde.StatusNotifierWatcher"這種形式的稱為公共名(well-knownname)

":1.3"這種形式的稱為唯一名(Unique Name)

公共名提供眾所周知的服務(wù)。其他應(yīng)用通過(guò)這個(gè)名稱來(lái)使用名稱對(duì)應(yīng)的服務(wù)。可能有多個(gè)連接要求提供同個(gè)公共名的服務(wù),即多個(gè)應(yīng)用連接到消息總線,要求提供同個(gè)公共名的服務(wù)。消息總線會(huì)把這些連接排在鏈表中,并選擇一個(gè)連接提供公共名代表的服務(wù)。可以說(shuō)這個(gè)提供服務(wù)的連接擁有了這個(gè)公共名。如果這個(gè)連接退出了,消息總線會(huì)從鏈表中選擇下一個(gè)連接提供服務(wù)。

唯一名以“:”開(kāi)頭,“:”后面通常是圓點(diǎn)分隔的兩個(gè)數(shù)字,例如“:1.0”。每個(gè)連接都有一個(gè)唯一名。在一個(gè)消息總線的生命期內(nèi),不會(huì)有兩個(gè)連接有相同的唯一名。擁有公眾名的連接同樣有唯一名,例如在前面的圖中,“org.kde.StatusNotifierWatcher”的唯一名是“:1.51”。

每個(gè)連接都有一個(gè)唯一名,但不一定有公共名。

只有唯一名而沒(méi)有公共名叫做私有連接,因?yàn)樗鼈儧](méi)有提供可以通過(guò)公共名訪問(wèn)的服務(wù)。

Object Paths

“org.kde.StatusNotifierWatcher”這個(gè)連接中有三個(gè)Object Paths,標(biāo)識(shí)這這個(gè)連接中提供了三個(gè)不同的服務(wù),每個(gè)Object Paths表示一個(gè)服務(wù)。這個(gè)路徑在連接中是唯一的。

Interfaces

在每個(gè)Object Paths下都包含有多個(gè)接口(Interfaces),舉例如下接口:

org.freedesktop.DBus.Introspectable

org.freedesktop.DBus.Properties

org.kde.StatusNotifierWatcher

紅色的兩個(gè)是消息總線提供的標(biāo)準(zhǔn)接口,而剩下的一個(gè)是需要具體的應(yīng)用去實(shí)現(xiàn)的。

MethodsSignals

Methods表示可以被具體調(diào)用的方法

Signals則表示的是信號(hào),此信號(hào)可以被廣播,而連接了這個(gè)信號(hào)的對(duì)象在接收到信號(hào)時(shí)就可以進(jìn)行相應(yīng)的處理。和Qt中的信號(hào)應(yīng)該是一個(gè)意思。

it知識(shí)庫(kù)DBus學(xué)習(xí)筆記,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 欧美一区二区视频高清专区 | 午夜福利试看120秒体验区 | 亚洲AV综合99一二三四区 | 亚洲AV无码乱码国产麻豆P | 18亚洲男同gay1069| 大胆国模一区二区三区伊人 | 国产成人aaa在线视频免费观看 | 99精品免费久久久久久久久日本 | 国产女人毛片 | 久久re视频这里精品一本到99 | 久久免费观看视频 | 一级毛片皇帝 宫女 | 欧美日韩国产在线一区二区 | 亚洲裸舞 hd | 全黄h全肉细节文在线观看 全黄H全肉细节文短篇 | 在线不卡日本v二区 | 快播可乐网| 视频三区 国产盗摄 | 久久亚洲人成国产精品 | 亚洲永久精品AV在线观看 | 久草在线福利视频在线播放 | 国产亚洲精品字幕在线观看 | 中文字幕福利视频在线一区 | 丰满女朋友在线观看中文 | 日韩人妻精品久久日 | 尤物国产在线精品三区 | 国产又粗又黄又爽的大片 | 无遮掩H黄纯肉动漫在线观看星 | 素人约啪第五季 | 国产精品久久久久永久免费看 | 一二三四在线高清中文版免费观看电影 | 国产精品外围在线观看 | 国产色婷婷亚洲99精品 | 俄罗斯破处 | 91免费网站在线看入口黄 | 99er久久国产精品在线 | 国产最新地址 | bbbbbxxxxx肥胖 | 久久99re2热在线播放7 | 中文国产在线观看 | 伊人久久中文 |