Android Binder进阶篇二
一、Binder是什么?
Binder是Android提供的进程IPC通信的工具。Binder通信使用的数据结构是Parcel。
二、Binder的优点?
在Linux中进程IPC通信方式有很多,其中最常用的管道、Socket、共享内存、信号等。为什么Android还要设计一套新的IPC通信机制。
- 性能,管道和共享内存都是比较高效的IPC通信方式。
- 方便易用,管道和共享内存都是在内核开辟缓存的实现原理,不过,使用起来很复杂,使用上很容易出问题。
- 安全性,Linux上提供的IPC通信都是不安全的,如:Socket通信,Socket的IP地址是开放的,只要知道IP地址都可以进行IPC通信,管道也是一样,命名管道是通过管道名通信的,只要知道管道名就可以通信。IPC安全性是如何体现,IPC通信安全主要是调用方的身份信息添加,调用方的身份信息不能在调用方添加吧,这样也不安全,安全的方式是在IPC通信机制内部的内核态添加调用方信息,就是在由IPC机制在内核中添加。
Binder是基于以上三点设计的IPC通信。
三、原理
1. Binder启动
- 打开Binder驱动(dev/binder)。
- 内存映射,分配缓冲区。
- 启动Binder线程。
2. Binder通信
3. 系统服务的Binder通信