




已阅读5页,还剩68页未读, 继续免费阅读
(计算机软件与理论专业论文)基于进程迁移的语言虚拟机研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
i 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 摘摘 要要 随着计算机硬件性能的日益增强和万维网的迅速发展,计算能力的迁移将会发 挥更加重要的作用并最终被广泛采用。利用虚拟技术进行进程迁移一直是计算能力 迁移的研究热点,但是,这些技术往往存在以下不足:依赖于特定的操作系统;需 要修改内核;迁移的粒度太大。而语言虚拟机可以在编译时期将进程的物理状态转 化为逻辑状态,便于控制进程迁移的粒度并实现跨平台迁移,因此,研究基于进程 迁移的语言虚拟机具有重要意义。 基于进程迁移的语言虚拟机 laovm 实现了应用程序在不同平台上的透明移植 性。 laovm 的主要功能模块包括前端汇编器, 后端执行器和进程迁移机制。 laovm 通过自定义的虚拟指令集,一方面可以尽量贴近不同体系机构的指令集,提供映射 到本地代码的基础;另一方面为前端支持不同程序语言提供了中间表达形式。 laovm 的前端汇编器将虚拟指令汇编成可执行目标代码,进程的物理状态转化为 独立于操作系统的逻辑状态,便于实现进程迁移的平台无关性。laovm 的后端执 行器模拟系统调用,为目标代码提供执行环境,通过跟踪调试监控和分析目标代码 的执行状况。由于 laovm 中迁移进程的粒度比系统级的迁移粒度小,其进程迁移 机制采用 stop-and-copy 策略,在生成进程检查点之后,可以保存程序执行状态或者 迁移到其他主机上,然后在本地或者其他主机上恢复程序执行状态。总之,laovm 的目标是通过前端编译支持、后端虚拟机支持以及进程迁移策略,实现跨平台的、 支持不同程序语言的细粒度进程迁移。 基于 windows 操作系统和 visual studio 平台, 采用 c、 c+语言实现了 laovm。 系统测试和结果分析表明:laovm 实现了预定功能;在局域网内进行进程迁移时, 即使在内存映像达到百兆的情况下,宕机时间保持在 0.5 秒左右,对于时间不敏感的 程序可以忽略;系统吞吐率只与网络环境有关,而不会随着内存映像的增大而变化。 关键词:关键词:语言虚拟机,指令集,汇编器,进程迁移 ii 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 abstract as high performance facilities on hardware and network shift from super-computers to networks of workstations, even to the personal computer, and with the ever-increasing role of the world wide web, we expect migration to play a more important role and eventually to be widely adopted. it is a hot topic nowadays that migrating computing resource employing the virtual technology. however, it is of limitation to utilize the conventional virtual technology that it is not os-independent or fine-grained. with the compiler-time language-level support, the language virtual machine could transform the physical thread state to logic state that facilitates to control migration size and to achieve cross-platform migration. according to the above analysis, i design the language virtual machine laovm for process migration, which can move applications to various platforms transparently. laovm is composed of front-end assembler, back-end virtual machine and the process migration mechanism. through the low level virtual instruction set, it provides possibility that mapping to the local machine code and supporting to different programming languages as the intermediate form of expression. since the source codes are compiled into executable object code, the physical thread state is transformed into the logic thread state, which is independent of the operating system, that achieve the platform-independent mobility in laovm. the back-end virtual machine simulates the implementation of the system calls and provides the environment for object code executing, and we could track and monitor the program running state by the debugger. since the migration size in the laovm is smaller compared to the system-level migration, we adopt a stop-and-copy strategy. after checkpointting, you can choose to save the runtime state or move to other node, and then resume the application runtime in the local machine or in the destination. in short, laovm is aimed to achieve os-indenpdent, language-indenpdent and fine-grained mobility through the front-end compiler-time support, the back-end runtime support and the effective migration strategy. the laovm development is based on windows operating system and visual studio platform, implemented by c, c+ languages, involves the front compiler, virtual instructions set, back-end virtual machine, the save and recovery of process status. according to analysis of testing result and system log, it is feasible for intended function and process migration in the current laovm prototype. the migration time consumed in iii 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 the lan does not exceed half a second, even the memory size for process migration larger than 100m bytes, it is of advantages comparing to the system virtual machine for migration. finally, the test result indicates that system thuoughput is depending on the network condition and insensitive for variable memory. key words: language virtual machine, instruction set, assembler, process migration 独创性声明独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他 个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集 体, 均已在文中以明确方式标明。 本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。 本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密, 在 年解密后适用本授权书。 不保密。 (请在以上方框内打“” ) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日 本论文属于 1 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 1 绪论绪论 本章首先提出了研究的问题和相关的背景,指出了进程迁移是计算能力迁移的 重要途径,接着介绍国内外相关的研究概况,然后说明本课题的背景、目标及研究 内容,最后描述文章的框架结构。 1.1 问题提出问题提出 上世纪 80 年代以来,个人计算机蓬勃发展,使得 pc 几乎成了计算机的代名词。 由于英特尔和微软公司强大的市场运作,人们不知不觉将个人计算机变成了每个单 位的工作终端机,而那些服务能力强大的 pc 机也可以作为服务器使用。但是,这样 一种信息系统构建模式存在以下几点问题:计算能力和资源的极大浪费,在办公、 个人使用等情况下,计算机 cpu 的运行负荷通常在 10%以下;在 moore 定律和软件 发展的推动下,频繁的系统软硬件全抛弃式升级,给用户带来诸多困难,造成极大 社会浪费;这一信息系统构建模式导致了分散式的管理和维护,也就增加了大量的 重复劳动,因而就不可避免地带来了系统管理和维护成本的增加。在总体拥有成本 方面:根据嘉特纳集团1 (gartner group)的调查,五年内 pc 及服务器的软硬件采购 成本仅占所有成本的 32%,14%是管理、监督的花费,16%花在技术支持上,38%则 是花在用户端操作。所有这些成本加起来就称作总体拥有成本。其中除软硬件采购 成本之外的管理使用费用竟占 68%之多,说明 pc 机的易维护性很差。总而言之,计 算资源的虚拟化成为了降低用户使用成本、节约企业运作开销的重要手段,而计算 能力的迁移也必然需要程序和数据的迁移,所以进程迁移成为计算能力迁移的重要 途径。 进程迁移是计算任务进行分发,用户使用环境进行迁移,实现负载均衡和容错 机制的重要手段。传统的进程迁移有进程级别的迁移和绑定到操作系统上面的系统 级别的迁移。通常这些方法都在依赖于修改操作系统内核,局限于特定的操作系统, 局限于某一种具体的面向对象的原语,引起比较大的宕机时间和总的传输时间等方 面有一定的局限性。在这个问题背景下,laovm 旨在通过虚拟机技术实现一种可 以用来进行进程迁移的语言虚拟机,旨在实现跨平台的透明迁移,不依赖于某种具 体的程序语言编写的应用程序,同时实现细粒度迁移。 2 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 1.2 国内外研究现状国内外研究现状 国内外对于计算能力迁移技术的研究主要分为两个方向:系统级迁移,进程级 迁移。随着虚拟机技术的成熟,利用虚拟机进行迁移也成为了重新组合计算资源和 计算环境的热点技术。 1.2.1 系统级迁移及典型系统系统级迁移及典型系统 系统级迁移主要针对的是整个系统,通过系统级迁移可以实现完整的用户使用 环境的迁移。系统级迁移主要优点是可移动性,可以使得用户在任何地方都可以像 在自己的系统上工作一样,有很好的体验。另外,用户每次把系统数据放到服务器 或者存储器上,这样万一本地系统出现问题,系统也可以恢复。但是系统级迁移因 为迁移的是整个系统,迁移粒度很大而且要占用大量的存储空间和网络带宽,是系 统级迁移的最大缺点。另外,迁移过程中还是存在比较大的时延,这也是另外一个 缺点。 目前, 系统级迁移的系统有isr2, collective3, xenmotion4, denali 5, revirt6 以及 vmotion7。 xenmotion和vmotion分别通过虚拟机vmware8和xen9进行live migration4。 他们通过 pre-copy4的迁移策略可以实现系统级别的镜像迭代迁移。 通常这种策略会 引起很小的宕机时间, 但是在内存弄脏(改写或者是替换)的速率比迁移速率还要快的 话,迭代迁移就会基本失效。最好只有通过 stop-and-copy4策略迁移所有的内存镜像 从而带来更大的宕机时间。 live migration 可以实现在迁移的过程中, 服务并不暂停, 最后在迭代所需要传输的镜像很小的情况下,通过一次性的 stop-and-copy 将镜像传 输到目的主机上。 移动计算模型 isr(internet suspend/resume)是由卡耐基梅隆大学开发的, 它消除 了 pc 状态和 pc 硬件环境紧密联系。通过在分布式存储器上安装虚拟机,isr 系统 可以让虚拟机封装执行和用户状态,然后通过分布式存储器可以在不同的时空进行 转换。 isr 模型的这种功能是通过以下两种技术的很好的结合实现的: 虚拟机技术和 分布式存储管理系统。虚拟机技术用来捕获当被挂起时候的用户计算环境。这种环 境包括用户的操作系统,应用程序,数据文件,用户习惯以及当前的执行状态。通 过虚拟机, 这种状态可以直接在恢复点重新安装恢复。 这不是一种 thin-client 的方法, 所有执行过程和计算都是在离用户很近的硬件上发生的。 因此, isr 系统可以提供用 户所期望的很低的时延。 3 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 isr 在分布式存储器上安装了虚拟机, 每个虚拟机封装一个不同的执行和用户的 定制状态,称之为包裹。然后,通过分布式存储器在不同的时空进行转换。用户可 以拥有很多包裹,就像他们可以拥有多个不同操作系统或应用程序包的机子。图 1.1 显示了 isr 客户机的逻辑结构,尽管在这些不同的版本里面每一层组件的具体实现 一直在改变, 但这个结构没有变化过。 在早期的 isr 版本中, vmm 只是用 vmware, 但是现在 vmm 可以是 vmware,kvm 或者 xen。这些虚拟机支持这样一种模式, 在这个模式中,一个本地的磁盘分区持有一种模式。通过截获 vmm 到这个磁盘分 区的引用,isr 层可以直接转向到分布式存储器上。isr 客户端软件在把包裹交付给 分布式存储器层之前会对包裹里面的数据进行加密,从而可以保证用户包裹的私有 特性和整体性。 图 1.1 isr 客户端逻辑结构图 通过分布式存储系统使得可以管理每个 isr 地点需要的技术水平降低。几乎不 需要什么技术来配置、维护新的客户机。类似于备份,存储,负载平衡以及用户管 理等系统管理任务都被集中在一起,放到远程的服务器上进行管理。 个人环境快速部署系统是一个热门话题,他可以帮助个人用户快速构建起个性 化的虚拟使用环境。在这方面,collective 是由斯坦福大学开发的对个人计算机进行 快速部署的系统,运行于现有的 x86 体系结构的计算机中。在该系统中,系统管理 员负责创建和维护桌面应用环境,包括操作系统和应用程序。开发者将这种桌面应 分布式存储 x86 hardware disk i/o intercept and isr smarts virtual machine virtual machine monitor guest applications guest operating system (os) 客户结点 用户程序 硬件和操作系统 isr 拦截层 用户环境镜像 虚拟机 4 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 用环境称为virtual appliances, 用户的个人计算机上运行客户端软件, 称为vat (virtual applications transceiverr)。vat 在本地运行 appliance,并将用户数据保存到网络服务 器上。这种模型通过系统级别的数据迁移极大的简化了计算机的管理,提供了很好 的安全性,并且充分的利用了个人计算机的计算能力。 在 collective 的架构模型中,计算机的状态被分为两类:系统状态和用户状态。 系统状态包括操作系统和所有安装的软件,存储在应用服务器中。用户状态包括用 户的配置和数据,存储在数据服务器中。collective 的体系结构如图 1.2 所示。 用户数据服务器 应用程序服务器 vatvat 图 1.2 collective 的体系结构 当用户需要使用某种计算环境时,可以从应用服务器获取操作系统和应用程序, 从数据服务器中获取相关个人数据。由于应用是在本地运行,因此用户感受到良好 的性能。当系统需要升级时,系统管理员在服务器端对 appliance 进行升级,产生新 的 appliance。当用户在本地重启机器时,最新的 appliance 就会传输到本地。 1.2.2 进程级迁移及典型系统进程级迁移及典型系统 进程级的迁移主要针对单个应用程序,相比系统级迁移,粒度更小,灵活性更 大,但是技术难度也相对较大。由于传统操作系统与应用程序间的紧耦合性使得进 程迁移过程中不可避免的出现残余依赖,即被迁移的应用程序在迁移后的执行极大 的依赖于迁移前所在的操作系统。对进程迁移的研究开始的比较早,到目前为止出 现了大量的进程迁移系统。根据实现方式和目的的不同,这些系统可以分为以下几 类:基于操作系统的进程迁移系统;用户级的进程迁移系统;使用面向对象方法的 进程迁移系统。 5 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 基于操作系统的进程迁移系统需要对操作系统进行修改,使其适合进程迁移的 需求。这类系统主要用于集群环境下,提供单一系统镜像,通过精巧的设计内核来 提供全局的地址空间和本地透明的执行环境。目的是通过进程迁移来进行负载均衡。 如 accent10, mosix11, sprite12, v13等。但是这类系统存在一个普遍的问题,就是 迁移后的进程仍依赖于迁移前所在的节点。对于进程间通信、打开文件、系统调用 等操作仍然要将请求发回迁移前所在的节点,如果迁移前所在的节点出现故障,则 导致被迁移的进程运行失败。用户级的进程迁移系统主要针对集群中长时间运行的 应用程序,这类系统有 condor14, cocheck15, libckpt16, mpvm17等。由于缺乏操作 系统内核的支持,这类系统限制了需要迁移的进程的行为。进程发出的如进程间通 信等请求都将被拒绝。面向对象的进程迁移系统有 abacus18, emerald19, globus20, legion21等。迁移的对象主要是那些用面向对象语言编写的程序。由于是在一个较 高的层次进行抽象,减少了迁移过程中需要记录和移动的状态。但是由于是针对某 种编程语言,使得这些系统缺乏通用性。 zap22是一个典型的基于操作系统的进程迁移系统,由哥伦比亚大学开发。其设 计目标是在网络计算体系结构下支持可迁移的计算环境。这里的网络计算体系结构 不同于集群环境,各台计算机是相互独立的,运行自己独立的操作系统,通过网络 相连接。 zap 可以使运行在其中一台计算机中的应用迁移到另一台计算机上, 而不产 生任何残余依赖。zap 实现简单,以模块的形式加载到 linux 系统中,并不需要对内 核进行修改,但是需要对内核打补丁。 为了支持透明的进程迁移,zap 需要解决三个关键的问题:资源的一致性,资源 的冲突和资源的依赖。zap 引入了一个新的概念:pod (process domain),即一组拥有 独立名字空间的进程。pod 是一个自包含的环境,可以被挂起并存放到存储介质中, 迁移到异地后被透明的恢复。pod 与传统操作系统最大的不同在于 pod 拥有自己私 有、虚拟的名字空间。这种名字空间有两大特点。首先,名字空间为 pod 中的进程 提供了一致的,虚拟的资源名称,避免了直接采用操作系统中的资源名称(如进程号 pid)引起的冲突。其次,名字空间可以保护 pod 中的进程,使其避免与 pod 外那些 不容易迁移的资源发生紧密的关联,降低发生残余依赖的可能。如传统的进程间通 信不能在 pod 内的进程与 pod 外的进程之间进行,二者只能通过网络或是共享文件 的方式进行通信。这两个特点极大的增强了 pod 的独立性和可迁移性。 zap 在 pod 和操作系统之间插入了一个虚拟层, 这个虚拟层执行 pod 的名字空间 6 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 和操作系统的名字空间之间的转换。虚拟层截获系统调用,并转换参数和返回值。 zap 的虚拟层通过结合“检查点恢复”机制来完成 pod 的挂起、迁移和恢复。这 种迁移方式实现简单,由于所有的状态都保存在检查点镜像中,从根本上避免了残 余依赖。pod 的使用方式非常灵活,除了可以通过网络方式进行迁移以外,还可以将 检查点保存在存储介质中,到需要的时候再恢复。 1.2.3 语言虚拟机语言虚拟机 随着虚拟机技术的成熟,虚拟机也成为了一种进程迁移的工具。利用虚拟机可 以将包括操作系统在内的全部状态进行迁移23,甚至异构平台的迁移也可以实现。 在前面介绍过的系统级迁移和进程级迁移的实现中,也利用到了虚拟技术。但是存 在以下问题:系统级迁移粒度太大,灵活性不高,不适合在广域网范围内迁移;进 程级迁移大多对操作系统平台的依赖性很大,而且可能需要修改操作系统的内核。 由于虚拟机的存在使得应用程序同操作系统的依赖性大大降低,同时接管了对 应用程序的管理,所以很容易构建一个统一的平台让应用程序可以迁移至不同的平 台,通过语言虚拟机可以让不同的程序语言共享同一套虚拟指令集,这样可以使得 应用程序的迁移具有其他迁移方法不具备的通用性。语言虚拟机可以在前端编译不 同的程序语言实现的程序,生成虚拟机的指令集,同时在后端设计出虚拟指令的目 标代码执行器。在这个基础之上,语言虚拟机在 ipo(过程间优化),代码生成和优化 等方面有很强的控制能力,可以针对进程迁移进行目标代码的优化和改善。 llvm24是近来出现的一个优秀的编译系统项目, 是美国伊利诺斯大学开展的一 个开放源代码项目。llvm 是定位于实现编译器的基础架构,实现对大多数语言的 编译支持,支持整个程序生命周期的效率优化,包括编译时,链接时,运行时和离 线。同时 llvm 又是一组虚拟指令集合,类似于 risc 指令,独立于具体的语言, 又足够轻量。该项目在重用了 gcc 的前端高级语言处理的同时,采用了自创的代码 优化机制,针对 gcc 的不足做了大量改进,尤其使整个程序的全局优化成为可能。 其生成代码的编译时间明显少于 gcc,并有着更清晰的架构层次和更详细的文档。 如今正逐渐被越来越多的科研机构和商业项目所使用。这当中几乎都是国外的项目, 如 ssapre25 项目,国内可见的唯一应用 llvm 的项目是国防科学技术大学计算 机学院的一个项目26。 llvm 项目致力于程序整个生命周期,包括编译过程,链接过程,执行过程等 阶段的优化,并提供大量用于建立编译器的可重用模块,可帮助减少开发新编译器 7 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 的工作量。目前编译前端已经支持 c、c+等高级编程语言,后端则支持生成 c 语 言代码以及 x86、sparc、powerpc 等处理器的汇编代码。整个 llvm 编译系统的 组成可分成三部分:llvm 中间代码,用于分析、优化、代码生成等工作的集成库, 以及建立在以上集成库基础之上的工具,包括汇编器、链接器、调试器等等27,如 图 1.3 所示。 其他工具其他工具 llvm-link, llvm-ar, llvm-nm, llvm-ranlib, llvm-prof, llvm-ld 调试工具调试工具 bugpoint llvm-extract llvm-bcanalyzer .h, .c, cpp文件 llvm-gcc和llvm-g+gccas和gccld .bc文件.ll文件 llc 目标处理器 汇编代码 llvm-asllvm-dis lli直接 运行 被调用 图 1.3 llvm 工具及其相互关系 joeq28是一个实现了程序分析,性能监控,垃圾回收,编译优化等的语言虚拟 机框架,它作为斯坦福大学高级编译技术的课程项目,也是斯坦福大学 suif 研 究课题组的研究项目之一,是编译技术研究的一个很好的示例。 joeq 为即时编译,高级垃圾回收技术,分布式计算,复杂调度算法和程序状 态实时监控等虚拟机技术的研究提供便利。joeq 是完全是 java 实现的,着力于可 靠性,可移植性,可维护性和高效率。joeq 可以支持 c, c+, java 等语言的动态 编译,链接和执行。该虚拟机里面的每一个模块都有着通用且确定的独立接口, 研究和开发人员可以轻松的在 joeq 的基础上实现新的想法。 joeq 作为一个开源软 件,可以被全世界所有做分布式虚拟机,编译技术和程序性能跟踪等领域的研究 和开发人员参考。 joeq 的设计有如下三个目标。 1. joeq 是开放的,同时又不失易用性和性能。结构是灵活的,能对编译和虚拟 机领域中的静态和动态的编译技术,类型安全、类型不安全的程序语言都支 持,并不局限于某一个研究方向。 8 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 2. joeq 是易于实验的,由于 joeq 主要是用来研究的,所以 joeq 作为一个基础 框架是可以很快实现新的想法的。joeq 用 java 语言实现了整个系统,并从 设计上保持了很好的模块化,所以在实现类似于垃圾回收,异常追踪调试等 方案时提高了开发效率。作为一门动态语言,java 本身就很好的支持动态编 译技术,因为 joeq 的编译器本省就编译并优化了 joeq 的虚拟机,所以它同 样可以很好的对应用程序进行优化。 3. joeq 的目标是更多的研究和开发工作者能利用它进行研发工作。 所以用 java 实现的 joeq 能保证很好的平台移植性。同时对 java 字节码,c,c+和 x86 二进制码的支持对 joeq 的使用提供了更大范围的便利。joeq 已经被广大研 发工作者运用到如下方向:组件接口自动分离,静态程序指针分析,程序调 用的上下文切换,应用程序性能的复杂监控,系统回放点,异常检测,java 操作系统,安全自治系统。同时 joeq 还被作为斯坦福大学的高级编译技术 的研究项目。图 1.4 为 joeq 的系统结构图。 elf binary loader disassemble to quad suif file loader suif to quad java class loader bytecode to quad bytecode decoder front-end memory heap garbage collector memory manager optimization and analysis quad ir compiler class/member metadata introspection , verification, type checking run-time support bytecode ir bytecode/quad interpreters interpreter controllerprofiler quad backend compiled code with metadata dynamic bytecode backend back-end system interface thread scheduler, synchronization, stack walker 图 1.4 joeq 系统结构图 目前大多系统级别虚拟机的迁移都只是进行系统映像的拷贝和恢复,大多数语 言虚拟机的目标都是针对于程序的开发效率等方面,而通过语言虚拟机对多语言程 序支持,并且进行跨平台迁移支持的虚拟机是一个空白。而基于进程迁移的语言虚 拟机目标就是轻量级的应用程序实时状态迁移和对不同语言实现的应用程序的普遍 支持。 9 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 1.3 课题背景、研究内容及论文框架结构课题背景、研究内容及论文框架结构 本课题受国家 973 计划项目“计算系统虚拟化基础理论与方法研究” (no.2007cb310900)支持,属于子课题“虚拟计算系统普适化运行环境研究”。 本 课题面向虚拟计算系统的运行环境,围绕虚拟计算系统的协同、普适特性,考虑用 户操作环境的移植需求、程序运行维护环境的自动配置需求、应用任务协作需求以 及可视化监控与评估需求等,综合运用各种虚拟化手段和技术,设计高效的虚拟运 行环境。 根据课题研究目标和要求,针对计算环境迁移所面临的问题,研究了相关的理 论, 研制开发了基于进程迁移的语言虚拟机 laovm。 laovm 的体系结构包括前端 汇编器,后端执行器和虚拟机的进程迁移机制。laovm 平台能很好地满足课题研 究目标要求,并达到所要求的主要技术指标。laovm 是国内第一个着眼于基于进 程迁移的语言虚拟机,对计算资源迁移,虚拟化编程环境和应用程序性能等有着有 一定的理论探索和重要的实际应用意义。 针对 laovm 虚拟机的设计和实现,研究内容包括:虚拟指令集、汇编器、链 接器、调试器、内存映像拷贝和迁移算法等。 本文内容安排如下。 第 1 章首先简述了基于进程迁移的语言虚拟机的研究背景,接着介绍国内外计 算资源迁移和语言虚拟机基础构架的研究概况,然后说明本课题的背景、目标及研 究内容,最后描述文章的框架结构。 第 2 章首先对 laovm 平台进行整体简介,包括系统体系结构、功能模块及工 作流程,然后介绍 laovm 平台中前端汇编器、后端执行器以及进程迁移模块的基 本思路、功能模块和工作流程。 第 3 章首先描述了虚拟机中的虚拟指令集,然后介绍了符号表的数据结构以及 符号的添加和查找算法,接着说明了前端汇编的两次扫描过程,并对其工作流程进 行了描述,最后对前端汇编器进行了小结。 第 4 章首先介绍了目标代码的后端执行器的执行环境,接着描述了目标代码的 执行过程,然后给出了对中断模拟和跟踪调试的描述,最后对目标代码的后端执行 器进行了小结。 第 5 章探讨了虚拟机的进程迁移机制,首先对进程以及虚拟机中的进程进行了 10 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 描述,对 laovm 中的内存映像加载,迁移算法,进程状态恢复等进行了描述,最 后对迁移机制进行了小结。 第 6 章描述了基于进程迁移的虚拟机 laovm 的测试情况并对实验数据加以了 分析。 第 7 章总结了所做的主要工作,并对下一步需解决的问题进行了说明。 最后是致谢和参考文献。 11 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 2 基于进程迁移的语言虚拟机的设计基于进程迁移的语言虚拟机的设计 本章首先对基于进程迁移的语言虚拟机 laovm 进行整体简介,包括系统体系 结构、功能模块及工作流程,然后介绍 laovm 的前端汇编器、后端目标代码执行 器以及进程迁移模块的基本思路、功能模块和工作流程。 2.1 基于进程迁移的语言虚拟机概述基于进程迁移的语言虚拟机概述 laovm 的第一个目标是为轻量级的应用程序做实时的迁移。它将在以下两方 面大大减少计算资源的浪费:在企业计算方面,由于不同的硬件资源,服务器运行 环境以及很多遗留系统的存在,使得软硬件的更新带来了大量的成本,应用程序的 迁移可以使得服务器计算环境跟服务器的计算资源很好的隔离,节省软硬件的更新, 节省人力成本。在个人桌面方面,由于 pc 的功能的越来越强大,特别是在多核技术 出现,内存和硬盘越来越便宜的情况下,pc 计算资源的利用率是越来越低,应用程 序的迁移不仅能够使得计算资源能够充分利用,而且应用程序状态的实时迁移可以 使得用户的个人习惯能够很方便的转移。 laovm 的第二个目标是对不同语言实现的应用程序的普遍支持。 如果 laovm 仅仅局限于某一种程序语言实现的应用程序,这将使得很多遗留系统将不能够被支 持,同时这种局限性使得它 laovm 的应用范围大大减小。目前 gcc 和 llvm 的 前端都支持多重程序语言,gcc 前端支持的语言包括 c, c+, objective-c, fortran, java 和 ada 等等,而 llvm 也支持 c, c+等程序语言。多语言的编译器前端支持 不仅可以使得 laovm 支持的应用程序更多,而且在跨语言的性能优化,语言交互 等其他方面有了基础。 laovm 的组成包括以下部分。 1. 编译器前端: 将 c, c+, java, perl, python 等不同语言编写的应用程序编译成 自定义的指令集。 2. 指令集:指令可以按照宿主机和客户机指令的异同,可将虚拟机分为相同指 令虚拟机和相异指令虚拟机,如 vmware 就是典型的相同指令虚拟机,而 早期运行在 mac 平台上的 virtual pc 则是相异指令虚拟机。 通过相异指令虚 拟机可以实现软件在异构硬件资源上的移植性, 而相同指令虚拟机则可以直 12 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 接利用指令相同的特点,直接利用物理平台解释部分虚拟机指令,从而在执 行效率上获得一定的优势。 3. 汇编器: 将汇编语言汇编成虚拟机能识别目标代码, 将符号用内存地址替代, 并且进行语言的验证。 4. 虚拟机:在 laovm 的虚拟机里,核心功能包括:文件系统,内存管理,进 程间通信, 系统调用的模拟, 目标机器代码映射, 还有就是内存映像的加载, 迁移以及恢复。 laovm 的体系结构图如图 2.1 所示。论文完成工作为图 2.1 中虚线框内部分。 file system memory manage 安全检查 ruby, python, perl, javascript windows/linux/solaris assembler backend compiler front-end agent common dynamic language interpret laovm-gcc c, c+, java, ada ipc migration virtual system call, virtual interrupt, native code mapping jit cross lang opt debugger support codegen another laovm 前端编译器前端编译器 汇编器汇编器 虚拟机虚拟机 图 2.1 laovm 的体系结构图 2.2 设计思想设计思想 一个软件开发完毕,需要开始考虑部署的问题。部署往往不是一件简单的事, 有一些问题需要解决。早期,java 尚未普及时,许多 java 程序员都会面临一个困扰, 那就是:用 java 开发出来的软件,不保证可以在其他人的 pc 上执行,因为别人可 13 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 能没有安装 jre(java runtime environment)。即使有安装 jre,jre 的版本可能也不 对。即使是现在,这个问题依然存在。 上面所说的一个用户场景引出了一个问题,如果能够使得应用程序能够迁移, 根据研究背景的分析可知,传统的系统级别的迁移粒度太大,一个应用程序的迁移 需要打包这个操作系统进行迁移,传统的进程级别的迁移往往紧耦合于操作系统, 更多用于集群环境里的程序多任务迁移和分发。所以在这些需求之下,如何能够使 得应用程序能够迁移,并且迁移的粒度不大,迁移速度快,同时该应用程序同平台 的依赖性能够降到最低,从而能保证应用程序在不同平台上的迁移。这些背景成为 了 laovm 的设计思路的起源。laovm 致力于提供一个平台,该平台能够支持不 同的程序语言实现的应用程序,同时支持应用程序在不同操作系统上的迁移。 laovm 的应用场景图如图 2.2 所示。 c, c+, java perl, python, php, ruby app 1 app 2 laovm app 1 app 2 laovm migration app napp n 图 2.2 laovm 的应用场景图 二进制翻译29是实现是一种直接翻译可执行二进制程序的技术,能够把一种处 理器上的二进制程序翻译到另外一种处理器上执行。它使得不同处理器之间的二进 制程序可以很容易地相互移植,扩大了硬件和软件的适用范围,有助于软硬件的更 新升级和计算资源的迁移。但是二进制翻译的过程对平台的依赖性太高,在这个基 础上实现进程的迁移除了二进制翻译需要很大的计算资源之外,进程实时状态的迁 移也很难实现。 基于进程迁移的语言虚拟机,通过虚拟机隔离程序对操作系统的依赖,通过编 译和目标代码生成和优化对程序进行进一步的优化,同时前端对不同程序语言的支 持,使得laovm不仅支持传统的c, c+, java等语言,甚至支持php, perl, python等动 14 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 态脚本,从而保证了laovm的应用场景。 2.3 系统结构与功能模块系统结构与功能模块 在这些 laovm 的总体设计背景下,在已经完成的三个子系统中,包括虚拟机 指令集的前端汇编器,目标代码的后端执行器以及虚拟机的进程迁移机制。 2.3.1 前端汇编器前端汇编器 汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执 行指令和汇编伪指令组成。使用汇编语言编写的程序,机器不能直接识别,要由一 种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,也称汇编 器。汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语 言的过程称为汇编。 在 laovm 中,汇编器的目标代码是虚拟机执行的目标代码。首先 laovm 设 计了虚拟机指令集,也就是 laovm 的汇编语言,同时该语言也是 laovm 前端对 c, c+, java等语言编译后生成的指令。 前端汇编器的系统结构和功能模块图如图2.3 所示。 虚 拟 指 令 集 符 号 表 符 号 添 加 错 误 检 测 符 号 查 询 代 码 生 成 第一遍扫描 第二遍扫描 图 2.3 汇编器的系统结构和功能模块图 虚拟指令集:针对利用虚拟指令作为中间语言来构建可重用指令集是解决应用 程序可重用性的重要技术。在 3.1 中介绍了虚拟指令的构建原则和方法,描述了对汇 编指令的语义规则,最后举例说明如何从汇编指令的语义描述规则出发,生成与目 标指令语义等价的虚拟指令。 15 华华 中中 科科 技技 大大 学学 硕硕 士士 学学 位位 论论 文文 符号表:在编译程序中符号表用来存放语言程序中出现的有关标识符的属性信 息,这些信息集中反映了标识符的语义特征属性。在词法分析及语法在分析过程中 不断积累和更新表中的信息,并在词法分析到代码生成的各阶段,按各自的需要从 表中获取不同的属性信息。符号表的作用包括:收集符号属性;上下文语义的合法 性检查的依据;作为目标代码生成阶段地址分配的依据 。具体见 3.2 节。 符号添加:在第一遍扫描过程中,需要在扫描分析过程中不断更新符号表的信 息,将有关的符号以及符号描述信息添加到符号表中。具体见 3.3.1 节。 错误检测:汇编代码中可能会包括语法错误,这时候在扫描过程之中可以及时 检测词法和语法分析过程中发现的错误并给出提示和反馈。具体见 3.3.2 节。 目标代码格式:目标代码是 laovm 的程序区别于其他程序的依据。目标代码 格式的定义了决定了该程序是否包含调试信息,是否属于正确的版本以及相关的验 证信息,具体见 3.4.3。 符号查询和代码生成:它从前几个阶段得到的信息包括中间代码或优化后的中 间代码,以及带有存储信息的符号表。这一阶段的主要任务是把源程序的中间代码 变换成依赖于具体机器的等价的目标代码。具体见 3.4.2。 2.3.2 后端执行器后端执行器 后端执行器提供给用户一个虚拟的应用程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏连云港农业农村局招聘1人考前自测高频考点模拟试题(含答案详解)
- 2025南昌市西湖区疾病预防控制中心招聘工作人员1人考前自测高频考点模拟试题附答案详解(完整版)
- 2025北京市海淀区中关村第一小学教育集团招聘模拟试卷及答案详解(全优)
- 2025贵州黔西南州教育局公益性岗位招聘4人模拟试卷及一套参考答案详解
- 2025年隆昌市公开招聘社区工作者的(49人)模拟试卷附答案详解(突破训练)
- 安全培训支持课件
- 2025年福建泉州市华侨大学分析测试中心招聘实验技术系列人员(4月)模拟试卷及参考答案详解一套
- 2025内蒙古鄂尔多斯市林业和草原局所属事业单位招聘2人考前自测高频考点模拟试题及答案详解(考点梳理)
- 售后服务流程优化及执行方案
- 浦发银行石家庄市桥西区2025秋招结构化面试经典题及参考答案
- 2025年质检员基础知识考试题库及答案(第4套)
- 积极行动主题班会课件
- 比较思想政治教育
- 青岛版六三 三年级 数学 上册 第二单元《第1课时 总量与分量》课件
- DB45∕T 2659-2023 儿童青少年心理健康诊疗服务规范
- 电商税务筹划课件模板
- 洗煤厂安全生产管理制度
- 旧楼拆除防尘降噪专项措施
- 2025年中国毛皮服装市场调查研究报告
- 矿山开采运输管理制度
- 律师行业税务问题课件
评论
0/150
提交评论