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

  • 相关阅读:
    个人工作总结2
    个人工作总结1
    《梦断代码》阅读笔记01
    构建之法阅读笔记4
    四则运算-安卓版
    最大联通子数组之和(dfs,记忆化搜索,状态压缩)
    第五周进度报告
    第四周进度报告
    最大子数列之和问题
    构建之法阅读笔记3
  • 原文地址:https://www.cnblogs.com/diffx/p/12634567.html
Copyright © 2011-2022 走看看