预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

7.5.2Xen虚拟化技术本节中将以主流的Xen体系架构为例,说明虚拟化系统的一般技术架构和工作原理。1.Xen体系结构(XenHypervisor)XenHypervisor(即Xen的VMM)位于操作系统和硬件之间,负责为上层运行的操作系统内核提供虚拟化的硬件资源,负责管理和分配这些资源,并确保上层虚拟机(称为域)之间的相互隔离。Xen采用混合模式,因而设定了一个特权域用以辅助Xen管理其他的域,并提供虚拟的资源服务,该特权域称为Domain0,而其余的域则称为DomainU。Xen的体系架构如图7-25所示。Xen向Domain提供了一个抽象层,其中包含了管理和虚拟硬件的API。Dom0内部包含了真实的设备驱动(原生设备驱动),可直接访问物理硬件,负责与Xen提供的管理API交互,并通过用户模式下的管理工具来管理Xen的虚拟机环境。(点击查看大图)图7-25Xen体系架构图Xen向Domain提供了VCPU、虚拟MMU(MemoryManagementUnit)等基本的虚拟硬件和基本机制(事件通道),并向Domain提供了虚拟域管理API(控制接口)。对Domain设备的访问,Xen也提供了相应的硬件接口(安全硬件接口),以保证设备访问得以安全进行。在Xen体系架构中涉及到的基本概念包括:控制接口:仅能被Dom0使用,用于帮助Dom0控制和管理其他的Domain。控制接口提供的具体功能包括Domain的创建、销毁、暂停、恢复及迁移,对其他Domain的CPU调度、内存分配及设备访问等。安全硬件接口:提供除虚拟CPU、MMU之外的所有硬件虚拟工作,包括DMA/IO、驱动程序、虚拟的PCI地址配置、虚拟硬件中断等。该接口只能被具有原生设备驱动的Domain使用,而向其他Domain则仅通过设备通道提供虚拟硬件服务。VCPU:Xen为每个Domain建立了VCPU结构,用以接收GuestOS中传递的指令,其中大部分的指令被VCPU直接提交到物理CPU执行,而对于特权指令则需要经过确认后交由Xen代为执行。虚拟MMU:用于帮助GuestOS完成虚拟地址到机器地址的转换。Xen系统中增加了客户物理地址层,因而地址由原来的二层结构变为三层结构。Xen通过虚拟MMU仍能使用硬件MMU来完成地址转换。事件通道:是用于Domain和Xen之间、Domain相互之间的一种异步事件通知机制,用于处理GuestOS中的虚拟中断、物理中断以及Domain之间的通信。设备管理器:位于Dom0和IDD(IndependentDeviceDomain)中,可作为系统BIOS的扩展,用于向所有的设备提供通用的管理接口,并负责在Domain启动时加载特定的设备驱动、建立管理设备通道、提供硬件设备配置接口并处理设备访问错误。2.CPU虚拟化(1)半虚拟化对CPU指令集不提供硬件支持的情况,Xen只能采取半虚拟化的方案,通过修改GuestOS的内核对有缺陷的指令进行替换。在这种模式下,Xen位于操作系统和硬件之间,为其上运行的GuestOS内核提供虚拟化的硬件环境,因而Xen具有最高特权级,而GuestOS被迫迁移到相对低的特权级中,称为特权解除(PrivilegeDeprivileging)。x86架构中,CPU提供了4个特权级(0环到3环)以及分段和分页的内存保护机制,但目前多数操作系统中均只使用到了0环和3环两个特权级,对应地存在两种特权解除方式:0/1/3模型(操作系统运行在1环、VMM运行在0环、应用程序运行在3环)和0/3模型(操作系统和应用程序运行在3环,VMM运行在0环)。无论采用哪种模型,Xen都将替代原操作系统内核占据最高的特权级,因而在Xen下运行的GuestOS内核将无法执行某些特权指令,并将产生一般保护性错误,Xen必须通过超级调用向GuestOS提供执行这些特权指令执行的接口。(2)硬件虚拟化面前x86架构中通过引入新的指令和处理器运行模式,使得VMM和GuestOS运行在不同的模式下,GuestOS只能在受控模式下运行,而在需要VMM进行监控和模拟时由硬件支持模式的切换。在硬件虚拟化方式下,不需要对GuestOS内核进行修改,而是直接由硬件完成指令的捕获。3.内存虚拟化在半虚拟化模式下,Xen的内存虚拟化通过内存分段保护机制,使得Xen和GuestOS共存于同一个内存地址空间中,简化了Xen对Domain内存的分配和管理工作,同时利用内存分页机制,Xen可保证各Domain在内存上的有效隔离。Xen需要确保任意两个非特权Domain不会访问到同一内存区虚拟域,因而每一页或页目录的更新必须经过Xen的确认,以保证每个Do