Android 13(T) - binder阅读开篇

news/2024/9/17 15:59:24

写在前面:

原本计划用一个系列来记录自己学习Android Media框架的心得感受,但是刚刚起步就碰到了问题,由于Media框架中用了许多服务(binder service),而且我不太熟悉binder的用法,所以看代码的过程中心里总有些忐忑,害怕遇到binder,这对我对框架结构的理解学习是十分不利的。

binder作为android中最重要的进程间通信方式之一,不去了解始终是不行的,所以就下定决心去读一读,于是就有了这篇binder阅读开篇。当然这只是我的阅读笔记,共享出来是让想了解binder的同学一起学习,里面肯定会漏洞百出,也会有很多错误,如果有同学看到了错误,欢迎指出,我会努力改进的^_^

关于内容:

网上已经有许多大佬讲解了binder驱动,但是对于我这种小白来说,还是太难理解了。许多博文会去讲解binder是如何做一次数据拷贝的,花很大的功夫做内存分配的讲解,但这并不是我想深入了解的。作为一个新手,我想了解的更多的是binder中的数据是如何传输的?binder对象是如何传递的?从service manager中找到了服务,这个服务是什么?找到了服务怎么就可以调用这个服务提供的方法了呢?…

原先只看了binder C++框架的内容,也就是Bn、Bp那一套,到这里已经可以熟练使用binder了,但是好奇心作怪,又想了解了解上面疑问的答案,可实在是太难了!其实光想讲清楚Bn、Bp那一套,也需要对binder driver有比较多的理解,而这已经远远超出了我能力的范围。

对于我这种新手来说,binder driver还是太复杂,完全不能理解其中的细节实现。最后斟酌了一下,也算是放过自己,阅读过程中只去看大致的流程,譬如mmap,我只需要知道用户空间和内核空间共享了一片内存空间即可,至于如何共享的就不去过多理解,而数据传输部分可以多了解一下。还有其他的一些driver相关的知识,我们只要了解知道,不要深究为什么,不然就会陷入死胡同。

关于参考

学习binder需要很多的前备知识,对于我这位转码的同学(不了解Linux相关的底层操作系统相关的知识)来说,binder driver如天书一般,也下定决心后面会恶补基础知识。

学习过程中参考了很多大佬的博文,这里列出部分我看到的觉得写的好的参考,有了他们的帮助我才能够有理解binder的机会:
Android跨进程通信IPC
Binder系列
Android源码分析 - Binder驱动

代码参考:
Android 13 kernel-5.15
Android 13 framework/native/libs/binder/


http://lihuaxi.xjx100.cn/news/1267693.html

相关文章

【聚类算法】谱聚类spectral clustering

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 说明: 后续增补 1. 正文 1.1 整体理解 谱聚类(Spectral Clustering)是一种基于图论的聚类方法,将带权无…

理论+实践:从原型链到继承模式,掌握 Object 的精髓(二)

前言 理论实践:从原型链到继承模式,掌握 Object 的精髓(二) 前言 上篇文章中介绍了对象,那本篇文章将继续介绍类相关的面向对象编程和原型。 我们知道类中有这三个关键的概念:实例化(instantiation),继承(inheritance),相对多态…

第五章 ResNeXt网络详解

系列文章目录 第一章 AlexNet网络详解 第二章 VGG网络详解 第三章 GoogLeNet网络详解 第四章 ResNet网络详解 第五章 ResNeXt网络详解 第六章 MobileNetv1网络详解 第七章 MobileNetv2网络详解 第八章 MobileNetv3网络详解 第九章 ShuffleNetv1网络详解 第十章…

【C数据结构】带头双向循环链表_HDList

目录 带头双向循环链表_HDList 【1】链表概念 【2】链表分类 【3】带头双向循环链表 【3.1】带头双向循环链表数据结构与接口定义 【3.2】带头双向循环链表初始化 【3.3】带头双向循环链表开辟节点空间 【3.4】带头双向循环链表销毁 【3.5】带头双向循环链表头插 【3…

[Eigen中文文档] 稀疏矩阵操作

文档总目录 本文目录 稀疏矩阵格式SparseMatrix 类 第一个示例SparseMatrix 类矩阵和向量属性迭代非零系数 填充稀疏矩阵支持的运算符和函数基本操作矩阵乘积块操作三角形视图和自共轭视图 英文原文(Sparse matrix manipulations) 处理和解决稀疏问题涉及各种模块&#xff0c…

Android Studio实现推箱子小游戏

项目目录 一、项目概述二、开发环境三、详细设计四、运行演示五、项目总结 一、项目概述 推箱子是一款非常受欢迎的益智游戏,游戏的玩法简单,但是需要玩家具备一定的逻辑思维能力和空间感知能力,因此深受广大玩家的喜爱。在游戏中&#xff0…

macOS Monterey 12.6.7 (21G651) 正式版发布,ISO、IPSW、PKG 下载

macOS Monterey 12.6.7 (21G651) 正式版发布,ISO、IPSW、PKG 下载 本站下载的 macOS 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。另外也支持…

你的电脑该如何选择?-涵子的个人想法

最近,苹果出了一系列的新的电脑,例如Mac Studio,Mac Pro和MacBook Air。三个电脑彻底向我们诠释了:电脑的性能,可以“无限”扩大。至于我们这些“程序猿”,比较钟爱Windows和Linux,那么&#xf…