读书笔记Android的Ashmem机制学习

Posted Ox9A82

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读书笔记Android的Ashmem机制学习相关的知识,希望对你有一定的参考价值。

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

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

  

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

    • open():  对应于ashmem_open,实质上是创建一个ashmem_area结构体,返回到文件结构中。这么做的目的是打开ashmem
    • mmap():  对应于ashmem_mmap,功能是在tmpfs中创建临时文件,并且设置文件映射
    • ioctl():       对应ashmem_mmap,通过swtich结构提供不同的设置功能  

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

  应用层类: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管理器进行操作的),是不能自定义的。

  

以上是关于读书笔记Android的Ashmem机制学习的主要内容,如果未能解决你的问题,请参考以下文章

-Android 的消息机制读书笔记

android开发艺术探索读书笔记之-------view的事件分发机制

《android开发艺术探索》读书笔记--Android的线程和线程池

读书笔记: 博弈论导论 - 14 - 不完整信息的静态博弈 机制设计

读书笔记安卓学习笔记第一篇——个人杂谈

《微服务架构设计模式》读书笔记 | 第3章 微服务架构中的进程间通信 #yyds干货盘点#