Binder

作者: 晓晓桑 | 来源:发表于2019-03-19 19:16 被阅读0次

    前言

    Android系统是基于Linux系统的,理论上应该使用Linux内置的IPC方式。Linux中的IPC方式有管道、信号量、共享内存、消息队列、Socket,Android使用的Binder机制不属于Linux。Android不继承Linux中原有的IPC方式,而选择使用Binder,说明Binder具有一定的优势。

    什么是Binder

    • Android系统进程间通信(IPC---Inter-Process Communication-进程间通信)方式之一
    • Linux的驱动/dev/binder (是一个binder文件)
    • 是安卓系统系统中的Binder类,实现了IBinder接口
    • 从Android Framework角度来说,Binder是ServiceManager连接各种Manager和相应ManagerService的桥梁;

    Binder机制具体有两层含义:

    • Binder是一种跨进程通信(IPC,Inter-Process Communication)的手段;
    • Binder是一种远程过程调用(RPC,Remote Procedure Call)的手段。

    使用Binder的原因

    • 性能方面:
      1.socket: 作为一款通用接口,其传输效率低,开销大,主要用在跨网路的进程间通信和本机上进程间的低速通信。
      2.消息队列和管道:采取存储-转发方式,即数据先从发送方缓存区拷贝到内核开辟的缓存区中,然后再从内核缓存区拷贝到接收方缓存区,至少有两次拷贝的过程。
      3.共享内存:虽然无需拷贝,但控制复杂,难以使用。
      4.Binder:只需要一次数据拷贝,性能上仅次于共享内存。

    -稳定性方面

    • Binder基于C/S架构,客户端(Client)有什么需求就丢给服务端(Service)去完成,架构清晰,职责明确又相互独立,自然稳定性好。
    • 共享内存:虽然无需拷贝,但是控制复杂,难以使用。
    • 从稳定的角度讲,Binder机制是优于内存共享的。

    -安全方面

    • 传统的IPC没有任何安全措施,完全依赖上层协议来确保。
    • 传统的IPC接收方无法获得对方可靠的进程用户ID/进程ID(UID/PID),从而无法鉴别对方身份。

    相关文章

      网友评论

          本文标题:Binder

          本文链接:https://www.haomeiwen.com/subject/flgnmqtx.html