虚拟化是一个广义的术语,在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显着提高计算机的工作效率。
虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。
虚拟化技术也与VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。
纯软件虚拟化解决方案存在很多限制。“客户”操作系统很多情况下是通过VMM(Virtual Machine Monitor,虚拟机监视器)来与硬件进行通信,由VMM来决定其对系统上所有虚拟机的访问。在纯软件虚拟化解决方案中,VMM在软件套件中的位置是传统意义上操作系统所处的位置,而虚拟化技术将各种资源虚拟出多台主机操作系统的位置是传统意义上应用程序所处的位置。
虚拟化技术是一套解决方案。完整的情况需要CPU、主板芯片组、BIOS和软件的支持,例如VMM软件或者某些操作系统本身。即使只是CPU支持虚拟化技术,在配合VMM的软件情况下,也会比完全不支持虚拟化技术的系统有更好的性能。
两大CPU巨头Intel和AMD都想方设法在虚拟化领域中占得先机,但是AMD的虚拟化技术在时间上要比Intel落后几个月。Intel自2005年末开始便在其处理器产物线中推广应用Intel Virtualization Technology(Intel VT)虚拟化技术。
而AMD方面也已经发布了支持AMD Virtualization Technology(AMD VT)虚拟化技术的一系列处理器产物,包括Socket S1接口的Turion 64 X2系列以及Socket AM2接口的Athlon 64 X2系列和Athlon 64 FX系列等等,并且绝大多数的AMD下一代主流处理器,包括即将发布的Socket F接口的Opteron都将支持AMD VT虚拟化技术。
虚拟机是对真实计算环境的抽象和模拟,VMM 需要为每个虚拟机分配一套数据结构来管理它们状态,包括虚拟处理器的全套寄存器,物理内存的使用情况,虚拟设备的状态等等。VMM 调度虚拟机时,将其部分状态恢复到主机系统中。并非所有的状态都需要恢复,例如主机&苍产蝉辫;CR3 寄存器中存放的是&苍产蝉辫;VMM 设置的页表物理地址,而不是&苍产蝉辫;Guest OS 设置的值。主机处理器直接运行&苍产蝉辫;Guest OS 的机器指令,由于&苍产蝉辫;Guest OS运行在低特权级别,当访问主机系统的特权状态(如写&苍产蝉辫;GDT寄存器)时,权限不足导致主机处理器产生异常,将运行权自动交还给&苍产蝉辫;VMM。此外,外部中断的到来也会导致&苍产蝉辫;VMM 的运行。
VMM 可能需要先将&苍产蝉辫;该虚拟机的当前状态写回到状态数据结构中,分析虚拟机被挂起的原因,然后代表&苍产蝉辫;Guest OS 执行相应的特权操作。最简单的情况,如Guest OS 对&苍产蝉辫;CR3 寄存器的修改,只需要更新虚拟机的状态数据结构即可。一般而言,大部分情况下,VMM 需要经过复杂的流程才能完成原本简单的操作。最后&苍产蝉辫;VMM 将运行权还给&苍产蝉辫;Guest OS,Guest OS 从上次被中断的地方继续执行,或处理&苍产蝉辫;VMM “塞”入的虚拟中断和异常。这种经典的虚拟机运行方式被称为&苍产蝉辫;Trap-And-Emulate,虚拟机对于&苍产蝉辫;Guest OS 完全透明,Guest OS 不需要任何修改,但是&苍产蝉辫;VMM 的设计会比较复杂,系统整体性能受到明显的损害。