(通信与信息系统专业论文)linux+vmm内存管理子系统研究与实现.pdf_第1页
(通信与信息系统专业论文)linux+vmm内存管理子系统研究与实现.pdf_第2页
(通信与信息系统专业论文)linux+vmm内存管理子系统研究与实现.pdf_第3页
(通信与信息系统专业论文)linux+vmm内存管理子系统研究与实现.pdf_第4页
(通信与信息系统专业论文)linux+vmm内存管理子系统研究与实现.pdf_第5页
已阅读5页,还剩71页未读 继续免费阅读

(通信与信息系统专业论文)linux+vmm内存管理子系统研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 本论文源于i n t e l 公司的l i n u x v m m 项目,该项目是为了实现集成x e n 与v t 的虚拟机监视器。它能够弥补x e n 半虚拟化的缺点,实现真正的完全虚拟化,并 拥有与x e n 相同的性能优势。 本文在深入研究与分析x e n 虚拟技术的基础上,详细阐述了l i n u xv m m 系统 核一t x , 模块的设计,并着重介绍了内存管理子系统的设计与实现。通过对x e n 的虚 拟化实现的分析和测试,发现并验证了v m m 系统中存在页面抖动现象,由此提 出了解决v m m 页面抖动的虚拟页c a c h e 思想。在此思想的实现中,采用了高效 的虚拟页c a c h e 页面替换算法。 本文提出了l i n u xv m mm m u 虚拟化模型,该模型灵活地实现了m m u 虚拟 化,并保持较高性能。另外还将l i n u xv m m m m u 虚拟化分为与处理器相关层和 与处理器无关层,提高了系统的可移植性。本文最后介绍了m m u 虚拟化性能测 试,测试结果表明我们的设计完全满足预定目标。 关键词:虚拟机,内存管理,虚拟页c a c h e ,影子模式 a b s t r a c t t h i sd i s s e r t a t i o nd e r i v e sf r o mt h eh a t e lc h i n as o f t w a r el a b sl i n u xv m m p r o j e c t t h el i n u xv m m p r o j e c ti st oi m p l e m e n tav m mi n t e g r a t e dx e n w i t hv 工i tc a r lm a k e u p t h e p a r a v i r t u a l i z a t i o ns h o r t c o m i n go fx e na n ds u p p l y af u l lv i r t u a l i z a t i o n e n v i r o n m e n tf o rt h eg u e s to sr u r m i n go v e ri t a tt h es a m et i m e ,t h el i n u xv m mh a sa s i m i l a rp e r f o r m a n c ea sx e nd o e s o nt h eb a s i so fd e e pr e s e a r c ha n da n a l y s i so fx e n ,t h i sd i s s e r t a t i o ne x p a t i a t e so n t h ed e s i g no fl i n u xv m mc o r em o d u l e s t h ef o c u si st h em e m o r ym a n a g e m e n t s u b s y s t e m ,w h i c hv i r t u a l i z e s 1 a 3 2m e m o r ym a n a g e m e n tu n i tf o rt h eg u e s to s t h r o u g ht h ea n a l y s i sa n dt e s to ft h ex e ni m p l e m e n t a t i o n ,p a g et h r a s h i n gi sf o u n da n d v e r i f i e di nt h ev m m t h i st h e s i sp u tf o r w a r d st h ev i r t u a lp a g ec a c h et os o l v et h e “p a g e t h r a s h i n g ”p r o b l e m a n da ne f f i c i e n tv i r t u a lp a g ec a c h er e p l a c e m e n ta l g o r i t h mi sa l s o i n t r o d u c e d m e a n w h i l e ,t h i sd i s s e r t a t i o ng i v e st h el i n u xv m mm m uv i r t u a l i z a t i o nm o d e l , w h i c hn e a t l yf u l f i l l st h ev i r t u a l i z a t i o no fm m u t h em m uv i r t u a l i z a t i o nm o d e li s d i v i d e di n t ot w op a r t s :o n ei sp l a t f o r mi n d e p e n d e n t ,a n o t h e ri sp l a t f o r md e p e n d e n t , w h i c he a s et h et r a n s p l a n t a t i o nt oo t h e rp l a t f o r m 。i nt h ee n d ,t h ed i s s e r t a t i o ni n t r o d u c e s t h em m uv i r t u a l i z a t i o np e r f o r m a n c et e s t ,t h er e s u l ts h o w st h a tt h ep e r f o r m a n c eo f l i n u xv m mi sb e y o n do l l lp l a n k e y w o r d :v i r t u a l ,m e m o r y ,p a g ec a c h e ,s h a d o w ,p a g et h r a s h i n g 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:塑丑桥 日期:a 年j 月辟日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:捌=导师签名:啦 日期:勘f 年 月份日 第一章引言 1 1 研究背景 第一章引言 在过去的半个世纪里计算机技术取得了惊人的进步,这在其它工业中是前所未 有的。计算机技术的迅猛发展,极大的推动了通信技术的发展。随着计算机,网 络及通信技术的发展,全球经济得到了飞速的发展。同时,企业组织和集团组织 之间的竞争也日趋激烈。为了在市场中保持竞争力,企业对信息技术i t 策略的依 赖进一步加强了。当今的企业依赖信息技术来取得竞争优势,i t 已经成为企业密 不可分的一部分。但同时企业的i t 成本和用于r r 管理的成本居高不下,企业迫切 需要在保持竞争优势的前提下,缩减l t 拥有和运营维护成本。目前很多企业的服 务器利用率很低,企业从业务整合、负载均衡和安全等几个角度迫切需要虚拟化 技术。g a r t n e r 公司的最新研究称,虚拟化将成为十年内p c 遇到的最具杀伤力的 技术。g a r t n e r 报告说,通过分离p c 软硬件,允许多操作系统同时运行在同一桌 面,p c 虚拟化技术将使企业桌面发生革命。 随着微电子技术和超大规模集成电路的进一步发展,现代微处理器处理能力越 来越强大,这使得现代计算机具有足够强大的能力来利用虚拟化技术支持多个虚 拟机v m s ( v i r t u a lm a c h i n e s ) ,并且在每个虚拟机上各自运行单独的操作系统实例。 当前流行的x 8 6 架构计算环境可分为硬件、操作系统和应用软件三层。由一个操 作系统控制和操作处理器、内存、总线、硬盘等所有硬件设备,在操作系统之上 支持多用户并允许运行多个应用软件。虚拟机则是在单一的硬件环境之上,创建 若干个虚拟计算环境v m ,每个虚拟机将一台仿真的、完整的计算机提供给用户( 包 括仿真的c p u 、内存、总线、硬盘等) ,虚拟机之间相互隔离,用户之间互不干扰。 在x 8 6 架构下的v m 主要有e m c 公司的v m w a r e 1 ,微软公司的v i r t u a ls e r v e r e 2 和剑桥大学的x e n ”。虚拟机有多种技术方案,多数采用操作系统虚拟机方案 o s v m ( o sv i r t u r a lm a c h i n e s ) 【”。这种技术由i b m 公司于2 0 世纪6 0 年代发明【5 】【6 】, 它允许在一台主机上运行多个操作系统,当时用于大型机,目的是使用户尽可能 充分地利用昂贵的大型机资源。采用o s v m 方案,在硬件环境和操作系统之间增 加了一层虚拟机监视器v m m ( v i r t u a lm a c h i n em o n i t o r ) 。v m m 将物理的c p u 、 内存、总线和硬盘等资源抽象出来,映射成若干个虚拟的c p u 、内存、总线和硬 盘,构成虚拟机,每个虚拟机上可运行一个独立的操作系统和若干应用软件。于 电子科技大学硕士学位论文 是,在一个物理的硬件环境之上就能互不干扰地运行多个操作系统和应用软件。 v m w a r e 和x e n 的最大区别是:前者完全模拟了一台计算机,理论上可以不 加修改地运行任何操作系统;x e n 则使用了被称为“p a r a v i r t u a l i z a t i o n ”的技术, 这使得x e n 的性能更高,但需要对操作系统进行适当的修改。v m w a r e 和x e n 不 改变操作系统a b i ( a p p l i c a t i o nb i n a r yi n t e r f a c e ) ,因此不要求对其它高层次的软 件进行修改,这就保证了现有的应用软件不受任何影响。由于x e n 需要对操作系 统源码进行修改,因此对于象微软w i n d o w s 这样没有开源的操作系统来说,目前 x e n 是无法支持的。因此英特尔公司计划在2 0 0 6 年推出内建虚拟技术 v t ( v i r t u a l i z a t i o nt e c h n 0 1 0 9 、力的处理器 7 。这意味着未经修改的操作系统也可以直 接运行,从而避免了对上层操作系统源代码的修改。本课题就是在i n t e l 中国软件 实验室实习期间参与的l i n u xv m m 项目,该项目主要是提供一个集成了x e n 和 v t 的v m m ,主要是在研究x e n 2 0 规范和实现的基础上,结合v t 硬件规范,实 现一个全新的v m m 系统。 1 2 研究工作概述 1 2 1 本课题的主要工作 本文从理论和实现两个方面对l i n u xv m m 系统及其关键技术内存管理子系统 进行了系统的研究。主要做了三个方面的工作:首先,概述了虚拟技术,包括虚 拟技术定义、虚拟技术的必要性、虚拟技术应用基础和市场前景。其次,研究了 v m m 系统的发展历程,通过分析x e n 系统的功能、系统框架和实现技术,阐明了 l i n u xv m m 系统的关键所在。最后,介绍了我们实际开发的一个v m m - - l i n u x v m m 系统,着重讨论了该系统中内存管理子系统的设计与实现,并深入探讨了其 中的关键问题和实现技术。 目前l i n u xv m m 的一部分代码已经开源给x e n 项目,并融合到x e n 3 0 规范 中,成为x e n 系统的一部分。通过参与l i n u xv m m 项目,深入掌握了虚拟技术的 原理和实现细节,并对操作系统的实现原理有了更全面的认识和理解。深入研究 虚拟技术,能够快速掌握先进的计算机技术,获得大量有益的经验,继而将这些 技术应用于国产软件的研发和设计上来,打破国外公司在技术上的垄断,最终为 增强民族软件业的核心竞争力,发展民族软件业做出贡献。 第一章引言 1 2 2 本论文的组织 本文共分五章。 第一章是引言。首先概述了本论文的研究背景,给出了虚拟化及v m m 的概念, 分析了虚拟化技术的应用概况和发展趋势,并阐明了处理器内建虚拟化技术v t 的 必要性。最后,简要介绍了本论文的工作和各章的内容,并分析了本课题的意义 和市场前景。 第二章是本论文的相关基础知识和技术介绍。首先研究了虚拟技术的发展历 程,并进一步讨论r 未来虚拟技术的旋展方向。然后概述了i a 3 2m m u ( m e m o r y m a n a g e m e n tu n i t ) 工作原理及l i n u x 内存管理子系统实现,并介绍了处理器内建 虚拟化技术v t 的编程指南。最后,分析了v m m 及x e n 实现技术,阐明了v m m 中的关键技术。 第三章介绍了l i n u xv m m 系统。首先给出了系统的总体结构。然后,进一步 讨论了每个子功能模块的主要功能以及它们之间的关系。最后,分析比较j ,其它 可选的体系结构。 第四章集中讨论了l i n x v m m 内存管理子系统的设计与实现。首先介绍了x e n 系统所采用的虚拟化内存管理系统解决方案,并深入研究了该解冼方案的工作原 理及实现细节。针对l i n u x v m m 不改变上层操作系统源代码的特性,关键要解决 一个问题:如何复用x e n 现有代码而又能够满足l i n u xv m m 的特性。我们的讨论 就围绕这个问题展开,展示了我们是如何解决这个问题的。最后,详细介绍了l i n u x v m m 内存管理子系统系统的设计,包括模块的总体设计以及其各个子模块的设计 与实现。 第五章是结束语。首先对l m u x v m m 及内存管理千系统进行了总结,然后对 未来的l i n u xv m m 的发展方向进行了展望,指出了未来的工作。 1 3 本章小结 本章首先概述了本课题研究背景,给出了虚拟技术的概念,分析了虚拟技术的 应用概况和发展趋势。然后概述了本课题的主要工作,分析了本课题的意义;最 后简要介绍了本论文的组织。 后简要介绍了本论文的组织。 皇王型堇丕堂堡圭兰垡堡奎 第二章v m m 相关技术介绍 2 1 虚拟技术及其发展背景 2 1 1 虚拟技术简述 虚拟机技术首次应用于大型计算机的历史可以追溯到上个世纪6 0 年代。当时 i b m 公司为解决用户竞争c p u 问题,利用分时调度技术( 虚拟技术) 将物理的 c p u 改造成众多虚c p u ,使每个用户程序有一个虚c p u 。通过虚拟化可以使几种 操作系统在同一台计算机上同时运行。在非虚拟化的系统中,操作系统直接控制 所有的硬件和资源。虚拟化的系统包含一层新的系统软件一虚拟机监视器v m m 。 图2 1 1 是v m m 的一个示意图。 v m 0 v m lv m n r 1 1 1 。 【习 厂 a p p s j a p p 5 l 一倒 j 訾 g u e s f l o s o s | vr t u a im a c h i n em o nt o r ( 、,m m ) h o s t h w m e m 州lm c e s ”r s l o d e v i c e s 【 图2 一卜lv h m 结构 从图中我们可以看到v m m 是一层位于操作系统和计算机硬件之间的代码,它从 本质上模拟了一台计算机。v m m 的主要作用是仲裁其上的各个操作系统( 也称为 客户操作系统) 对底层硬件的访问,v m m 给每一个客户操作系统提供了一套虚拟 平台接口。虚拟化能使用户在一台服务器上同时运行多个操作系统,这与“多重 任务处理”技术有些类似。不过“多重任务处理”技术只允许用户在同一机器设 备的同一操作系统中运行多个程序,而虚拟化则可让用户在同机器设备中运行 多个操作系统。这样用户能更灵活高效地配用计算机资源,并且有助于提高安全 性能。 4 第二章v m m 相关技术介绍 现代计算机具有足够强大的能力来利用虚拟化技术支持多个虚拟机v m ,并且 在每个虚拟机上各自运行单独的操作系统实例【8 j 。服务器虚拟化技术正在成为近期 人们关注的焦点。尽管服务器虚拟化技术早已有之,但是在近期才被广泛接受。 究其原因,一方面是服务器性能大幅提高,尤其是多内核处理器的诞生,使得虚 拟服务器变得更加实用;另一方面,服务器应用日益增多,企业需要更好的管理 这些应用,提高服务器资源的利用率;尤其是在电信级市场不断涌现新应用整合 呼唤虚拟化。虚拟技术能保护消费者对现有设备的投资,它同样能使现有用户开 设几个服务器( 虚拟的) ,从而减少硬件和管理费用。 图2 1 2 展示了虚拟化技术的三种典型应用: l 型匕叫 o s h w 工作分离 厂1 2 2 2 邗r 1 2 = 2 = a p p l a p p 2 | o 一l l _ _ 广j | o s l o s 2 1 工作整合 二今 v m mv m m v m m 【 - 一l _ _ - 一 怛一巴 工作分离 ( c ) 工作迁移 2 - 1 - 2 虚拟技术的典型应用 国罔 电子科技大学硕士学位论文 通过在各自v m 中运行软件协议栈虚拟化可以提高整个系统的安全性和可靠 性。安全性提高是因为指令被限制在单一的v m 中,面可靠性提高是因为一个v m 的系统失效不会影响其它的v m 。 工作整合 企业数据中心中往往有大量的异构和利用率很低的服务器,这些服务器往往只 运行单一的操作系统和应用程序,比如,w e b 主机和文件服务器。虚拟化技术可 以整合各个独立的工作到一台物理机器中,从而提高服务器利用率,降低了企业 的拥有和维护成本。 工作迁移 通过封装一个v m 的客户操作系统状态,虚拟化可以使得客户操作系统与底层 硬件无关,使得客户操作系统可以从一种硬件平台迁移到另外一种硬件平台。工 作迁移可以用在负载均衡或者失效保护中,从而以较低成本提高服务质量q o s ( q u a l i t y o f s e r v i c e ) 。 2 1 2v m m 系统概述 目前主要存在3 种类型的v m m 系统:p a r a v i r t u a l i s a t i o n 、二元码转译b t ( b i n a r y t r a n s f o r m e r ) 和模拟器。可以让一个超级任天堂的模拟器在w i n d o w sx p 的一个窗 口中运行,同时还可有另一个p s 模拟器。这些都可看作是虚拟化的最基本形式。 模拟器需耗费巨大的c p u 开销,如果非要去模拟硬件装置的每一个b i t 位,将花 费大量的时间和精力。 这个领域的另一端就是目前较流行的并被业界认可的“p a r a v i r t u a l i s a t i o n ”( 以 下简称p v ) 技术。它让主机操作系统知道它们正工作在一个虚拟的环境中,通过 修改它们以使之工作得更好。从这个角度来看,它并非是完全的虚拟化。p v 技术 在开源代码的操作系统中工作得不错,l i n u x 、x b s d 都是很合适的p v 工作平台的 候选者,你可在这些系统中任意调整所需调整的地方,使p v 能工作得更好。 而“二元码转译”技术可说是较折衷的方法。它所要做的取决于操作系统将要 做些什么,并在不知不觉中改变它。假如操作系统试图去执行指令a ,但该指令a 会给虚拟化引擎带来某些问题,那么b t 将把它转换成某些更合适的指令并伪造指 令a 应该返回的结果。这是一项欺骗工作,且占用大量c p u 资源,另外用许多代 码取代一条代码也不会使事情运作得快些。 第二章v m m 相关技术介绍 以上这些技术,纯粹致命的缺陷的确没有,但都没有一个简单的解决方案。这 些虚拟化的技术仍在继续运用,只是人们都在尽量使其处在一个较低程度的缺陷 范围内工作罢了。是什么造成这样的呢? 2 1 3 虚拟技术存在的问题 对于x 8 6 系统架构的c p u 而言,至少在3 2 位领域,有太多让人头痛的条条框 框,但作为一条总则,它们都包含环转换器和有关指令。从概念意义上说,环是 一种划分系统特权级别的方法( 因此“r i n g ”也称作特权环) 。你可让操作系统 运行在一个特权级别上而不会使之被用户程序更改。这样即使你的程序出了问题, 它也不会导致系统崩溃,而操作系统能取得控制权,关闭出毛病的程序。这些环 强行控制系统的不同部分。i n t e l 公司的x 8 6 系列处理器,提供4 个特权级别r 0 、 r 1 、r 2 和r 3 。较大的数字表示较低的特权,我们可简单理解为运行在某一级别 的程序无法改变运行在较小数字级别上的程序,但较低数字级别上的程序可干扰 甚至控制运行在较高数字级别的程序。在实际运用中,被经常用副的只有r 0 和 r 3 ,即最高级别和最低级别。操作系统运行在r 0 上,而用户程序运行在r 3 上1 9 。 像v m w a r e 这类软件模式的v m 显然必须运行在r 0 级别上,但如它们要想保 持完全控制权,就必须使操作系统在这个级别之外。最显而易见的解决办法是强 迫主机操作系统运行在一个较低级别的环中,如r 1 。它们的部分代码原先被设定 为从r 0 到r 3 ,而不是r l 到r 3 。虽然在p v 环境中,你能修改操作系统从而使 它工作得很好,但如果你要找到一个圆满的解决方法,就必须使操作系统工作在 r l 级别中。可如此一来又出现了新的问题,有些指令只有当它们从r 0 级里发出 或发往r 0 级时才会工作,如果不在正确的环中,这些指令会运作异常。让代码在 正确的环中执行确实能防止操作系统破坏v m ,同时也防止运行在主机操作系统上 的软件破坏操作系统自身。这就是所谓的“0 1 3 ”模式。还有一种模式被称为“0 3 ” 模式。这种模式将v m 放入r 0 级别中运行,而将操作系统和用户程序都放入r 3 级别中。但从本质上而言,它还是像“0 1 3 ”模式一样去处理其它事情。在r 3 级 别里,有特权的操作系统能更轻松地执行用户程序,由于不存在环的阻隔,也使 它运行的更快一些,但系统稳定性不佳。另外一个方式使用“0 3 ”模式,就是让 c p u 保有两份运行于r 0 级别的页表。一份为操作系统,另一份为运行在r 3 级别 中的老程序。这样可拥有一份完整的存储器保护集,用来把用户程序隔离到操作 系统空间之外。图2 1 3 展示了上面提到的几种工作方式。 一 皇兰型垫查兰堡主堂垡堡奎 普通模式 匾i 酮 r i n g2 匡正 匦巫 0 1 3 模式: 稳定性强 丕堡五笾盔 i r i n g 3 a p p i o 3 模式: 速度快但稳 定性差 叵硬 叵亚 区砸叵面 图2 - 1 3 系统环结构 概括来说,在“0 1 3 ”模式中,系统安全性更高一些,但从r 3 到r l 、1 t 3 到 r 0 或r 1 到r 0 转换时性能会受到一些影响,反过来也是 1 0 。在“0 3 ”模式中, 只存在r 0 与r 3 之间的转换,所以它潜在的比一个非主机操作系统运行得更快一 些。但如果你碰到一个问题,“0 3 ”模式比“0 1 3 ”模式更容易出现蓝屏。理论 上,如果你可忍受一点不稳定性,或者在“0 1 3 ”模式中牺牲一点速度,两者都 是很不错。可它们在某些方面确实还存在一些缺陷,主要存在以下4 点。首先是 那些检验指令自己所在环的指令,另外是那些处在错误的环中却没有正确保护 c p u 现场的指令。最后两点是截然相反的,就是那些应引发错误却没有导致错误 的指令,以及那些本不该导致错误却引发许多错误的指令。所有这些导致v m m 开 发是异常复杂的。其中第一点是显而易见的。如果你给予操作系统r 1 级别的特权, 当它检验自己运行所处的环时,它会返回1 而不是0 。如果此时运行于该系统的一 段程序期望自己应该处在r o 环时,那么它会因为得到的是r 1 而导致错误。这会 导致蓝屏的出现,存储器清除或另一些不理想的后果。二元码转译技术可以捕捉 到这种错误,并把返回值伪装成0 ,但这意味着需要几十上百条指令来完成这一工 作,显然速度受到极大影响。保护现场是一个潜在的更糟糕的问题,有些c p u 里 的东西在上下文切换程序中并不是很容易被保存的。那些隐藏的段寄存器状态就 是一个很好的例子。一旦它们被载入主存,其中一部分无法被保存,导致内存常 驻部分和c p u 中实际值间的不同而引起意外中断。当然我们可为它们设立工作区, 但这样做极为复杂且需付出很高的代价。 那些本该引起某些问题却没有导致这些问题的指令也是摆在我们眼前的一道 难题。如果期望一条指令在后面设计的中断陷阱中造成错误,但却没有,事实上 也不会让人因为没有错误而高兴。与此相反的情况也极为常见,如果不在正确的 第二章v m m 相关技术介绍 环中向c r o 和c r 4 写入,则会产生错误,导致系统崩溃。虽然这两种错误在不注 意时可被修正,但却造成很多性能损失。整个所涉及到的虚拟化技术就是要将操 作系统放在一个它本不应该在的地方,不断地运转去尝试解决所有出现的问题1 u 。 2 2 v t 技术指南 i n t e l 的v t 技术旧【1 3 能解决上面提出的问题。v t 的目的是在尽可能最小化程 序员痛苦的同时尽可能多的增加“v i r t u a l i z a t i o n h o l e s ”。在这种解决方案中,分别 引入了一种新的模式针对不同的c p u :v t x 针对x 8 6 而v t i 针对i t a n i u m ,本论 文主要研究v t x 下的v m m ,这种新的模式被称为v m x ( v i r t u a lm a c h i n e e x t e n s i o n ) ,并且引入了一个v m m 运行于其中。它被设定在r 0 级别下,主机操 作系统和所有的程序在v m x 模式中运行,v m m 运行在v m x 根模式中。任何一 个运行在v m x 模式下的操作系统,都拥有所有运行于非v t 系统中的一般操作系 统的功能和特性。它也处在r 0 级别中,有权利处理每一件事情,而且并不知道有 什么东西正在它的旁边运行。当得到授权,c p u 进入v m x 根模式,v m m 就可以 切换到其它一个运行在另一v m x 实例的操作系统。这些切换被称做v m 登录和 v m 退出。图2 2 1 是一个示意图。 图2 - 2 1v m x 工作原理 v t 技术所表现出的不可思议的地方就在于它使得从v m x 模式到v m x 根模 式( 或从v m x 根模式到v m x 模式) 的登录和退出处理易于操作。一旦主机操作 系统被调度执行,那它一定是独自处在自己的世界里,因此必须保存虚拟世界的 完整状态并在返回时重新将它载入。虽然在v t 里还有很多事务要去处理,但它被 设计为一项任务,所以客观地说它实际是一个简单的进程。因为每一个操作系统 实例都在正确的位置运行,所以前面所提到的4 个问题也就不存在了。相关联的 工作区也不再需要,与此有关的系统开销没有了,这些能有效提高速度。 启动一个新的主机操作系统,需为其留出一块4 k b 的存储区并将它传递给一 电子科技大学硕士学位论文 个v m p t l r d 指令。这块区域将用来存储该系统实例不被激活时的所有状态和重 要b i t 位。只要该操作系统实例存在,则这块区域一直有效,直到在其上运行一条 v m c l e a r 指令。这样就设立了一个虚拟机实例。如果想要把控制权交给虚拟机, 可以登录v m x 非根模式或简单一点,运行v m x 模式即可。以上操作需要用到的 v m 登录指令分别是v m l a u n c h 和v m r e s u m e ,两者并没有太大的区别。 v m r e s u m e 指令只是简单地从刚开始已经初始化的4 k b 存储区里载入处理器状 态,并把控制权交给主机操作系统。v m l a u n c h 完成同样的工作,但它会启动 一个虚拟机控制构件v m c s 。然后主机操作系统开始了在它自己的空间中自由运 行,对它外面的一切一无所知。 唯一的问题是如何打破这一切,并将它关闭以使得机器里的其它操作系统能真 正运行。这就是v t 技术所体现出来的复杂的一面一v m c s 中一些特别的位映像 这些位映像是一些3 2 位的字段,每一个b i t 位标志一个事件。如果某个事件被触 发,则对应的b i t 位被置位,c p u 触发一条v m 退出指令,并将控制权返还给运 行在v m x 根模式下的v m m 。v m m 可做任何想做的事,然后将v m r e s u m e 指 令传递给下一个操作系统,或刚离开的那个操作系统。这个被启动的操作系统同 样很好地运行着,直到触发另一条v m 退出指令。如此这样以每秒上千次的速度 重复着。 什么能触发这些指令呢? 它们可以是引脚信号、处理器、异常和页面错误这些 平台事件,所有这些都会触发v m 退出指令。v t 技术的完美之处在于它有很强的 适应性,另一个与此类似之处就是在调试程序中设置断点,可在每个事件上都设 置一个,或者一个也不设置,这都取决于使用者。引脚信号事件要做的是当有一 个内部中断或一个不可屏蔽中断发生时,则触发退出指令。而处理器事件,则是 设置任意b i t 位在某一字段,当相应的处理器状态接收到它时,则触发退出指令。 虽然大多数指令需要去设置,但也有一些指令无条件地引发v m 退出指令。这是 在一个非常细小的层面上控制v m ,允许当需要时登录和退出。 异常位映像也是一些3 2 位的字段,每个b i t 位标志每个3 2 位指令地址的异常 情况。如果b i t 位被设定并有一个异常被抛出,它就会引发v m 退出指令。如果 b i t 位是空的或没有异常,那么主机操作系统则继续运行。这是一种从v m x 模式 退出而进入v m x 根模式的系统开销非常低的方法。最后,还有页面错误退出,它 与异常退出十分相像,只不过它用两个3 2 位字段来控制。这些字段内的b i t 位对 每个可能出问题的页面错误代码进行映像,因此可以从中挑选从哪里退出。同 第二章v m m 相关技术介绍 样,它的系统开销也很低。 在计算机里,v t 工作在个比传统的r 0 环更有特权的级别中,网2 - 2 2 是 v t 系统架构图。 图22 2v r 系统架构 任何一个主机操作系统都町在没有改变的原有架构f 运行,并且不知道一个控制 程序在控制它们。当遭遇到某些用户设置的触发器,控制权将被转交给运行在更 高级别的v m x 根模式上的v m m 。因为这是种被动触发事件,而不需被积极监 视,因此系统开销降到了最低限。v t 技术使得安装和卸载那些比以往v m 模式更 稳定的运行环境变得简单。每一次登录意味着建立4 k b 的存储区域,每次退出 要向这4 k b 存储区内写入数据。这看上去有些耗费过多,可与那些较老的方式比 较,它的速度相当地快。 2 _ 3 内存管理概述 2 3 1i a 3 2m m u 工作原理 1 a 3 2 内存管理结构i i _ l q 如图2 3 1 所示。m m u 是用来管理虚拟内存系统的硬 件。m m u 有两个。# 要功能:将虚地址转换成物理地址和控制存储器的存取权限。 m m u 本身有少量存储空间存放从虚拟地址到物理地址的匹配表,此表称作t l b ( t r a n s l a t i o nl o o k a s i d eb u f f e r s ) 。t l b 表中保存的是虚址及其对应的物理地址、权 限、域和映射类型。当c p u 对一虚拟地址进行存取时,首先搜索t l b 表以查找对 应的物理地址等信息,如果没有查到,则继续查找t r a n s l a t i o nt a b l e ,称为t t w ( t r a n s l a t i o nt a b l ew a l k ) 。经过w 过程后,将查到的信息保存到t l b ,然后根 据t l b 表项的物理地址进行读写。c a c h e 是缓存单元,主要用于缓存内存中的数 电子科技大学硕士学位论文 据,其读写速度远快于内存的读写速度,所以可以提高c p u 的内存数据的访问效 率。 图2 - 3 - 1i a 3 2 内存管理结构 i a 3 2 内存管理段页结构 i a 3 2 段页式结构如图2 - 3 2 所示。 学留徽 卜一s 舯一。一一一删w 一 图2 - 3 2i a 3 2 段页式结构 保护模式下的段等于选择子+ 描述符,除了段基址外还提供更多的信息:保护、长 度限制、类型等。描述符存放在一张表中( g d t 或l d t ) ,选择子可以认为是表的 索引。段寄存器中存放的是选择子,在段寄存器装入的同时,描述符中的数据被 第二章v m m 相关技术介绍 装入一个不可见的寄存器以便c p u 快速访问。但l i n u x 实际上没有使用段,只使 用了c s ,d s 。 i a 3 2 的分页机制 x 8 6 硬件支持两级页表,所谓的硬件支持包括一些特殊寄存器( c r 0 c r 4 ) 、以 及c p u 能够识别页表项中的一些标志位并根据访问情况做出反应等。如读写 p r e s e n t 位为0 的页或者写r e a d w r i t e 位为0 的页将引起c p u 发出p f ( p a g e f a u l t ) 异常,访问完页面后自动设置a c c e s s e d 位等。1 a 3 24 k b 页表结构如图 2 3 3 所示。 l i n e a ra d d r e s s 3 12 22 11 2 10 1 3 i r e c t o r yl t a b l e l o f f s e t 1 0 3 2 + p a g ed i r e c t o r y d i r e c t o r y c r 3 ( p d b r ) 1 0 p a g et a b l e p a g e t a b l ee n t r y 1 2 4 - k b y t 穗p a g e 磊 1 0 2 4p d e $ 1 0 2 4p t e = 2 2 0 p a g e s 3 2b i t sa l i g n e do n t oa4 一k b y t eb o u n d a r y 图2 - 3 3i a 3 24 y b 页表结构 页目录项和页表项具有相同的结构,页表项结构如图2 3 4 所示。 皇i 型堇盔堂堡圭堂笪笙苎 p a g e - d i r e c t o r ye n t r y ( 4 - m b y t ep a g e ) 图2 - 3 4 页表项结构 2 3 2l i n u x 内存管理子系统 l i n u x 使用虚拟存储器技术,这种技术用于提供比计算机系统中实际使用的物 理内存大得多的内存空f q t “1 1 1 7 1 。使用者将感觉到好像程序可以使用非常大的内存 空间,从而使得编程人员在写程序时不用考虑计算机中的物理内存的实际容量。 为了支持虚拟存储管理器的管理,l i n u x 系统采用分页的方式来载入进程。虚拟存 储器由存储器管理机制及一个大容量的快速硬盘存储器支持。它的实现基于局部 性原理,当一个程序在运行之前,没有必要全部装入内存,而是仅将那些当前要 运行的那些部分页面或段装入内存运行,其余暂时留在硬盘上。程序运行时如果 它所要访问的页( 段) 已存在。则程序继续运行,如果发现不存在的页( 段) ,操 作系统将产生一个页错误p f ,这个错误导致操作系统把需要运行的部分加载到内 存中。必要时操作系统还可以把不需要的内存页( 段) 交换到磁盘上,利用这样 的方式管理存储器,便可把一个进程所需要用到的存储器以化整为零的方式,视 需求分批载入,而核心程序则凭借属于每个页面的页码来完成寻址各个存储器区 段的工作。 通常l i n u x 是针对有m m u 的处理器设计的。在这种处理器上,虚拟地址被送 到内存管理单元m m u ,把虚拟地址映射为物理地址。通过赋予每个任务不同的虚 1 4 第二章v m m 相关技术介绍 拟一物理地址转换映射,支持不同任务之间的保护。地址转换函数在每一个任务中 定义,在一个任务中的虚拟地址空间映射到物理内存的一个部分,而另一个任务 的虚拟地址空间映射到物理存储器中的另外区域。计算机的m m u 一般有一组寄 存器来标识当前运行进程的转换表。在当前进程将c p u 放弃给另一个进程时,内 核通过指向新进程地址转换表的指针加载这些寄存器。m m u 寄存器是有特权的, 只能在内核态才能访问。这就保证了一个进程只能访问自己用户空间内的地址, 而不会访问和修改其它进程的空间。 2 ,4 x e n 介绍 x e n 是由剑桥大学计算机实验室开发的一个开源项目1 8 】,它能够让我们创建 更多的虚拟机,每一个虚拟机都是运行在一个操作系统实例。这些客户操作系统 可以是修补过的l i n u x 内核2 4 或2 6 ( 被称为x e n o l i n u x ) ,也可以是修补过的x b s d 内核。用户应用程序就运行在这些客户操作系统上,并不需要修改任何代码。现 在的x e n 需要为内核打补丁,但是,支持v t 的处理器支持虚拟化,内核不需要 打补丁。比如说,i n t e l 的v t 和a m d 的p a c i f i c a 处理器都包括这种支持。x e n 己 经在像f e d o r ac o r e4 、d e b i a n 和s u s ep r o f e s s i o n a l9 _ 3 这些产品中捆绑发行了,它 也将被包含在r h e l5 中。 在x e n 中,一个“系统管理程序”运行在r 0 ,客户操作系统运行在r 1 ,这意 味这客户操作系统必须修改其内核,因为所有的标准内核在x 8 6 上都会假设自己 可以运行在r 0 ,这也是x e n 的最大弱点。不过所有的客户操作系统上面的应用程 序并不需要修改,仍然运行在r 3 上。x e n 自身被称为“系统管理程序”,是因为 它比客户操作系统的系统管理代码运行所需的特权级还高。当系统引导的时候, x e n 被装载到r 0 的内存中。它在r l 上启动修补过的内核,它被称作d o m a i n o 。 从这个d o m a i n 开始,可以创建更多的d o m a i n ,也可以销毁它们,可以进行d o m a i n 的迁移、设置参数等。 x e n 是个多层系统,x e n 拥有完全硬件访问特权。图2 - 4 1 是x e n 的系统结构 示意图。 电子科技大学硕士学位论文 v m 0 v m lv m 2 v m 3 g u e s t o sg u e s t o sg u e s t 0 sg u e s t o s ( x e n l i n u x )( x e n l i n u ) c )( x e n l i n u x )( x e n b s d ) b a c n db a c | e n d 、1 n a t i v e 5i786vece,1 f r o n t e n d f r o n t e n d d e v i c e f d e v i c ed r i v e r s d r f v e 5 d e v i c ed t i v e r ; 一 i 一一 l 一 一 l 习 l i 一匕 ”i c o n t r o li f | | $ a 例胂wj fl e v e n tc h a n n e lv i r t u a lc p uv ir t u a lm m u y x e nv i r t u a lm a c h i n em o n i t o r 蝌 h a r d w a r e ( s m p m m u p h y s i c a lm e m o r y , e t h e r n e t , s c s i i d e ) 图2 4 1x e n 系统结构 x e n 可以分为以下几个部分: c o n t r o li n t e r f a c e 只能被一个特殊的客户操作系统访问,这个客户操作系统被称为d o m a i n 0 ,也 是x e n 系统启动以后必须运行的客户操作系统,相当于整个x e n 系统控制中心。 d o m a i n 0 拥有x c n d ,x m ,x e n s v 等配置管理工具,通过它们可以启动或关闭新的 客户操作系统,为每个客户操作系统划分资源( 例如内存大小) 。 s a f eh a r d w a r ei n t e r f a c e ( s h i ) x 的核心模块之一,完成除虚拟c p u ,m m u 以外所有的硬件虚拟工作,包 括d i v l a u i o ,驱动程序,虚拟p c 地址空间配置,虚拟硬件中断等。其主要功能 是通过d e v i c ec h a n n e l 和 d d ( i s o l a t e dd r i v e rd o m a l n ) 模块完成。可以把i d d 想 成一个服务器,它管理了所有真正的硬件i o 操作。同时,i d d 对各个客户操作系 统一无所知,它所做的只是响应其它模块给它

温馨提示

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

评论

0/150

提交评论