Binder通信机制

作者: 瑟闻风倾 | 来源:发表于2019-11-06 15:14 被阅读0次

应用:广播内部实现原理

1. 与Binder相关的linux内核知识

linux相关知识.png
  • 进程隔离和虚拟地址空间:每个进程都占有一个虚拟的地址空间,通过进程隔离技术保证操作系统中的各个进程互不干扰
    备注:不同进程间数据不共享,android中使用binder通信机制实现进程间通信
  • 系统调用:用户空间通过系统调用来访问内核的某些程序
    备注:内核保护机制将内核层和用户空间分离,并限定用户空间可以访问的内核数据
  • binder驱动:在android系统中binder驱动运行在内核空间中,负责各个进程通过binder通信内核进行交互的模块

2. Binder通信机制

(1) What is Binder:Binder 是一种跨进程的通信机制
(2) 为什么要使用Binder:Android所基于的Linux内核虽然已有很多的跨进程通信机制(如:管道、Socket等),但是作为应用层,进程间的通信非常频繁,对跨进程通信机制的性能要求更高,Binder在性能上比传统的Socket更高效;而且传统的跨进程通信对通信的双方没有严格的限定(如:socket通信的IP地址是客户端填写,可进行人为地伪造),Binder会使通信更安全(协议本身就支持通信双发的身份校验)。所以android有了特有的跨进程通信机制Binder,他比传统的跨进程通信机制更高效安全
(3) Binder通信模型(c/s)

Binder通信模型.png
通信的步骤:
  • 建立ServiceManage表
  • 进程启动时会在ServiceManage中注册
  • 进程A访问进程B时会先去ServiceManage表中进行查询,ServiceManage返回查询结果给进程A

(4) Binder跨进程通信机制原理


Binder通信机制原理.png

如:Client端(进程A)访问Service端(进程B)的Object对象的add()方法

  • 建立ServiceManage表
  • Service端在ServiceManage中注册Object对象的add()方法
  • Client端请求Service端的Object对象的add()方法时,会去ServiceManage表中进行查询,ServiceManage返回Object的代理对象
  • Client端调用代理对象的add()方法时,Binder驱动会去Service端查找真正的Object对象,并调用add(),之后将add()方法的结果返回给Binder驱动,Binder驱动再将结果返回给Client端。

注意:客户端进程仅持有了服务端的代理对象,代理对象协助驱动去完成跨进程通信

  • 对于Service端进程来说:Binder指Binder本地对象
  • 对于Client端进程来说:Binder指Binder代理对象

3. AIDL实现

(1) AIDL:AIDL(Android Interface Definition Language:Android接口定义语言)是 Android 提供的一种进程间通信 (IPC) 机制

相关文章

  • Binder 总结

    什么是binder binder是Android 中的一种进程间通信机制(IPC机制) binder 为什么会出现...

  • Android Binder(下)

    2. Binder通信机制 2.1 Binder通信模型 我们把跨进程通信的双方叫做Server进程(简称Serv...

  • Binder

    Binder是Android中跨进程通信的一种机制,Binder机制的优点有: 1.高效 Binder数据拷贝只需...

  • Android Binder

    Binder Binder是什么? Binder是一种进程间通信机制为什么是Binder? Binder架构 Bi...

  • ServiceManager 的启动过程

    ServiceManager 是 Binder 进程间通信的核心组件之一,扮演者 Binder 进程间通信机制的上...

  • Android系列-Binder机制

    Binder 通信架构简介 Binder 采用 C/S 架构,是 Android 提供的一种通信机制,通过 Ser...

  • 2.6基础知识-Binder

    Binder详解 1 .Linux内核的基础知识(跟Binder有关的) Binder通信机制介绍 AIDL实现 ...

  • Binder原理讲解(一)

    binder框架 1、Binder到底是什么? binder是进程间通信机制。也是一个驱动。Binder.java...

  • 2018-09-04 binder

    【转】图文详解 Android Binder跨进程通信的原理 [【转】](Android Binder机制(超级详...

  • Android开发进阶——binder通讯学习

    什么是binder 通常意义下,binder指的是一种通信机制 对Server端来说,Binder指的是Binde...

网友评论

    本文标题:Binder通信机制

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