zoukankan      html  css  js  c++  java
  • Binder驱动理解

    1、Binder的三层架构

    2、BC、BR的理解

    通信模型

    Binder协议包含在IPC数据中,分为两类:

    • BINDER_COMMAND_PROTOCOL:binder请求码,以”BC_“开头,简称BC码,用于从IPC层传递到Binder Driver层;
    • BINDER_RETURN_PROTOCOL :binder响应码,以”BR_“开头,简称BR码,用于从Binder Driver层传递到IPC层;

    通信过程

    3、mmap原理(内存机制)

    虚拟进程地址空间(vm_area_struct)和虚拟内核地址空间(vm_struct)都映射到同一块物理内存空间。当Client端与Server端发送数据时,Client(作为数据发送端)先从自己的进程空间把IPC通信数据copy_from_user拷贝到内核空间,而Server端(作为数据接收端)与内核共享数据,不再需要拷贝数据,而是通过内存地址空间的偏移量,即可获悉内存地址,整个过程只发生一次内存拷贝。一般地做法,需要Client端进程空间拷贝到内核空间,再由内核空间拷贝到Server进程空间,会发生两次拷贝。

    为什么不让发送端和接收端直接映射到同一个物理空间,这样连一次复制都不需要了?

    答:多进程的同步问题复杂,Android选择这个选择是基于速度和安全性的考虑。

    Binder进程间通信的数据流程图:

  • 相关阅读:
    antd的form表单4.0
    antd的select搜索展现错误
    ts的枚举类型简化if else if判断
    深入解读webpack
    常用es6语法总结
    手动配置webpack
    apply,all,bind的区别
    面试题小结
    react中根据后台值动态配置
    react动态路由以及获取动态路由
  • 原文地址:https://www.cnblogs.com/diffx/p/12634567.html
Copyright © 2011-2022 走看看