说起Android的Binder,我们都能说些什么?

一.关于概念

1.Binder是一种进程间通信机制,机制就是一种方法论、概念层面的说辞;同是进程间通信机制的,还有管道、消息队列、共享内存、信号量、Socket;

2.从概念到理论实体,Binder机制会落地到如下四个实体:Client、Server、Binder驱动、Service Manager;Client和Server通信通道的建立靠的是Binder驱动在背后的努力;一个系统里必然会存在多个服务,众多Service 必然需要有个Manager来统一管理;

3.四个实体所处的空间和权利不同:Client、Server和Service Manager处在Linux世界里的用户空间里,他们是不同的进程;而Binder驱动则是位于内核空间的神秘力量;在Linux世界里,用户空间的进程之间是隔离的,而位于内核空间的Binder驱动则是有着上帝之手,可以任意触及用户空间里任何进程的内存;Service Manager是用户空间里资格最老的一个Server进程,它的工号(handler)是0;

4.Binder机制的独特和精髓在于:

4.1.对于Client,Binder机制是面向对象编程的,Client想访问某个Service时,只需记住这个Service的名字就可以通过Service Manager的get方法联系到这个Service;然后就可以直接调用到这个Service开放的所有方法;

4.2Binder机制只需一次数据复制就可完成Client与Server的通信,它是怎么做到的?ioctl和mmap是其中的关键人物;Client和Binder驱动之间使用了一次数据复制的指标;到了Binder驱动和Server之间,就只能省省了。省的办法就是通过mmap,将Binder驱动使用的物理内存地址虚拟给Server;这样Binder驱动和Server接下来就是在同一块存储空间上进行读写;另外,依靠精准的状态判断和指针控制,读写Buffer一体了。

5.Binder的本地对象和远程代理

Binder的本地对象指的就是Server的真身;Server的真身只存在于Server所在的进程里;其他Client接触到的Server对象都是替身,即代理;BnXXXService是一个Binder Native类,是Server的真身;BpXXXService是一个Binder Proxy类,是Server的替身;Client得到的实际上是BpXXXService;

6.Binder驱动管理通信之路的要点有哪些?除了一系列的数据结构外,红黑树是相当耀眼的一个名词。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值