Dalvik虚拟机简介及架构级移植优化方向.ppt
《Dalvik虚拟机简介及架构级移植优化方向.ppt》由会员分享,可在线阅读,更多相关《Dalvik虚拟机简介及架构级移植优化方向.ppt(20页珍藏版)》请在三一办公上搜索。
1、Android Dalvik 虚拟机初识及架构简析,LOGO,嵌入式系统概述,1,2,3,4,本节主要内容,5,6,LOGO,1、Dalvik虚拟机初识及基本特性,什么是Dalvik虚拟机?让我们从认识Java虚拟机开始:Java虚拟机(JVM)是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。它有自己完善的硬件架构(如处理器、堆栈、寄存器等),还具有相应的指令系统。使用“Java虚拟机”程序就是为了支持与操作系统无关、在任何系统中都可以运行的程序。Davlik虚拟机同Java虚拟机同样是运行Java程序的虚拟机,但Davlik虚拟机具有其独特特性:Dalvik虚拟
2、机是Android程序的虚拟机,是Android中Java程序的运行基础。其指令集基于寄存器架构,执行其特有的文件格式dex字节码来完成对象生命周期管理、堆栈管理、线程管理、安全异常管理、垃圾回收等重要功能。它的核心内容是实现库(libdvm.so),架构由C语言实现。依赖于Linux内核的一部分功能线程机制、内存管理机制,能高效使用内存,并在低速CPU上表现出的高性能。每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。让我们看看Dalvik虚拟机处在Android系统架构的什么位置:,LOGO,LOGO,2、Dalvik虚拟机与Java虚
3、拟机的区别,然而:Dalvik VM Java VMdalvik基于寄存器,而JVM基于stackDalvik执行的是特有的DEX文件格式,而JVM运行的是*.class文件格式。优势:1、在编译时提前优化代码而不是等到运行时2、虚拟机很小,使用的空间也小;被设计来满足可高效运行多种虚拟机实例。3、常量池已被修改为只使用32位的索引,以简化解释器,LOGO,JVM的字节码主要是零地址形式的,概念上说JVM是基于栈的架构。Google Android平台上的应用程序的主要开发语言是Java,通过其中的Dalvik VM来运行Java程序。为了能正确实现语义,Dalvik VM的许多设计都考虑到与
4、JVM的兼容性;但它却采用了基于寄存器的架构,其字节码主要是二地址/三地址的混合形式。基于栈与基于寄存器的架构,谁更快?现在实际的处理器,大多都是基于寄存器的架构,从侧面反映出基于寄存器比基于栈的架构更与实际的处理器接近。但对于VM来说,源架构的求值栈或者寄存器都可能是用实际机器的内存来模拟的,所以性能特性与实际硬件又有不同。一般认为基于寄存器架构的Dalvik VM比基于栈架构JVM执行效率更高,原因是:虽然零地址指令更紧凑,但完成操作需要更多的load/store指令,也意味着更多的指令分派(instruction dispatch)次数与内存访问次数;访问内存是执行速度的一个重要瓶颈,二
5、地址或三地址指令虽然每条指令占的空间较多,但总体来说可以用更少的指令完成操作,指令分派与内存访问次数都较少。我们从下面的截图可以明了的看到与同一段Java代码对应的Java bytecode 与Dalvid bytecode的比较。,LOGO,LOGO,Dalvik字节码以16位为单元(或许叫“双字节码”更准确)。上面代码中有5条指令,其中mul-int/lit8指令占2单元,其余每条都只占1单元,共6单元=12字节。,Java字节码以1字节为单元。上面代码中有11条指令,每条都只占1单元,共11单元=11字节。,基于寄存器与基于栈的区别更详细的介绍见补充文档。,LOGO,Dalvik专有的D
6、EX文件格式一个应用中会定义很多类,编译完成后即会有很多相应的CLASS文件,CLASS文件间会有不少冗余的信息。dex字节码和标准Java的字节码(Class)在结构上的一个区别是dex字节码将多个文件整合成一个,这样,除了减少整体的文件尺寸,I/O操作,也提高了类的查找速度。原来每个类文件中的常量池现在由DEX文件中一个常量池来管理。DEX文件可以进行进一步优化。优化主要是针对以下几个方面:1、调整所有字段的字节序(LITTLE_ENDIAN)和对齐结构中的没一个域 2、验证DEX文件中的所有类 3、对一些特定的类进行优化,对方法里的操作码进行优化 DEX字节码的生成过程将在后续的专有工具
7、介绍中给出。,为什么弃用已有的字节码文件(CLASS文件)而采用新的格式呢?,LOGO,3、Dalvik虚拟机源码目录简析,通过以上的介绍,我们对Dalvik VM能实现的功能以及为什么需要这么一个虚拟机有了初步的认识。观其内部,Android VM的架构是什么样子的呢?在源码中,Dalvik VM相关的内容在Android中是一个独立的代码路径:dalvik/,其中包含了目标机和主机的内容。其主要的目录如下所示:,Dalvik/|-Dx|-Vm|-Arch|-Mterp|-Native|-Compiler|-Dalvikvm,Dalvik/dx目录的内容是dx工具库,其最终将dx专有工具(可
8、执行文件)。另外与dx目录同级的文件夹dexdump、tools同样对应几个专有工具。Dalvik/vm目录的内容是虚拟机核心实现,其最终将生成libdvm.so(Dalvik虚拟机)。Davlik/dalvikvm目录中的内容是虚拟机的入口程序,会生成dalvilvm可执行程序。,LOGO,由于Dalvik中许多代码直接来源于Apache Harmony项目,因此,通过了解Apache Harmony项目对我们认识DalvikVM有很大的帮助。Apache Harmony技术架构如下所示:,LOGO,从应用程序的执行流程来看Dalvik VM的组成部分:,DX工具:由Java编译器编译后的.
9、class转换成DE格式。类加裁器:1、原始加载器,加载native实现的类;2、加载器object,加载java实现的类。(所有process共享)执行引擎(解释器):根据其自身的一套指令集对dalvik bytecode进行解释。另外包括在此流程中实现的内存管理及线程机制,LOGO,DEX文件的生成:Android系统和Dalvik虚拟机提供了工具(DX)在把Java源代码编译成CLASS文件后 使用DX工具 DEX文件的结构相对于.jar更加紧凑 但是为了获得高效率我们还得进一步对.dex进行优化。,LOGO,4、Dalvik虚拟机专有工具的功能及使用,Dalvik的虚拟机专有工具的功能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Dalvik 虚拟机 简介 架构 移植 优化 方向

链接地址:https://www.31ppt.com/p-2407163.html