1. 程式人生 > 其它 >Android Binder進階篇二

Android Binder進階篇二

一、Binder是什麼?

  Binder是Android提供的程序IPC通訊的工具。

二、Binder的優點?

  在Linux中程序IPC通訊方式有很多,其中最常用的管道、Socket、共享記憶體、訊號等。為什麼Android還要設計一套新的IPC通訊機制。

  • 效能,管道和共享記憶體都是比較高效的IPC通訊方式。
  • 方便易用,管道和共享記憶體都是在核心開闢快取的實現原理,不過,使用起來很複雜,使用上很容易出問題。
  • 安全性,Linux上提供的IPC通訊都是不安全的,如:Socket通訊,Socket的IP地址是開放的,只要知道IP地址都可以進行IPC通訊,管道也是一樣,命名管道是通過管道名通訊的,只要知道管道名就可以通訊。IPC安全性是如何體現,IPC通訊安全主要是呼叫方的身份資訊新增,呼叫方的身份資訊不能在呼叫方新增吧,這樣也不安全,安全的方式是在IPC通訊機制內部的核心態新增呼叫方資訊,就是在由IPC機制在核心中新增。

  Binder是基於以上三點設計的IPC通訊。

三、原理

  1. Binder啟動

    1. 開啟Binder驅動(dev/binder)。
    2. 記憶體對映,分配緩衝區。
    3. 啟動Binder執行緒。

  2. Binder通訊

  3. 系統服務的Binder通訊