查看原文
其他

2018面试题之Bind机制完全总结

2018-03-21 yuer 终端研发部

【公众号回复“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

最后

最后希望大家能静下心来,沉淀和成长!  总结才是王道,总结才能提高。愿大家在金三银四的季节里,满意的入坑!

阅读更多

使用Vue开发微信小程序:mpvue框架

Android技术总监应该干的哪些事

NDK项目实战—高仿360手机助手之卸载监听

最新2017(Android)面试题级答案(精选版)

我是如何在天猫、蚂蚁金服、百度等大厂面试中被拒的

相信自己,没有做不到的,只有想不到的

在这里获得的不仅仅是技术!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存