首页 理论教育 VMware原理和应用-虚拟桌面操作系统的原理和应用

VMware原理和应用-虚拟桌面操作系统的原理和应用

时间:2023-11-23 理论教育 版权反馈
【摘要】:尔后于2001年推出了面向服务器市场的VMware GSX Server和VMware ESX Server。为了更好地理解VMware Workstation,这里先简要介绍一下Intel X86平台的工作原理。对于VMware Workstation的3个模块,VMM 和VMX 驱动位于ring0,VMX 驱动被安装在宿主操作系统中,以获得VMM 所需的高特权级,VMApp位于ring3。VMware Workstation的架构如图4-2所示。在虚拟机的内存申请和回收方面,VMware ESX Server首次提出了称之为“气球”的内存管理技术。当系统内存被过量使用或有多余时,VMware ESX Server通过客户机上的Balloon驱动实现内存页面的回收和再分配。

VMware原理和应用-虚拟桌面操作系统的原理和应用

VMware 是EMC 公司旗下独立软件公司,1998 年1 月,Stanford 大学的Mendel Rosenblum 教授带领他的学生Edouard Bugnion和Scott Devine及对虚拟机技术多年的研究成果创立了VMware公司,主要研究在工业领域应用的大型主机级的虚拟技术计算机,并于1999年发布了它的第一款产品:基于主机模型的虚拟机VMware Workstation。尔后于2001年推出了面向服务器市场的VMware GSX Server和VMware ESX Server。如今VMware是虚拟机市场上的领航者,其首先提出并采用的气球驱动程序(Balloon Driver),影子页表(Shadow Page Table),虚拟设备驱动程序(Virtual Driver)等均已被后来的其他虚拟机如XEN 采用。

1.VMware Workstation

VMware Workstation是一个基于主机模型的虚拟机,可以在Windows NT,Windows 2000和Linux 上运行。VMware Workstation包括3个模块:VMM,VMX(Virtual Machine eXtension)驱动和VMware应用程序。为了更好地理解VMware Workstation,这里先简要介绍一下Intel X86平台的工作原理。

在X86平台上,保护机制提供了4个优先级,从ring0到ring3。操作系统和内核服务位于ring0,ring1和ring2主要用于设备驱动,应用程序运行于ring3。只有运行在ring0的操作系统及内核服务能够运行特权指令,其他ring上的程序运行特权指令都会导致失败。

对于VMware Workstation的3个模块,VMM 和VMX 驱动位于ring0,VMX 驱动被安装在宿主操作系统中,以获得VMM 所需的高特权级,VMApp位于ring3。执行时VMApp通过VMX 驱动的帮助将VMM 载入核心内存,并赋予它最高特权级ring0。此时宿主操作系统仅能感知到VMApp和VMX 驱动,而并不知道VMM 的存在。现在机器中存在两个世界:Host世界和VMM 世界。VMM 世界可以直接与处理器硬件通信,或通过VMX 驱动与Host世界通信。而每一次世界切换都需要保存和重建当前所有的硬件状态,这对性能影响很大。VMware Workstation的架构如图4-2所示。

图4-2 VMware Workstation 的架构

当Guest OS或其上的应用程序仅跑一些纯粹的计算程序时,它们就通过VMM 直接在CPU 上运行。当需要进行I/O 操作时,这些I/O 指令就会被VMM 捕获并切换到Host世界中执行,这由VMApp来引发相关调用,最后将结果返回给VMM 世界。由于世界切换的开销是非常大的,所以虚拟机中的I/O 操作性能很低,图4-3是网络应用中发包和收包流程,可以看出,不管是发包还是收包,都比直接使用物理网卡要多做很多工作。

图4-3 VMware发包和收包流程

2.VMware ESX Server

VMware ESX Server通过直接运行在裸机上的VMM 实现对硬件资源的有效复用,由于不存在宿主操作系统,VMM 必须能够处理所有的安装硬件驱动和相关软件所必需的I/O 指令。在虚拟机的内存申请和回收方面,VMware ESX Server首次提出了称之为“气球(Balloon)”的内存管理技术。当系统内存被过量使用或有多余时,VMware ESX Server通过客户机上的Balloon驱动实现内存页面的回收和再分配。当VMM 需要回收内存时,通知Balloon向Guest OS申请内存空间(气球膨胀)而使Guest OS 实际使用的内存空间减少,从而让VMM 回收该空间。当VMM 有多余空间时(如原VM 中止),通过让Balloon向Guest OS释放内存空间(气球缩小)而使客户OS实际使用的内存空间增大。图4-4是Balloon驱动程序的一个形象说明。(www.xing528.com)

图4-4 Balloon 驱动程序

在页表的管理方面,传统的操作系统为每个进程维护一张页表,记录从虚拟地址到物理地址的映射。VMware ESX Server中每个进程有两张页表,分别由Guest OS和VMM 维护,Guest OS维护的页表中存放的是虚拟地址到伪物理地址(Pseudo-Physical Address)的映射,之所以称之为伪物理地址是因为这个地址并不是真正的物理机器上的地址。VMM 维护的页表中存放的是伪物理地址到真正的物理地址(机器地址Machine Address)的映射,这张页表称为影子页表,真实的CR3指向当前进程的影子页表,影子页表的模型如图4-5所示。

图4-5 VMware EST Server的影子页表

具体使用情况是这样的:虚拟页(Virtual Page)通过Guest OS的页表映射到伪物理页,然后由VMM 将伪物理页转换成实际物理内存所对应的机器页面。这样在每次访问内存时都要比传统的操作系统多一级映射,性能上有所下降,但也有利于VMM 更好地管理整个物理内存并提高系统的整体性能。VMM 使用映射技术来管理类似于页表的这些结构,并通过捕获企图更新这些结构的指令来保证页表和其影子页表之间的一致性。当发生缺页错误时,VMM 捕获这一事件,先让Guest OS更新其维护的页表,然后根据机器地址和伪物理地址的映射关系,用机器地址更新相应的影子页表项。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈