2018面试题之Bind机制完全总结
【公众号回复“1024”,送你一个特别推送】
有关面试中Binder的完全详解。金三银四的战乱时节,助你一臂之力!
今日目的
Linux内核的相关知识
Binder通讯机制的介绍
Aidl
一、Linux内核的相关知识
进程隔离和虚拟地址空间
为了保护操作系统的进程互不感染,操作系统中就设计了一个进程隔离的技术,目的就是操作进程可以去操作进程B数据的情况下所实现的。进程的隔离实现用到了虚拟地址空间。两个不同进程的虚拟地址空间其实是不同的,这样就防止不同进程之间数据相互写入。 数据不共享。虚拟。
Binder的系统调用
在Linux内核汇总访问许可的资源,Linux的内核和上层的应用程序分离。一般来讲,用户可以通过系统调用和访问内核的某些程序
Binder的驱动
驱动都是运行在内核之中的,负责用户进程通过BInder通信的内核,来进行交互的一个模块。
二、Binder通信的介绍
为什么使用Binder
Android使用Linux内核拥有者非常多的跨进程通讯机子
相当于传统的socket方式更加的高效
安全高。socket通讯机制是通讯双方手动填写IP地址的,传统的socket通讯没有经过严格的校验。可以进行协议的伪造。而Binder机制从协议本身就支持双方对身份的校验, 这是Binder在安全性上所做的努力。这个BInder的身份校验也是Binder的android权限吗模型的基础。
传统的IPC ,例如Pipe和Socket,执行一次通信需要两次数据拷贝
Binder通讯模型
通通讯录:Binder驱动:两个进程之间的链接桥梁。
Binder通信机制的原理
Client、Server和Service Manager实现在用户空间中,Binder驱动程序实现在内核空间中
Binder驱动程序和Service Manager在Android平台中已经实现,开发者只需要在用户空间实现自己的Client和Server
Binder驱动程序提供设备文件/dev/binder与用户空间交互,Client、Server和Service Manager通过open和ioctl文件操作函数与Binder驱动程序进行通信
Client和Server之间的进程间通信通过Binder驱动程序间接实现
Service Manager是一个守护进程,用来管理Server,并向Client提供查询Server接口的能力
总结
客户端进程只不过是持有了一个服务端的一个代理对象,然后通过代理对象协助驱动去完成了跨进程。
到底什么是Binder!!
1.通常来说,Binder是一种通讯机制
2.对于service进程来说,Binder指的是BInder本地对象/对于Client来说,Binder指的 是Binder代理对象
3.对于 传输过程而言,Binder是可以跨进程传递的对象
面试题管:请说出一个Binder的一个实例。
答案:aidl
最后
阅读更多
相信自己,没有做不到的,只有想不到的
在这里获得的不仅仅是技术!