首页 > 编程知识 正文

binder android(binder机制面试)

时间:2023-05-03 08:39:43 阅读:77217 作者:2950

摘要

Binder是安卓

的一个重要而复杂的概念,在整个系统的运行中起着极其重要的作用,但本文并不打算深入分析Binder机制,有两个原因。 一个是现在在网上已经有了

有两篇好文章。 第二,从基础到驱动深入分析Binder机制的过程相当困难和耗时,因此不适合重复制造车轮。 正文的角度是正确的

从整体和概念上分析Android的Binder机制,可以很快了解Binder是什么、Binder是什么以及Binder和APP应用程序开发

的关系是什么,总之,这篇文章还是值得去看的。

什么是Binder

1 .直观上,Binder是一个安卓类,继承了IBinder接口

2 .从IPC的角度来说,Binder是Android中的进程间通信方案,Binder也可以被理解为在linux上没有的虚拟物理设备

从Android Framework来看,Binder是连接服务管理器与各种管理器(activity manager、WindowManager、etc )对应的管理器服务的桥梁

4.

对于Android APP应用层来说,Binder是客户端与服务端进行通信的介质,在笨蛋bindService的情况下,服务端包含服务端的业务呼叫

Binder对象。 通过此Binder对象,客户端可以获取服务端提供的服务或数据。 这里的服务包括常规服务和基于AIDL的服务

为什么安卓内核要使用Binder?

Android有许多客户端-服务器(cs ) APP应用程序,需要在Android内部提供IPC方法。 linux支持的进程通信方式有两个问题:性能和安全性。

眼睛

旧linux支持的IPC包括传统的管道和系统v

IPC )消息队列/共享内存/信号)和套接字,但只有套接字支持客户端-服务器通信方式。 因为插座是共同的一套

网络通信方式在传输效率降低方面存在很大的开销,例如在套接字的连接建立过程和连接中断过程中存在一定的开销。 消息队列和管道采用存储-传输方法,即数量

至少有两个复制过程,从发送方缓存复制到内核打开的缓存,然后从内核缓存复制到接收方缓存。 共享内存不需要复制,但控制复杂,难以使用

使用。

在安全方面

面,安卓作为一个开放、拥有众多开发者的平台,APP应用来源广泛、确保智能手机安全非常重要。 是否有最终用户不想从互联网下载的程序

获取信息的同时窥探隐私数据,连接无线网络,长期操作基础设备,电池很快就会消耗殆尽等。 传统的IPC没有任何安全措施,完全依赖高层协商来确保。 首先是传统的IPC

的接收方无法获取对方进程的可信UID/PID (用户ID/进程ID ),无法确定对方的身份。 Android是每个已安装的APP应用程序自己的

UID,因此进程的UID是识别进程身份的重要标志。 在传统的IPC中,用户只能在分组中写入UID/PID,但这样不可靠,容易被恶意软件利用。 坚实的身体

标记由IPC机制本身添加到内核中。 其次,传统的IPC接入点是开放的,无法建立专用渠道。 例如管道名称、系统

v的密钥值、套接字的ip地址或文件名都是开放的,如果知道这些接入点的程序可以与对方建立连接,就无法阻止恶意程序猜测并获取对方的地址

必须连接。

基于以上的原因

因此,Android需要建立新的IPC机制,以满足系统对通信方式、传输性能和安全性的要求。 这就是Binder。 Binder呢

客户端-服务器通信模式,传输过程是一个副本,添加uid/PIDidid进行发送,同时支持实名Binder和匿名Binder,具有安全性

很贵。 下图为Binder通信管理器的示例。

参考:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。