binder.ppt

binder.ppt

ID:48045223

大小:450.50 KB

页数:14页

时间:2020-01-13

binder.ppt_第1页
binder.ppt_第2页
binder.ppt_第3页
binder.ppt_第4页
binder.ppt_第5页
资源描述:

《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数据包得到数据并调用服务返回应答数据

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
相关文章
更多
相关标签