您所在的位置:读书频道 > 操作系统 > 其他 > 7.5.2 Xen虚拟化技术

7.5.2 Xen虚拟化技术

2010-03-12 11:02 陆松年 电子工业出版社 我要评论(0) 字号:T | T
一键收藏,随时查看,分享好友!

《操作系统教程(第3版)》第7章Windows操作系统,本章主要介绍了微软的Windows这一风靡全球的主流操作系统产品。本节为大家介绍Xen虚拟化技术。

AD:

7.5.2  Xen虚拟化技术

本节中将以主流的Xen体系架构为例,说明虚拟化系统的一般技术架构和工作原理。

1.Xen体系结构(Xen Hypervisor)

Xen Hypervisor(即Xen的VMM)位于操作系统和硬件之间,负责为上层运行的操作系统内核提供虚拟化的硬件资源,负责管理和分配这些资源,并确保上层虚拟机(称为域)之间的相互隔离。Xen采用混合模式,因而设定了一个特权域用以辅助Xen管理其他的域,并提供虚拟的资源服务,该特权域称为Domain 0,而其余的域则称为Domain U。

Xen的体系架构如图7-25所示。Xen向Domain提供了一个抽象层,其中包含了管理和虚拟硬件的API。Dom0内部包含了真实的设备驱动(原生设备驱动),可直接访问物理硬件,负责与Xen提供的管理API交互,并通过用户模式下的管理工具来管理Xen的虚拟机环境。

 
(点击查看大图)图7-25  Xen体系架构图

Xen向Domain提供了VCPU、虚拟MMU(Memory Management Unit)等基本的虚拟硬件和基本机制(事件通道),并向Domain提供了虚拟域管理API(控制接口)。对Domain设备的访问,Xen也提供了相应的硬件接口(安全硬件接口),以保证设备访问得以安全进行。

在Xen体系架构中涉及到的基本概念包括:

控制接口:仅能被Dom0使用,用于帮助Dom0控制和管理其他的Domain。控制接口提供的具体功能包括Domain的创建、销毁、暂停、恢复及迁移,对其他Domain的CPU调度、内存分配及设备访问等。

安全硬件接口:提供除虚拟CPU、MMU之外的所有硬件虚拟工作,包括DMA/IO、驱动程序、虚拟的PCI地址配置、虚拟硬件中断等。该接口只能被具有原生设备驱动的Domain使用,而向其他Domain则仅通过设备通道提供虚拟硬件服务。

VCPU:Xen为每个Domain建立了VCPU结构,用以接收Guest OS中传递的指令,其中大部分的指令被VCPU直接提交到物理CPU执行,而对于特权指令则需要经过确认后交由Xen代为执行。

虚拟MMU:用于帮助Guest OS完成虚拟地址到机器地址的转换。Xen系统中增加了客户物理地址层,因而地址由原来的二层结构变为三层结构。Xen通过虚拟MMU仍能使用硬件MMU来完成地址转换。

事件通道:是用于Domain和Xen之间、Domain相互之间的一种异步事件通知机制,用于处理Guest OS中的虚拟中断、物理中断以及Domain之间的通信。

设备管理器:位于Dom0和IDD(Independent Device Domain)中,可作为系统BIOS的扩展,用于向所有的设备提供通用的管理接口,并负责在Domain启动时加载特定的设备驱动、建立管理设备通道、提供硬件设备配置接口并处理设备访问错误。

2.CPU虚拟化

(1)半虚拟化

对CPU指令集不提供硬件支持的情况,Xen只能采取半虚拟化的方案,通过修改Guest OS的内核对有缺陷的指令进行替换。在这种模式下,Xen位于操作系统和硬件之间,为其上运行的Guest OS内核提供虚拟化的硬件环境,因而Xen具有最高特权级,而Guest OS被迫迁移到相对低的特权级中,称为特权解除(Privilege Deprivileging)。

x86架构中,CPU提供了4个特权级(0环到3环)以及分段和分页的内存保护机制,但目前多数操作系统中均只使用到了0环和3环两个特权级,对应地存在两种特权解除方式:0/1/3模型(操作系统运行在1环、VMM运行在0环、应用程序运行在3环)和0/3模型(操作系统和应用程序运行在3环,VMM运行在0环)。无论采用哪种模型,Xen都将替代原操作系统内核占据最高的特权级,因而在Xen下运行的Guest OS内核将无法执行某些特权指令,并将产生一般保护性错误,Xen必须通过超级调用向Guest OS提供执行这些特权指令执行的接口。

(2)硬件虚拟化

面前x86架构中通过引入新的指令和处理器运行模式,使得VMM和Guest OS运行在不同的模式下,Guest OS只能在受控模式下运行,而在需要VMM进行监控和模拟时由硬件支持模式的切换。在硬件虚拟化方式下,不需要对Guest OS内核进行修改,而是直接由硬件完成指令的捕获。

3.内存虚拟化

在半虚拟化模式下,Xen的内存虚拟化通过内存分段保护机制,使得Xen和Guest OS共存于同一个内存地址空间中,简化了Xen对Domain内存的分配和管理工作,同时利用内存分页机制,Xen可保证各Domain在内存上的有效隔离。

Xen需要确保任意两个非特权Domain不会访问到同一内存区虚拟域,因而每一页或页目录的更新必须经过Xen的确认,以保证每个Domain只能控制自己的页表。通过修改Guest OS的内核,Xen可让Guest OS也参与到内存管理工作中来,Xen可更多关注于内存虚拟化中更重要的内存隔离工作,同时也可让硬件MMU在Guest OS的三层地址转换中发挥作用。

在物理内存的管理中,Xen引入了VMware最先采用的气球驱动模型来调节分配给各Domain的物理内存。

气球驱动可作为驱动程序运行在Guest OS(即Domain)中,Guest OS通过该驱动与Xen通信。当Domain需要更多内存时,将通过气球驱动向Xen提交内存申请请求,Xen可向气球驱动减压以便将将气球驱动所占用的部分空闲内存或通过气球驱动从其他Domain回收的内存分配给提交请求的Domain。如果Xen的可用空余内存过低,需要从某个Domain回收部分占用的内存,Xen可向气球驱动加压使气球膨胀,Guest OS将回收页面、释放内存以便给本地气球分配足够的内存空间,然后气球驱动将分配到的页面传给Xen,Xen将这些空闲内存集中起来备用。相关的工作原理如图7-26所示。

 
(点击查看大图)图7-26  气球驱动模型示意图

4.I/O虚拟化

在半虚拟化模式下,Xen采用了分离设备驱动模型来实现I/O的虚拟化。该模型将设备驱动划分为前端驱动程序、后端驱动程序和原生驱动三个部分,其中前端驱动在DomU中运行,而后端驱动和原生驱动在Dom0(IDD)中运行。前端驱动负责将Guest OS的I/O请求传递到Dom0(IDD)中的后端驱动,后端驱动对I/O请求解析并映射到物理设备,提交给相应的设备驱动程序控制硬件完成I/O操作。

后端驱动检查接收到的I/O请求的有效性,并进行虚拟设备地址到物理设备地址的转换。转换之后,后端驱动将通过Dom0(IDD)中Guest OS提供I/O接口,间接地控制原生设备驱动完成提交的请求。

前端驱动和后端驱动之间I/O请求的传递是通过Xen内部的一个环形队列(I/O环)来实现的,其结构参见图7-27所示。I/O环实际上是Xen提供的一块供DomU和Dom0(IDD)访问的共享内存。

 
图7-27  Xen的I/O环结构

针对大量DMA数据在DomU和Dom0(IDD)之间的高效传递需求,Xen提供了授权表(Grant Table)机制。每个Domain都有一个授权表,用以指明其内部哪些页面可以被哪些Domain所访问。而Xen内部存在一个活动授权表(Active Grant Table)用于缓存来自各Domain授权表的活动表项内容。

当DomU中的Guest OS需要进行DMA操作时,前端驱动会为对应的数据页面生成一个授权描述(Grant Reference, GR)并将授权描述和请求一起放入I/O环。当Dom0(IDD)从I/O环中取出请求时,将根据授权描述,向Xen请求锁定该页面。Xen接收到请求后,在活动授权表或Guest OS的授权表中确认是否已授权特权域访问该页面,通过检查后,表明该页面可安全地进行DMA操作。Dom0(IDD)在接收到Xen的响应后即可开始向真实硬件发送DMA请求了。


【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

网友评论TOP5

查看所有评论(

提交评论

栏目热门

更多>>

  1. Linux服务器配置全程实录
  2. 揭秘--优秀PPT这样制作

热点专题

更多>>

读书

Windows用户态程序高效排错
本书是一本介绍Windows系统上的用户态程序排错方法和技巧的书。本书分为4个章节,先介绍最重要的、通用的思考方法,以便制定排错

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 移动互联网生活门户 灵客风LinkPhone