- 深入解析Android 虛擬機
- 鐘世禮
- 678字
- 2019-01-05 00:54:43
7.1 Binder機制概述
Binder是Android系統提供的一種IPC(進程間通信)機制。由于Android是基于Linux內核的,所以除了Binder以外,還存在其他的IPC機制,例如管道和socket等。Binder相對于其他IPC機制來說更加靈活和方便,其驅動代碼保存在文件“kernel/drivers/staing/android/binder.c”中,另外該目錄下還有一個binder.h頭文件。Binder是一個虛擬設備,所以它的代碼相比而言還算簡單,讀者只要有基本的Linux驅動開發方面的知識就能讀懂。在“/proc/binder”目錄下的內容,可以用來查看Binder設備的運行狀況。
可以將Android系統看作是一個基于Binder通信的C/S架構,Binder就像網絡一樣把系統的各個部分連接在了一起。在基于Binder通信的C/S架構體系中,除了C/S架構所包括的Client端和Server端外,Android還有一個全局的Service Manager端,它的作用是管理系統中的各種服務(Service)。
在Android系統的Binder機制中,由Client、Server、Service Manager、Binder Driver 4個組件組成,具體關系如圖7-1所示。

圖7-1 Binder機制中的組件關系圖
在Android系統中,Client、Server和ServiceManager三者之間的交互關系如下所示。
Client、Server和Service Manager在用戶空間中實現,Binder驅動程序在內核空間中實現。
Server進程要先注冊一些Service到Service Manager中,所以Server是Service Manager的客戶端,而Service Manager就是服務端了。Service Manager是一個守護進程,能夠管理Server并向Client提供查詢Server接口。
如果某個Client進程要使用某個Service,必須先到Service Manager中獲取該Service的相關信息,所以Client是Service Manager的客戶端。另外,Client根據得到的Service信息與Service所在的Server進程建立通信的通路,然后就可以直接與Service交互了,所以Client也是Server的客戶端。
Binder驅動程序提供設備文件“/dev/binder”與用戶空間交互,Client、Server和Service Manager通過open和ioctl文件操作函數與Binder驅動程序進行通信。
在Android平臺中已經實現了Binder驅動程序和Service Manager,開發者只需要在用戶空間實現自己的Client和Server即可。三者的交互都是基于Binder通信的,所以通過任意兩者之間的關系,都可以獲取Binder的奧秘。
- EJB 3.0 Database Persistence with Oracle Fusion Middleware 11g: LITE
- Microsoft Forefront UAG 2010 Administrator's Handbook
- WordPress 2.7 Cookbook
- Illustrator CS6核心應用案例教程(全彩慕課版)
- After Effects全套影視特效制作典型實例(第2版)
- Apache Roller 4.0 – Beginner's Guide
- 中文版Photoshop CS6平面設計實例教程(第2版)
- Adobe創意大學Illustrator CS5 產品專家認證標準教材
- SOA Patterns with BizTalk Server 2009
- 零基礎學會聲會影2018(全視頻教學版)
- Adobe創意大學InDesign產品專家認證標準教材(CS6修訂版)
- Flash ActionScript 3.0互動設計項目教程
- Getting Started with Oracle Hyperion Planning 11
- 設計必修課:Axure RP 9互聯網產品原型設計
- Photoshop CS6 中文版從入門到精通