Binder機制

Binder的理解

android基於open binder實現的,進程間通信機制。相對於linux進程間通信,性能,安全性,穩定性較好。

  • 性能: 只需要一次數據拷貝,性能上僅次於共享內存。
  • 穩定性:基於C/S架構,職責明確、架構清晰,因此穩定性好。
  • 安全性:爲每個APP分配UID,進程UID是鑑別進程身份的重要標誌。

Linux IPC機制

進程隔離;
進程空間劃分:用戶空間/內核空間
系統調用:切換到內核態的唯一方式。用戶態/內核態。

Binder機制

動態內核可加載機制,內存映射
運行在內核空間的,Binder驅動(使用Linux的動態內核可加載機制)

內存映射,用戶空間的一塊內存,映射到內核空間。兩者修改都可見。

ClientServerServiceManagerBinder驅動
其中ClientServerServiceManager運行在用戶空間,Binder驅動運行在內核空間。
其中ServiceManagerBinder驅動由系統提供,而ClientServer由應用程序來實現。

Binder的代理模式

Client進程要獲取Server進程中的object時,驅動並不是真的把object返回給Client
而是返回了一個跟object看起來一模一樣的方法objectProxy,但是這些方法並沒有
Server進程中object的能力,這些方法只需要把請求參數交給驅動即可。對於A進程來說
和直接調用object中方法是一樣的。

參考資料

Binder原理剖析

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章