欢迎来到天天文库
浏览记录
ID:48045223
大小:450.50 KB
页数:14页
时间:2020-01-13
《binder.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Binder通讯机制目录Binder的作用IPC数据包Binder协议三个函数服务注册服务检索服务使用作用Binder在android中主要用于支持RPC(remoteproceducecall)使得当前的进程调用另一个进程的函数易如反掌为什么要使用内核实现进程间通信?答:在内核中传递数据安全性更高Binder协议Binder协议分为四种:BC_TRANSACTION:binderIPC数据发送端通过binderdriver向serviceserver发送数据时使用BR_TRANSACTION:用于binderIPC接收端(serviceserver)处理IPC数据BC_REPLY:se
2、rviceserver收到IPC数据包后返回应答数据。BR_REPLY:用于发送端接收并处理IPC数据包当Binderdriver接收到发送端发送的IPC数据包并分析,如果其中的协议为BC_TRANSACTION,则找到被调用的函数所在的服务(serviceserver),然后binderdriver会将协议改为BR_TRANSACTION,重新插入到IPC数据包中,然后发送给serviceserver。返回数据包时同理binder通讯的三个过程服务注册服务检索服务使用以ServiceManager(SM)注册自身为例1.首先SM调用open()函数open函数会调用系统函数binder
3、_open()打开BinderDriver2.SM调用mmap()数—binder_mmap()在内核中开辟一个buffer用于接收IPC数据3.SM调用ioctl()函数—binder_ioctl(),使得自身进入待机状态,等待接收IPC数据ServiceserverBinderDriverServiceManager打开binderdriver,并在内核空间申请一块buffer用于接收IPC数据,进入等待状态打开binderdriver,并在内核空间申请一块buffer用于接收IPC数据,然后serviceserver生成IPC数据传递给binderdriver存放在之前申请的buf
4、fer为serviceserver初始化binder_proc结构体开辟buffer并根据IPC包中的handle寻找到servicemanager的bufferServiceManager的bufferServiceserver的buffer传送IPC数据接收数据并注册Serviceserver服务注册服务后返回应答数据返回应答数据接收应答数据并处理ServiceManager服务客户端BinderDriverServiceManager的bufferServiceserver的buffer进入等待状态准备接收IPC数据找到ServiceManager的buffer并将IPC数据包传入
5、buffer打开(BD)开辟buffer将handle值为零的IPC包传到buffer得到handle接收数据并检索需要的服务将检索到的服务编号handle插入IPC包并返回返回数据服务客户端BinderDriverServiceserver将检索得到的handle插入IPC客户端的bufferServiceserver开辟buffer进入等待接收IPC状态根据handle找到Serviceserver的buffer并传递IPC数据包得到数据并调用服务返回应答数据
此文档下载收益归作者所有
点击更多查看相关文章~~