1 / 85
文档名称:

Lua虚拟机的机制分析.pdf

格式:pdf   页数:85页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Lua虚拟机的机制分析.pdf

上传人:sp4772 2016/4/7 文件大小:0 KB

下载得到文件列表

Lua虚拟机的机制分析.pdf

相关文档

文档介绍

文档介绍:A Dissertation Submitted toGuangdong University of Technology fortheDegree ofMaster (Master ofEngineering) Analysis on theMechanism ofLua VirtualMachine Candidate:WangSh iwei Supervisor: May2015 School puter Science and Technology Guangdong University ofTehnology Guangzhou,Guangdong,,510006 万方数据摘要摘要自Lua从巴西天主教大学被开发出来已经有20多年。随着计算机应用技术的飞速发展和高级脚本语言的不断完善,Lua能很方便地嵌入到应用程序并为它们提供灵活的扩展和定制功能。与其它同类的高级解释型脚本语言相比,Lua有着两点非常重要的特性:简洁、高效。多数实验表明,Lua在程序执行效率上要比大部分的脚本语言(如 Python、Perl等)高。另外Lua还提供非常丰富和实用的功能,比如函数式编程(所有的函数都是第一类值)、协同程序、自动内存管理等。由于Lua是用C编写而成,它与 C/C++能非常方便的交互,而所有这些特性都归功于它有一个精简的、巧妙的、高效的Lua虚拟机的设计。 Lua在相当长一段时间内都使用堆栈式的虚拟机,。基于寄存器的虚拟机减少了指令总数和指令执行时堆栈调整的开销因此执行效率得到提高。虚拟机的效率除了与指令操作数存储结构有关外还与编译和解释过程相关。解释性源程序一般要经过编译成字节码阶段,然后由解释器逐条解释和执行字节码。解释器中执行框架的设计直接影响了解释效率,Lua采用了一种最简单的执行框架设计方式(switch-case),由于它指令数较少,因此也获得了较好的执行效率。较新版本的Python虚拟机在采用了较好的指令分派方式后也获得了效率提升,而其它的采用效率更高方案的虚拟机必然也在设计上更复杂或占用更多内存。除此之外,垃圾回收(Gc)算法也在一定程度上影响了虚拟机的效率,虽然Lua GC经过了若干技术的优化一比如分代的、增量式的垃圾回收一有着与其他GC机制相差不大的效率。但与其它虚拟机GC机制相比,Lua GC主体仍使用较为古老的标记~清除算法,该算法在标记和回收过程上都比较耗时而且在内存利用率(内存碎片的产生)方面有劣势, 因而在性能上也略低于许多其它的虚拟机,Lua GC机制仍需要改善。本文首先简单的介绍了Lua的语言特性;然后深入分析了Lua虚拟机的实现,特别对Lua的编译过程、线程执行、函数调用和GC过程进行了深度探究;其次将Lua 虚拟机中的关键技术与Python虚拟机的实现进行了比对,解释了其效率差异的原因; 之后再对Lua虚拟机执行框架和GC机制进行改进,在执行框架中加入了查表分派和超级指令方式,在GC方面提出了滑动式分步拷贝算法,并将其应用于Lua GC;最后通过若干组测试用例对所作的改进进行试验,通过对实验结果的比较、分析和总结验万方数据广东工业大学硕士学位论文证了改进的优势和不足。关键宇:Lua虚拟机;执行框架;效率;GC算法万方数据 ABSl]RACT ABSTRACT Ithasbeen mole than20years since Lua was developed by theCatholic University of therapiddevelopment puter application technology and theconthuous improvement ofadvanced scripting language,Lua can be more easilyembedded into applications andprovide aflexibleextension and customization features pared with the other similar advanced interpreted scripting has two critical characteristics:simpler andmore show thatithashigher running efficiency than most other similar scriptinglanguages(such asPython,Perl etc.).Besides, Lua also pro