QEMU虚拟机的移植和优化

上传人:沈*** 文档编号:78219058 上传时间:2022-04-21 格式:DOC 页数:120 大小:150KB
收藏 版权申诉 举报 下载
QEMU虚拟机的移植和优化_第1页
第1页 / 共120页
QEMU虚拟机的移植和优化_第2页
第2页 / 共120页
QEMU虚拟机的移植和优化_第3页
第3页 / 共120页
资源描述:

《QEMU虚拟机的移植和优化》由会员分享,可在线阅读,更多相关《QEMU虚拟机的移植和优化(120页珍藏版)》请在装配图网上搜索。

1、QEMU虚拟机的移植和优化 ADissertationSubmittedto Zhejiang reUnVivers。s1tffortheoereeee Y Deg Masterof Engineering VirtualMachine QEMU Author: YanWeiBin Supervisor: 墨Q堡i垒羔金!Q至:! iYi望g Subject:Q里卫望主皇!卫卫!i堡垒主iQ旦!里曼h翌Q!QgY Col lege: gQ!里皇g金Q至堡Q里Q丛主皇!旦i金旦g金 SubmittedDate: |I垒望坠垒!Y2垒Q!窒 ILUlllllllllllllll 412lllI 0

2、0 6 浙江大学硕士学位沦义 摘要 摘要 近年来,虚拟机技术再度成为学术界和工业界的热点话题。虚拟机技术在云 计算、高可用服务、安全等很多领域得到了广泛的应用。在嵌入式开发中,通过 在PC机或者服务器上运行嵌入式体系结构的虚拟机,也可以为嵌入式操作系统、 应用程序的开发和测试提供极大的便利。本文在分析各种不同类型的虚拟机及其 典型代表的基础上,选择了QEMU作为在IA-32体系Pc机上实现csky嵌入式体 系结构虚拟机的实验平台。 本文的主要贡献为:首先,深入分析了QEMU用户模式和系统模式的内部实 现机制。介绍了将QEMU的两种模式移植到csky体系结构时遇到的问题及相应的 解决方案,提出了

3、一系列QEMU前端移植的策略。然后,我们尝试对QEMU的寄存 器分配机制进行改进,提出并实现了基于“最小交叉数”的寄存器分配算法,实 验数据表明优化寄存器分配机制确实可以一定程度上提高系统性能。最后,我们 对QEMU的调试功能进行了增强。目前QEMU的调试模块在实现断点和单步功能时 需要频繁的清空翻译块缓冲,这可能导致调试时较差的用户体验。本文提出了使 用独立的解释执行模块支持单步,以及运行时判断断点状态的翻译方案,使调试 过程中不再需要清空翻译块缓冲,且最小化了需要重新翻译的翻译块数量。另外 本文还通过实现一种新的子进程调试端口选择方式,为QEMU用户模式增加了多 进程程序调试支持。 QEM

4、U,动态二进制翻译,移植,优化,调试 关键词: Abstract 浙江大学硕士学位论文 Abstract machine once becomeahot bothin Inrecent technology topic years,virtual again machine havebeen usedin academiaand circlesVirtual industry technology widely availabi researchand otherfieldsIn cloud lityservices,securitymany computing,high area,avirt

5、ual board on orserveralso embedded developmentrunningpc development and ofembedded can a convenienceto testing operatoring providegreat developing differentofvirtualmachinesand and the types systemapplicationAfteranalyzing asthe of their choosethe QEMU expefimenmlplatform typicalrepresentative,we ma

6、chineontheIA?32architecture a virtual esky pc。 implementing are:First studiedthe Themaincontributionsofthisdissertationof all,we QEMU describedthe virtualmachineSintemal mechanism,and problems, implementation usermodeand modeto encounteredinthe of QEMUS system csky processporting front solutionsWeal

7、so several for their strategyQEMUS architecture,and proposed and we to the allocation end try improve mechanism,proposed portingThen register new allocation whichbasedon”minimum a algorithm crossing implementedregister can datashowthatthenew allocationmechanism register number”Experimental anew toso

8、me we indeed systemperformanceextentFinallyproposed improve mechanism,whichusea moduletO single。step separateexplanationsupport singlestep thetranslationmoduletOdetecttheStatuSof we execution,and breakpoints modify hostcodeAfterthese isno need when thetranslated improments,itlonger executing tb then

9、umberoftbwhichneedretranslateiSminimizedIn toflushthe buffer,and alsoaddthe of additiontothese supportmulti-processesdebugging improvements,we anewchild selectionmode for processdebugport supportQEMUbyimplementing Keywords:QEMU,dynamicbinary 目录 浙江大学硕士学位论文 目录 摘要i Abstractii 第1章绪论1 11课题背景1 12本文的工作i1 1

10、3本文的组织2 I4本章小结2 第2章虚拟机技术综述3 21虚拟机的概念3 22虚拟机的分类3 23进程虚拟机5 231动态二进制翻译:6 232高级语言虚拟机7 233动态二进制优化7 234操作系统级划分7 24系统虚拟机8 241客户和宿主同架构的系统虚拟机9 242客户和宿主不同架构的系统虚拟机10 243半虚拟化和预虚拟化11 25 QEMqJ简介13 26本章小结13 第3章移植QEMU用户模式15 3I QEMU重要机制分析15 311翻译和执行的基本单位15 31-2直接跳转链16 313微指令和临时变量18 32寄存器的剪裁映射2l 33用户模式指令翻译22 浙江大学硕士学位

11、论文 目录 331简单指令翻译22 332复杂指令翻译和Helper机制24 34其它重要的移植工作26 341系统调用映射26 342模拟Linux信号处理机制26 35本章小结28 第4章移植QEMU系统模式29 41系统模式指令翻译29 411特权指令的翻译策略29 412切换寄存器组指令的翻译3l 42Softmmu的实现33 421系统模式下的内存访问33 422地址转换过程的实现34 423 Softmmu对指令翻译的影响35 43机器管理和外围设备实现36 431设备和机器管理36 432实现一个外围设备38 44本章小结41 第5章优化QEMU寄存器分配机制42 51 DBT系

12、统中的寄存器分配42 511简单寄存器分配法43 512全局寄存器分配法43 513 Next-use寄存器分配法43 51-4简化的图着色寄存器分配法43 52 QEMU的寄存器管理44 521 QEMU的寄存器分配机制44 522当前机制的缺陷45 53改进方案及实现46 531基于最小交叉数的分配机制46 532改进分配机制的实现方案48 54本章小结49 II 录 浙江大学硕士学位论文 第6章完善QEMU的调试机制50 61远程调试中的断点机制5l 611软件断点的实现方式51 612 GDB远程调试中的断点机制52 62系统模式的断点和单步实现53 621翻译块的管理53 622单步

13、功能的实现机制54 623断点功能的实现机制55 63改进方案及实现57 631使用独立的解释模式实现单步57 632基于运行时判断的断点支持58 64用户模式多线程调试60 65本章小结62 第7章实验结果及分析64 71用户模式移植实验结果64 72系统模式移植实验结果65 73寄存器分配机制改进实验结果66 74调试机制改进实验结果67 75本章小结70 第8章总结与展望71 参考文献72 攻读硕士学位期间主要的研究成果75 致谢76 III 浙江大学硕士学位论文 图【-j录 图目录 图21计算机系统的三个不同抽象层次4 图22虚拟机的分类5 图23动态二进制翻译系统的主要执行流程6 图

14、24半虚拟化的主要执行流程1l 图25三种不同的同构系统虚拟机实现13 图31一个翻译块的执行过程16 7 图32翻译块直接跳转示意图1 图33直接跳转链表18 图34指令翻译流程19 图35寄存器的两种映射方式22 图36翻译lsl指令生成的host基本块24 图37用户模式虚拟Linux信号的初始化27 图41特权指令翻译方案二30 图42 csky体系的不同寄存器组一3l 图43 QEMU访存示意图33 handlemmu 图44 esky fault执行流程一35 图45翻译过程死循环示意图36 图46基于qdev的设备和机器管理37 图47使用总线连接外围设备38 图48UART的数

15、据交互40 图51 QEMU寄存器分配机制44 图52临时变量的DEF和USE46 图53两个生命期的交叉数47 图54算法增加的数据结构一49 图61调试模块和虚拟机的交互50 图62 gdb的软件断点实现机制5l 图63断点处理中gdb和QEMU的交互53 图64tbs管理示意图54 图65 QEMU单步处理流程55 图66典型应用场景下的QEMU统计信息58 图67改进方案下断点的处理过程60 图68 fork之后子进程的处理61 图69新方案中对forkvfork的处理62 图71 QEMU用户模式测试结果65 图72 QEMU系统模式测试结果66 IV 图目录 浙江大学硕士学位论文

16、图73寄存器分配算法性能对比67 图74调试模块改进前68 图75调试模块改进后68 图76测试用例对应的汇编代码70 V 浙江大学硕士学位论义 表 录 表目录 表31四种临时变量的比较2l 表32 TCG的移位运算指令24 uart需要的函数39 表41实现csky 表61三种单步实现方案的对比57 vI 浙江大学硕士学位论文 第1章绪论 第1章绪论 11课题背景 Csky是核高基重大专项中由杭州中天微公司开发的一种RISC类型的嵌入式 款高中低搭配的微处理器。目标应用领域为机顶盒、手机以及一些其它的Android 设备。 我们在核高基重大专项的“高性能嵌入式CPU关键技术研究”分课题中,为

17、 组成了一个基本完善的开发工具链。但是基于开发板的调试测试环境使用起来有 诸多不便,而我们基于传统解释执行技术实现的模拟器由于执行效率过低无法满 足使用需求。 基于以上出发点,我们希望实现一个可以在IA32体系的PC机或者Itanium 体系的服务器上高效率执行的csky体系的模拟器或者虚拟机。从而为我们工具 链,操作系统等的开发工作提供便利,并且可以提供给下游厂商的嵌入式开发人 员使用。 12本文的工作 本文首先对虚拟机技术进行了综述,列举了各种不同类型的虚拟机,分析了 它们各自的常用实现技术和典型产品。在其基础上,我们选择QEMU作为我们后 续移植和优化工作的实验平台。 目前,QEMU的前

18、端已经被移植到了Arm,Mips等多种体系结构,这从侧 面说明了它具有很好的可移植性。但QEMU官方在文档方面的工作十分滞后,目 前仍然没有任何具体的移植参考文档。其它体系结构的移植实现可以在移植接口 方面提供一定的参考,但如何结合体系结构的特点实现一个高性能的移植仍然是 新的体系的移植者需要着重考虑的问题。为此,本文结合csky的移植实践,研究 浙江大学硕士学位论文 第l章绪论 了QEMU用户模式和系统模式移植中的重要机制的实现策略。 目前QEMU内部实现了基于生命期分析的死代码消除等优化措施,但也仅限 于类似的少数简单的优化。在性能方面QEMU尚有很多优化的空间,例如它的寄 存器分配机制仍

19、然非常简陋。本文尝试从寄存器分配机制入手,改进QEMU的寄 存器分配方法,并研究其对系统整体性能的影响。 QEMU提供的调试功能为应用软件开发和内核开发提供了极大的便利,但其 调试模块在实现单步执行,断点等功能时频繁的清空翻译块缓冲,严重影响了调 试时的性能表现,导致较差的调试体验。本文尝试通过实现新的单步、断点支持 机制,以彻底去除清空翻译块缓冲的操作,并尽量减少需要重新翻译的翻译块数 目。 13本文的组织 论文的组织结构如下: 第二章介绍了虚拟机的概念、种类和实现技术。 第三章分析了QEMU的一些重要机制,介绍了移植QEMU用户模式的主要 工作及移植策略,并对我们移植到esky体系的用户模

20、式QEMU进行了测试。 第四章介绍了移植QEMU系统模式时,与用户模式相比新增的工作以及实现 机制。最后通过测试对比了我们移植的QEMU用户模式和系统模式的性能表现。 第五章介绍了我们提出的寄存器分配算法的原理、实现和性能表现。 第六章在详细分析QEMU调试模块的断点、单步机制的基础上,阐述了我们 的改进方案。最后介绍了如何为用户模式增加多进程调试支持。 第七章对全文进行总结,并对进一步的研究工作提出了展望。 14本章小结 本章首先介绍了本文研究的课题背景和出发点;然后对文章完成的工作进行 了简要介绍;最后对本文的文章组织进行了说明。 2 浙江大学硕士学位论文 第2章虚拟机技术综述 第2章虚拟

21、机技术综述 21虚拟机的概念 抽象是现代计算机系统软硬件设计中最重要的方法之一。通过将整个系统划 分为多个不同的层次并在每个层次定义良好的接口,使每个子系统或者组件可以 忽略底层的细节,大大的降低了实现的复杂度。 例如,现代操作系统中通常将磁盘驱动器抽象为文件系统,应用程序可以通 过文件系统的接口创建、读写文件,而不需要关心磁盘寻址之类的硬件细节。另 set 一个典型的例子是指令集 IsA,instructionarchitecture ,它抽象了计算机硬 件系统的功能,使硬件机器和操作系统可以由不同的厂商开发,只要两者都遵守 了ISA规范,就可以很好的协同工作。 不幸的是,抽象同时也导致了兼

22、容性的问题:完成同样功能的子系统或者组 件可能抽象出不同的接口,而使用不同接口的子系统之间是无法交互的。例如, 虽然现代计算机系统本质上都是图灵机,可以完成同样的功能,但不同的硬件厂 家提供了不同的指令集,导致为一种指令集编译的操作系统二进制映像无法运行 于实现其它指令集的机器之上。 虚拟化技术是一种应对以上兼容性问题的方法。在一个特定的抽象层次上, 使用一个现有子系统或组件模拟出一个不同的接口。从上层系统的角度看,子系 统表现的像是一个,甚至多个不同与真实子系统不同的子系统。 虚拟化技术可以应用于子系统或者组件 例如,我们可以在一种类型的磁盘 驱动器上使用文件来模拟另一种不同类型的磁盘驱动器

23、 。也可以应用于整个计 算机系统,此时,我们将虚拟出来的计算机系统称为“虚拟机”【l】。 22虚拟机的分类 图21所示是一个计算机系统中接近硬件的几个不同的抽象层。ISA位于计 算机硬件系统和软件系统的分界处,它通常被划分为两个部分:只有操作系统可 以使用的特权级指令 图21中由接口3表示 ,和应用程序、操作系统皆可使用 3 浙江大学硕上学位论文 第2章虚拟机技术综述 的用户级指令 图21中由接口4表示 。 interface 提供了一系列的系 binary 应用程序二进制接口 ABI,application 统调用,使得用户进程可以通过用户级指令和系统调用 图21中由接口2表示 来间接访问硬

24、件资源和系统的底层服务。操作系统响应系统调用,在确认用户进 程有响应的权限后,代替它执行访问硬件资源的操作。 interface 则在ABI的基 应用程序编程接口 APl,applicationprogramming 础上提供了更高一级的抽象。高级语言函数库提供的接口 图21中由接口l表 示 封装了系统调用,使高级语言编写的应用程序在支持相同API的不同机器上 编译生成可在该机器上运行的二进制程序。 应用程序 、 7y :程序库 厂、 API V ABI l 操作系统 ISA i 爪 r入 硬件系统 图21计算机系统的三个不同抽象层次 综上所述,计算机系统给操作系统和用户进程提供了不同的接口。

25、从用户进 程的层次看,操作系统提供了系统调用、用户级可用指令和一个独立的地址空间。 而从更底层的,操作系统的层次来看,底层的硬件特性定义了机器,ISA 包括 用户级和系统级 则是底层机器的访问界面。 我们可以从同样的角度将虚拟机划分为两大类,进程虚拟机和系统虚拟机。 其中进程虚拟机用来执行一个单独的用户进程,它随着该用户进程的创建而创 建,并随着该用户进程的销毁而销毁。进程虚拟机模拟了目标体系结构的系统调 用接口和用户级指令接口。而系统虚拟机则提供了一个持久的系统环境,用户可 以在其之上运行操作系统和大量的用户进程,且该虚拟机的状态将被保存在虚拟 4 浙江大学硕士学位论文 第2章虚拟机技术综述

26、 的存储设备中。运行于虚拟机上的用户进程或者操作系统称为客户 Guest ,而 支持虚拟机运行的底层平台则称为宿主 Host ;实现进程虚拟机的虚拟化软件通 常称为运行时 RuntimeSoftware ,实现系统虚拟机的虚拟化软件则被称为虚拟 mac:hinemonitor 【l】。 机监督系统 VMM,virtual 除了模拟机器的抽象层次不同之外,客户和宿主体系结构是否相同也是虚拟 机实现方式的重要决定因素之一。根据以上两点,可以将虚拟机的种类划分为如 图22所示的类型【2J。我们将在后文中对每种不同类型的虚拟机进行介绍。 SameISA dynamic Dynamic Classic

27、System Whole-system tranlators binaryopetimizers VMs VMs Hosted Operating。System High-level-language Codesigned level VMs VMs VMs partition 图22虚拟机的分类 23进程虚拟机 事实上,可以认为几乎所有的现代操作系统都提供了进程虚拟机。在多任务 操作系统中,每个用户进程拥有自己独立的地址空间、寄存器内容和文件句柄等, 并且每个进程都可以通过系统调用访问底层的硬件资源,以至于每个进程都可以 认为自己独立拥有一个完整的计算机系统。 我们可以认为操作系统的多任务功

28、能是一种客户机和宿主机同架构的进程 虚拟机,但是同架构的进程虚拟机并不局限于这种形式,我们将介绍另外两种类 型的同架构进程虚拟机动态二进制优化器和操作系统级划分技术。此外,本 小节中我们还将介绍两种异构进程虚拟机一一基于动态二进制翻译技术的异构 进程虚拟机和高级语言虚拟机。 5 浙江大学硕士学位论义 第2章虚拟机技术综述 231动态二进制翻译 如图23所示,进程虚拟机中我们需要模拟客户机的系统调用和用户级指令。 实现这种模拟的最直接的方式是解释执行:一个解释器程序取指、解码、模拟执 行每一条客户机指令。但是这种方法的执行效率非常低,通常需要数十条宿主机 translation 指令来解释一条客

29、户机指令。动态二进制翻译 DBT,dynamicbinary 技术相比解释执行可以获得较好的性能。它以块为单位将客户机指令翻译为宿主 机指令,并缓冲翻译结果。因此,在长时间运行的程序中,花在指令翻译上的时 间只占总运行时间的一小部分【3】。相比简单的解释执行,动态二进制翻译大大提 高了性能。采用二进制翻译技术的VMM的主要执行流程如图23所示。 从cacheq-,查找当前pc对应的代码块 命巾 未命叶 从当前pc歼始翻译指令直到F条 跳轼指令,I 加入cache 跳转F1标确定,且己绎被翻时, 尝试设置直接跳睾专 执行翻译生成的代码块 正常结 发生异背 处理异常 更新柠序计数器 图23动态二进

30、制翻译系统的主要执行流程 是一个典型的采用动态二进制翻译技术的进程虚拟机,它可以在Itanium体系架 构的操作系统之上执行为IA32 X86 体系结构编译的可执行程序【5】。QEMU用户 模式则使用动态二进制翻译技术实现了一个支持多种不同类型宿主和客户体系 结构的进程虚拟机。 6 浙江大学硕士学位论文 第2章虚拟机技术综述 232高级语言虚拟机 高级语言虚拟机是另一种广泛使用的进程虚拟机。它并不模拟一个真实的机 器,而是模拟一个专门为高级语言设计的指令集体系结构。高级语言虚拟机把应 用程序从对底层的操作系统和硬件设备的依赖中解放出来,使得应用程序只依赖 于虚拟机提供的接口。这种方式极大地提高

31、了应用程序的可移植性。 Gough讨论了应用虚拟机,并比较了使用该技术的两个典型系统【6】:Java虚 拟机和微软NET。两者都使用基于堆栈的指令集,且内在地支持面向对象。它们 的不同之处在于:Java虚拟机更倾向于模拟,而NET在设计之时就考虑了JIT技 术。实际应用中,当运行于队32体系结构上时,两者都使用JIT技术。 233动态二迸制优化 为了减少性能损失,动态二进制翻译器通常在运行时执行一些代码优化措 施。采用这种技术的虚拟机可以在宿主机上运行相同体系的客户应用程序,此时 进程虚拟机的目的不再是解决兼容性问题,而是在运行时优化一些旧的无法重新 编译的可执行文件,以提高其执行效率。我们将这类进程虚拟机称为“动态二进 制优化器”。 动态二进制优化器使用翻译执行过程中收集的profile信息,在运行时对二进

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!