Binder驱动

来源:互联网 发布:linux 禁止用户登录 编辑:程序博客网 时间:2024/06/10 00:50


Android可以选择进程通信方式,有以下三种:
1.标准linux Kernel IPC接口

2.标准D-BUS接口

3.Binder接口


Android中使用做多是Binder驱动。它主要实现下面的功能:

1.用驱动程序来提高性能

2.通过共享内存来提高性能

3.为进程请求分配每个线程池

4.针对系统中的对象引入了计数和跨进程的对象引用映射。

5.进程间同步调用

工作原理

  使用binder_ioctl()函数与用户空间进程交换数据。BINDER_WRITE_READ用来读写数据,数据包中的cmd域来区分不同的请求。使用binder_thread_write()函数来发送请求或返回结果,使用binder_thread_read()函数来读取结果。binder_thread_write()函数中,通过调用binder_transaction()函数来转发请求并返回结果。


工作流程

1.客户端首先获得服务器端的代理对象。所谓的代理对象实际上就是在客户端建立一个服务端的引用,该代理对象具有服务器端的功能,使其在客户端访问服务端的方法就像访问本地方法一样。

2.客户端通过调用服务器代理对象的方式向服务器端发送请求。

3.代理对象将用户请求通过binder驱动发送到服务器进程。

4.服务器进程处理用户请求,并通过binder驱动返回处理结果给客户端的服务器代理对象。

5.客户端收到服务器端的返回结果。

 

原创粉丝点击