【读书笔记】Android的Ashmem机制学习

  Ashmem是安卓在linux基础上添加的驱动模块,就是说安卓有linux没有的功能。

  Ashmem模块在内核层面上实现,在运行时库和应用程序框架层提供了访问接口。在运行时库层提供的是C++接口,在应用框架层提供的是java接口。

  

  首先从驱动模块开始分析起,驱动模块加载之后首先进行misc_register来注册一个ashmem_misc设备。这个设备文件就是"/dev/ashmem"。这个设备对用户层提供了四个操作open、mmap、release、ioctl。但是没有read和write操作,这两个操作靠mmap来实现。

    •   open():  实质上是创建一个ashmem_area结构体,返回到文件结构中

  这里有一个例子,就是创建匿名共享内存文件的函数执行流程。

  应用层类:MemoryFile的构造函数——》JNI函数:native_open——》运行库:ashmem_create_region——》Ashmem驱动的接口函数:open、ioctl——》Ashmem驱动的函数:ashmem_open、ashmem_ioctl

  注意这里的驱动接口open是对应驱动中的ashmem_open的,ioctl是对应ashmem_ioctl的。这个我个人感觉有点像Windows驱动的IRP主功能码对应有分发函数一样,不知道这样理解对不对0.0,当然了Windows应用层是是用固定的函数(如WriteFile等,然后由I/O管理器进行操作的),是不能自定义的。

时间: 2024-10-27 13:10:36

【读书笔记】Android的Ashmem机制学习的相关文章

《Android源码设计模式解析》读书笔记——Android中你应该知道的设计模式

断断续续的,<Android源码设计模式解析>也看了一遍,书中提到了很多的设计模式,但是有部分在开发中见到的几率很小,所以掌握不了也没有太大影响. 我觉得这本书的最大价值有两点,一个是从设计模式的角度去理解Android源码,结合着日常开发中的常用类,对设计模式的理解会更加的深刻:另外一个好处就是了解常用模式,再看其他人写的代码的时候,更容易理解代码思路.下面是我的读书笔记和一些思考,设计模式只整理我认为重要的部分. 建造者模式 建造者模式最明显的标志就是Build类,而在Android中最常

[读书笔记—学习方法]《如何高效学习》- 斯科特&#183;杨

Part 1 整体性学习策略 1.1 什么是整体性学习 整体性学习需要采取多种途径综合学习,而不是试图在大脑中复制一个完美的拷贝. 整体性学习是运用你大脑里已有的丰富的神经元网络吸收.整合信息. 整体性学习在于创造信息的网络,一个知识与另一个知识相互关联,那些相互关联的知识网络使你真正做到对知识的完全理解,从而轻松地驾驭知识. 1.2 整体性学习基于三种主要观点 结构 模型 高速公路 1.21 结构 结构就是说一系列紧密联系的知识体系. 打个比方: 结构就好像你思想中的一座城市,在城市中有很多建

Android系统Binder机制学习总结

一.Binder机制概述 在Android开发中,很多时候我们需要用到进程间通信,所谓进程间通信,实现进程间通信的机制有很多种,比如说socket.pipe等,Android中进程间通信的方式主要有三种: 1.标准Linux Kernel IPC 接口: 2.标准D-BUS接口: 3.Binder接口. 其中,Binder机制是使用最且最被认可的,因为Binder机制有以下优点: 1.相对于其它IPC机制,Binder机制更加简洁和快速: 2.消耗的内存相对更少: 3.传统的IPC机制可能会增加

《如何高效学习》读书笔记(二)——整体性学习技术

整体性学习中最关键的步骤是将所学的知识运用到实际中去, 知识只有获得了在实际生活中的价值才是真正的知识. 只要你用心发现, 几乎所有的知识都有实际价值, 如果能发现知识在你生活中的价值, 知识就与你产生了紧密的联系, 这可能比第二部分要介绍的所有技术都更加有效. 整体性学习技术的实际学习效果更好.整体性学习将观点联系在一起, 应用模型, 建立结构以理解不同类型的知识.在学习整体性学习概念时, 一个很好的方法是把它比喻成下棋, 首先你要了解下棋的基本规则和基本目标,一旦理解了下棋的基本规则, 你就

2015.06.15,学习,读书笔记-《语法俱乐部》学习笔记

第一篇先介绍简单句,从基本句型切入.第二篇探讨的是复句和合句.第三篇的简化从句又建立在第二篇复句.合句的基础上. 第一章:基本句型及补语 提出了五种基本句型: S+V,主语+动词 S+V+O,主语+动词+宾语 S+V+C,主语+动词+补语 S+V+O+O,主语+动词+宾语+宾语 S+V+O+C,主语+动词+宾语+补语 笔记: 像die这种可以独立发生.不牵涉别的人或物,这种动词叫做不及物动词:像kill这种动作,必须发生在另一个对象身上,叫做及物动词,后面通常必须跟着一个宾语来接受这个动作. 系

Android读书笔记——Android studio的安装配置

随着Google为自家"儿子"推出了新的ide--Android studio,并不再更新eclipse,对于Android开发者而言,改用Android studio是势在必行了,作为一名学生党,自学Android也有一段时日了,从当初一开始用eclipse到现在尝试改用Android studio,发现Android studio确实比eclipse好用很多,毕竟Android studio作为Google为Android专门开发的IDE. Android studio 配置 首先

C++ primer plus读书笔记——第2章 开始学习C++

第2章 开始学习C++ 1. endl确保程序继续运行前刷新输出(将其立即显示在屏幕上),而使用“\n”不提供这样的保证,这意味着在有些系统中,有时可能在您输入信息后才会出现提示. 2. C++中关键字和括号间可加空格或不加 return(0); return (0); int main(); int main (); 都是合法的. 但是return0:不合法,中间必须有空格. 3. 声明语句指出信息存储的位置和所需的内存空间.int carrots; 4. ostream类定义的插入运算符(<

【读书笔记】神经网络与深度学习

https://hit-scir.gitbooks.io/neural-networks-and-deep-learning-zh_cn/

spring技术内幕读书笔记之IoC容器的学习

第一篇:概念和设计原理 IoC容器的实现作为Spring的核心内容之一非常有必要拿来研究一下 1.概念 IoC(Inversion of Control,控制反转)必须思考的问题:哪些方面的控制被反转了? 对于这个问题,Martin Flower给出结论是:依赖对象的获得被反转了.基于此,他为控制反转创造了一个更好的名字:依赖注入. SpringIoC模块是这一思想的一种实现,IoC容器把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,降低了组件之间的耦合度,利于功能复用,方便进行