Android binder系统架构

来源:互联网 发布:写代码键盘推荐 知乎 编辑:程序博客网 时间:2024/05/29 11:36


1. binder驱动

是客户端和服务器端交换请求和处理结果的中介,

  • 客户端先获得服务器端的代理对象,通过调用代理对象的方式向服务器端发送请求。
  • 代理对象将用户的请求通过Binder驱动发送到服务器端
  • 服务器进程处理用户请求,通过BInder驱动返回处理结果给客户端的服务器代理对象。

2. Binder Adapter 

是对Binder驱动的封装,主要用于操作Binder驱动,实现包括IPCThreadState.cpp和ProcessState.cpp,以及Parcel.cpp的部分内容。

他们位于Android源代码的frameworks/base/include/binder和frameworks/base/libs/binder两个文件夹中,其中ProcessState类中包含了通信细节,利用open_binder打开设备节点/dev/binder。通过ioctl建立基本的通信框架,每个进程只有一个ProcessState对象,每一个线程都会有一个IPCThreadState对象,它主要负责Binder数据读取,写入和请求处理框架。

ProcessState是一个singleton类型,其作用是维护当前进程中的所有Service代理。一个客户端进程可能需要多个Service服务,这样可能会创建多个Service代理,客户端进程中的ProcessState对象就负责维护这些Service代理


3. Binder核心库

是Binder框架的核心实现,主要包括iBinder,Binder(服务器端)和BpBinder(客户端);


4. Binder框架,Binder客户端/服务器端

Binder框架分别有两种实现方案JAVA C++,主要供应用程序使用,他们通过调用Binder的核心库来实现。


原创粉丝点击