Android Binder機制

Android系統的虛擬地址內存分爲用戶空間和內核空間,用戶空間是非共享的,只讓應用自己訪問,內核空間是共享的,Binder通過共享內核空間實現進程間通信。


Binder把進程A生成的IPC數據(在用戶空間生成),傳遞給BinderDriver,Binder Driver在內核空間運行,之後Binder Driver再把IPC數據傳遞給進程B。IPC數據由4部分組成,Handle、RPC數據、RPC代碼、Binder協議,Handle是服務號,用來區分不同的服務,RPC代碼和RPC數據分別是B應用待調用的函數和函數的參數,Binder協議表示IPC數據的處理方法,包括兩種,從IPC層傳遞到Binder Driver和從Binder Driver傳遞到IPC層。



IPC數據從A應用傳遞到BinderDriver,Open()函數會調用Binder Driver的文件描述符,然後通過mmap()系統調用,在內核中開闢一塊區域,存放接收的IPC數據,最後調用ioctl()函數,將IPC數據作爲參數傳遞給Binder Driver。之後Binder Driver再把數據傳遞到B應用,所以binder是靠共享內存實現的進程間通信。

參考鏈接:

http://m.blog.csdn.net/article/details?id=50803196




發佈了83 篇原創文章 · 獲贊 9 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章