没有合适的资源?快使用搜索试试~ 我知道了~
Binder机制原理、源码、AIDL,IBinder,Binder,IInterface,BinderDriver,需要的都在这...
6 下载量 101 浏览量
2021-01-20
08:53:16
上传
评论
收藏 268KB PDF 举报
温馨提示
试读
4页
导读: 本文分为三个阶段, 第一阶段,原理概述,力争说人话的基础上,讲明白Binder机制在搞什么,为什么这样搞,以及具体是怎么搞的。 第二阶段,代码层面描述,主要描述了,AIDL、IBinder、Binder、IInterface、Binder Driver是如何设计和实现第一阶段的构想。 第三阶段,实例操作,不使用半自动的AIDL工具,纯手动利用Binder实现一把进程间通信。 相信这一套军体拳下来,应该能薛伟地掌握Binder的相关原理。 P.S. 本文code部分使用了伪代码,包含但不限于kotlin、java和汉字。。。不过应该都能看懂 Binder是Android系统用来实现高效I
资源推荐
资源详情
资源评论
Binder机制原理、源码、机制原理、源码、
AIDL,,IBinder,,Binder,,IInterface,,BinderDriver,需要的都在这里了,需要的都在这里了
导读:导读:
本文分为三个阶段,
第一阶段,原理概述,力争说人话的基础上,讲明白Binder机制在搞什么,为什么这样搞,以及具体是怎么搞的。
第二阶段,代码层面描述,主要描述了,AIDL、IBinder、Binder、IInterface、Binder Driver是如何设计和实现第一阶段的构想。
第三阶段,实例操作,不使用半自动的AIDL工具,纯手动利用Binder实现一把进程间通信。
相信这一套军体拳下来,应该能薛伟地掌握Binder的相关原理。
P.S. 本文code部分使用了伪代码,包含但不限于kotlin、java和汉字。。。不过应该都能看懂
Binder是Android系统用来实现高效IPC(进程间通信)所搭建的框架。在Android系统中的作用和他的名字一样,是像胶水一样,把系统各个服务进程粘合到
了一起。
那么Android系统为什么要重新构建一个IPC框架呢?而不是直接使用Linux提供的IPC方案,类似管道,信号,socket等,首先是安全性的考量,这些Linux 原
生IPC方案,都不能直接携带进程的信息,只能依赖上层的协议,比如socket是通过ip和端口来区分不同的进程,让伪造访问的难度降低,而Binder 的设计里
是带有uid和pid来标识进程身份的,所以安全性会高很多;其次Binder机制的性能会非常的高,他只需要一次内存的拷贝即可, 而Android系统有很多个重要
的服务进程,例如 AMS,PMS,SMgr,进程之间的交互非常的频繁,对IPC的性能有较高的要求, 最简单的例子,启动一个Activity也是需要IPC的,启动过
程不再本文的描述范围内,有兴趣的话可以自行查阅资料。
首先为什么要IPC框架:
Android系统是基于linux的, 所以存在一个进程隔离进程隔离的概念, 每个进程都由于虚拟地址虚拟地址的技术,认为自己独享整个系统, 所以并不能直接访问对方的内存地
址,导致进程隔离。
那么物理概念的内存肯定只是大家共用的, 一定是可以访问的, 那么如果想完成这种操作就需要进入到内核空间来完成,此时沉入内核空间的进程被称为进
入内核态内核态, 而在用户空间则是用户态用户态,
在内核空间可以获得高级别权限,例如访问所有的内存地址。
那么显然我们打通User Space 中的两个进程,肯定需要一个内核模块来完成,所以我们需要一个Binder Driver,作为桥梁来互相访问各自进程的内存。
那么为什么Binder Driver这个外来物可以做为内核空间的驱动而存在呢,这是因为LKM机制机制,可以让一个可编译的模块作为内核模块进入到内核空间提供服
务,所以Android 系统构建了一个Binder Driver 在内核态提供支持,讲了这么多,好像想做什么大概是明白了,但具体是怎么做的呢,还是不清楚,面对这种
复杂的问题,就是拆分,把他拆分成一个一个问题逐一解决,Android团队设计的时候估计也是这么想的。
假设有一个服务进程S,一个客户端进程C(Binder机制是个C/S架构架构,你们应该已经发现了)首先一个问题就扑面而来,客户端C如何调用服务端S提供的服
务呢,或者说我作为C如何能执行到S的函数,在说白了,需要个协议之类的东西,Binder Driver 对C提供了一个代理,一个IBinder对象,这个东西在C看来
就是S,里面有相同的函数可以提供调用, 当C调用了代理IBinder提供的函数时候,Binder Driver就会让C的线程暂时挂起, 然后他去S那执行真正的函数,
资源评论
weixin_38577551
- 粉丝: 6
- 资源: 939
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功