
跟面试官讲Binder
文章平均质量分 78
linmiansheng
邮箱 :sheepjtgjfc163.com
展开
-
跟面试官讲Binder(一)
1)Server启动了,他要创建一个Binder实体,它的句柄是0,比如BpBinder(0),当设置了BINDER_SET_CONTEXT_MGR,驱动收到这个命令,它就知道是要将当前进程设置为ServiceManager,于是它就会当前这个Binder实体创建一个Binder节点(BinderNode),它在这里记录了 0 -> ServiceManager这样的mapping。2)另一个Server启动了,它也会创建一个Binder实体,名字叫 XXXManagerService吧,但是它的句柄就不原创 2014-11-26 17:16:00 · 4609 阅读 · 11 评论 -
跟面试官讲Binder(零)
通过上面的简单描述,我们可以这样认为,每一个提供服务的Server都会通过Binder驱动,将自身给注册到ServiceManager中,方便众多想获取服务的Client可以去ServiceManager找到自己。那么,这些Service都会经过内核空间的Binder驱动,其实这个"经过"的说法,本质上,就是Server们会将自身作为一个对象,封装在数据包中,将这些数据复制到内核空间中,由Binder驱动访问。而Binder驱动读取数据包的时候,如果发现其中有Binder实体,类似ServiceMana原创 2014-07-27 14:34:45 · 5072 阅读 · 16 评论 -
跟面试官讲Binder(二)之关于AIDL的认识
面试官开口说:“听你刚才所说,在Android系统中,都是利用Binder来进行进程间通信的,那我怎么听说,还有利用AIDL来实现进程间通信的呢?”。其实,AIDL只是一种描述性语言,其全称是Android Interface Definition Language,即接口定义语言,利用ADT,我们可将自定义的AIDL文件转化成Java代码,而这些代码就能够来进行进程间通信(IPC)。为什么这些代码就能够进行IPC呢?那是因为,这些代码就是定义了Binder机制中作为服务端的Binder对象和客户端中用的原创 2015-01-06 00:14:27 · 5216 阅读 · 3 评论