2024年4月21日发(作者:)

虚拟机

通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。通过虚拟机软件,你可以在一台物理计算机上模拟

出一台或多台虚拟的计算机,这些虚拟机完全就像真正的计算机那样进行工作,例如你可以安装操作系统、安装应用程序、访问网络资源等

等。对于你而言,它只是运行在你物理计算机上的一个应用程序,但是对于在虚拟机中运行的应用程序而言,它就像是在真正的计算机中进行

工作。

虚拟机很像运行在PC上的街机模拟器。

虚拟机运行示意图。客户端操作系统可以是1个,也可以是多个。

一个计算机系统可以分为如下的四个层次:硬件层、操作系统层、实用程序层(或称为支撑软件层)和应用程序层。

不支持硬件虚拟技术的CPU:客户端操作系统需要经过虚拟机软件转译后,通过主操作系统层交给CPU(硬件层)运行。

支持硬件虚拟技术的CPU能直接运行客户端操作系统。虚拟机软件负责主操作系统与客户端操作系统的联系、控制等等。

在保护模式下,x86处理器一共有4个不同优先级,术语称为Ring,从Ring 0~Ring3。Ring 0的优先级最高,Ring 3最低。Ring 0用于操作系统内

核,Ring 1和Ring 2用于操作系统服务,Ring 3用于应用程序。

位于Ring 0特权空间的操作系统可以优先访问各种硬件资源。传统的虚拟化技术是在Ring 0中运行一个称为虚拟机监视(VMM)的软件中间层,

以负责控制和排列各个分区访问硬件资源的优先顺序。它要求在软件堆栈的较高层运行操作系统--通常是在Ring 1或者与系统应用共用Ring 3。

由于操作系统缺省工作在Ring 0 特权级别,而现在Ring 0被虚拟机监视器所拥有,所以传统的纯软件虚拟化技术需要虚拟机监视器通过复杂的软

件编程来解决这个矛盾。其中一种方法是通过打补丁修改操作系统内核源代码让其认知到工作在Guest OS(客户操作系统)虚拟操作系统模式

下。另一种方法是需要对运行期间操作系统的某些硬件调用指令作二进制码翻译等。二进制码翻译需要消耗处理器的很多计算资源。纯软件虚

拟化运行时的开销会造成系统运行速度较慢,有数据表明其引起的系统性能下降可能达5%~20%。

在传统的x86运行环境下,操作系统运行在CPU中受保护的ring 0位置。在没有处理器辅助的虚拟化中,ring 0还需要运行VMM

(virtual machine monitor,虚拟机监控器)或Hypervisor(虚拟机软件),以帮助VM(虚拟机)及其VOS(虚拟操作系统)管理硬件资源。

因此,芯片厂商引入了一个新的、具有超级特权和受保护的ring -1位置来运行虚拟机监控器(VMM)。这个新位置可以让VOS和平共存于ring 0,而

通信改道于ring -1,并且,VOS并不知道正在和同一系统的其他OS共享物理资源。

芯片上的这一重要创新消除了操作系统的ring转换问题,降低了虚拟化门槛,支持任何操作系统的虚拟化而无须修改OS内核或run-time。Intel和

AMD分别推出了VT-x和AMD-V(即Pacifica)芯片辅助技术,并得到了虚拟化软件厂商的支持。

Intel VT-x技术在芯片内创建新的ring -1,并且提供了新的指令集,用来建立、管理和退出各种VM。在带有虚拟化功能的芯片中,Hypervisor处于

ring-1位置,它生成一个VM控制结构来支持每个新VM。可见,这提供了一种机制,可以根据需要来启动、恢复和退出VM,并且在VMM和大量

的VM之间提供了内容交换框架(framework for context-switching)。

对VM的控制,Intel称之为VMXs,而AMD称之为SVMs(secure VMs),虽然名称不同,但两家芯片的处理方式是比较相似的。更重要的是,都允

许客机操作系统(guest OS)进驻ring 0,从而消除了ring转换问题。由于许多指令对位置具有敏感性(location-sensitive),而且被设计为只能在ring 0和

ring 3之间转化,因此,如果VOS运行在ring 0之外的地方,就可能会导致关键进程的运行出现无法预知的错误,或者在应该出错的时候却没有出

错。

以往,虚拟化厂商都是通过软件机制来截取和纠正相应问题。现在,由于虚拟机可以安全地运行在ring 0位置,因此,这一软件机制也就无须再

考虑了。当VM发生错误时,处理器可以将控制权转给受保护的VMM,从而解决问题和重新控制VM,或者终止出错进程但不影响同一系统上的

其他VM。

如果主操作系统和客户端操作系统都是X86指令系统,那么支持硬件虚拟技术的X86 CPU能直接运行客户端操作系统;若主操作系统是X86指令

系统,而客户端操作系统是其他指令系统(比如IBM Power PC),支持硬件虚拟技术的X86 CPU仍然需要经过虚拟机软件转译。

也就是说,现在intel 、AMD的所谓支持硬件虚拟技术的CPU,只有在主操作系统和客户端操作系统都是X86指令系统的情况下,才能开启硬件虚

拟技术。

虚拟机软件VMware 最低配置为Pentium II 266,内存128M,至少20GB闲置硬盘空间。其实在Pentium III时代虚拟机就已经盛行,但由于当时CPU

性能低,内存/硬盘容量小,那时候运行虚拟机就是自虐。

↓如果CPU支持硬件虚拟技术,Vmware kernel paravirtualization 就能开启

↓装Win98,之前的分区、格式化都要自己搞,FDISK……format……

↓装了VMtool后虚拟的Win98支持32位色,但是显卡、声卡、网卡等都是CPU模拟的,非真实硬件。别说3D加速,连红色警戒都无法运行,只有

Win98自带的扫雷㣞㣞可以玩

↓装了VMtool后虚拟的WinME,显卡、声卡、网卡都可用,装了暴风影音后可以播放RMVB文件。

↓虚拟系统WinME测试CPUMark:375分。Super pi、CPU Z无法运行

↓主操作系统Win2003 64 bit测试CPUMark:391分。这说明即使是不支持硬件虚拟技术的CPU,在虚拟客户端操作系统里的效能也不会下降很

多。391-375/391≈4%

现在intel 、AMD的支持硬件虚拟技术的CPU,只支持在主操作系统和客户端操作系统都是X86体系的情况下开启硬件虚拟技术;运行街机模拟器

的效能跟没有硬件虚拟技术的CPU是一样的,别指望买了支持硬件虚拟技术的CPU运行PS2模拟器玩战神2会快一些。