Chinaunix首页 | 论坛 | 博客
  • 博客访问: 85919
  • 博文数量: 33
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-15 11:13
文章分类

全部博文(33)

文章存档

2011年(1)

2010年(4)

2008年(28)

我的朋友

分类: LINUX

2008-05-14 18:40:23

近期以來,因為工作上的需求,花費許多時間在開放原碼的架構設計上;最近已經將相關的作業都準備的差不多了,我想,可以跟大家分享一些架構設計的小觀念。

首先,先由 [] 介紹起。使用 D-Bus 來取代傳統的 IPC,並與外部工具(eg. mjpegtools)做整合。

D-BUS 本身屬於 low-level 的 library(libdbus),實務上,我採用了 glib binding 來實作程式,以簡化工作:

D-BUS 是一種 'message bus',未來將取代傳統 IPC 的使用。傳統 IPC 實作,必須將程式架構成 monolithic process,因此在 process 的行為控制,以及 application 間的整合上,都很一定的難度,非常不易於實作「系統」。

引進 D-BUS 技術後,傳統的 monolithic process 被區分為「pieces of D-BUS services」,每個服務,都可以透過「D-BUS patch」來尋找並叫用(invoke);透過 D-BUS 所建立的框架(framework)或是架構,解決了以往難以整合各種應用程式的困境。此外,D-BUS 目前也透過 kobject 與 kernel 做整合,如此一來,D-BUS 便能輕易整合 kernel、application 與 desktop,真正解決以往「系統整合」所遇到的障礙。

例如,如何實作「按鍵觸發應用程式」的系統?

傳統的做法,會讓程式設計師進入「不斷使用 low-level C API 來 try-and-error」的可怕輪迴,但是使用 D-BUS 的架構後,我們只要修改 device driver,將按鍵的動作透過 kobject event layer 傳送(經由 netlink socket)給 D-BUS 即可,D-BUS 會根據我們所定義的路徑,來叫用 application。

D-BUS 所提供的 message bus 分為二種:

* system bus
* local bus

System bus 最大的用途便是整合 kernel 與 application;local bus 為 session bus,即訊息的傳遞只限於該 session。

來源:

--jollen

阅读(1069) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~