一、Binder 是什么
它是一种IPC 通信机制,它比Linux一般的通信方式更加简洁,消耗内存资源更小。实质是一种架构,这种架构可以提供服务器端服务接口,Binder 驱动,客户端服务代理接口,以及一个守护进程Service Manager.提供主要的功能如下:
- 驱动程序来推进进程间的通信
- 使用共享内存提高性能
- 为进程请求分配每个进程的线程池
- 针对系统中的对象引入了引用计数和跨进程对象引用映射
- 进程间同步调用
二、Binder 通信原理
采用C/S 模式,也就是Client- Server ,每个需要Binder 通信的进程都必须创建一个Binder接口
Binder 驱动:是一个miscdevice的驱动,主设备号为10,其设备节点dev/binder ,在驱动实现过程中,主要是通过binder_ioctl 函数与用户空间的进程交换数据。负责为上层客户端提供各种操作接口
Service Manager: 负责管理系统服务,监听并相应客户端的请求
Client:一般指的是安卓系统上面的应用程序,他可以请求Server 中的服务
三、Binder 使用实例
客户端发送请求到binder驱动代理对象发送用户请求到服务器进程,服务器进程处理用户请求,并通过Binder 驱动代理返回处理结果到客户端服务器代理,客户接收到服务器返回的结果。