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进程间通信的数据流程图:

  • 相关阅读:
    8-JS闭包、回调实例
    7-闭包、回调
    6-JS函数(二)
    5-JS函数
    4-JS对象
    3-WebPack
    2-Babel
    1-NPM
    25-React事件处理及条件渲染
    java初始化笔记
  • 原文地址:https://www.cnblogs.com/diffx/p/12634567.html
Copyright © 2011-2022 走看看