购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 虚拟化技术的分类

VMM抽象的虚拟机的ISA可以等同于它运行的物理机,也可以做一些修改。当虚拟的ISA与物理的ISA相同时,该虚拟机可以运行没有任何修改的操作系统;而当两者不同时,就必须修改客户机的操作系统。根据VMM抽象的虚拟机的架构的不同或根据是否需要修改客户OS,虚拟化技术又可以分为半虚拟化(Paravirtualization)技术和完全虚拟化(Full Virtualization)技术。早期基于x86体系结构的虚拟化实现方法因为体系结构的虚拟化漏洞问题,更多采用半虚拟化技术,但是早期的半虚拟化技术只能运行Linux等开源操作系统(作为客户机操作系统),而无法运行Windows等闭源操作系统。

随着硬件技术的提高,以Intel虚拟化技术(Intel Virtualization Technology,Intel VT)为代表的完全虚拟化方案的提出和进步极大地简化了Hypervisor的实现。另外,完全虚拟化由于不需要修改客户操作系统,因此可以更好地适用于各种场景。同时,硬件技术的进步使得完全虚拟化的额外性能开销更少,客户机操作系统上的主要应用的性能也优于半虚拟化技术。今天完全虚拟化已经成为主流。

必须要指出的是,是否修改客户操作系统不是一个严谨的学术问题,而是对现有操作系统生态的一种现状描述。早期的虚拟化技术社区工作者比较少,对操作系统社区的影响也小,因此只能采用全盘接受现有操作系统(未经修改的二进制代码)或者私下修改并发布的方法(即半虚拟化)。这种情况已经大大改善,经典的云操作系统和Linux操作系统内核都大量集成了来自虚拟化技术社区的改动代码,使得Linux为虚拟化而做的修改成为Linux内在的实现,而不需要特意强调新的“对操作系统的修改”。这种情况即使在私有的Windows上也是如此:Windows操作系统定义的一整套的API,让Hypervisor提供Windows Hypercall的实现,以便在完全虚拟化的情况下采用部分的半虚拟化技术,从而实现性能优化和代码功能优化等。

另外需要注意的是I/O的完全虚拟化和半虚拟化的争论。同样,一个Hypervisor可以模拟一个完全未经修改的I/O设备,让使用此设备的客户机操作系统直接使用现有设备的驱动程序而不需要做任何的修改。可以把这种情况理解为一种I/O设备的完全模拟或者完全虚拟化。相反,定义一个全新的设备,利用Hypervisor的特点开发一个新的设备驱动程序以及对应的设备模拟功能,让I/O子系统更加高效、更加方便。可以把这种情况理解为I/O的半虚拟化实现,比如由KVM社区最初基于PCI Bus定义的virtio 设备模型已经成为现在常用的I/O虚拟化方法之一。 yVAEm8b+mD3PDdU3+0J+sYpocx2D+AKz+800pgzQlAUtKsYHNCJMWI2xh0yHHQM3

点击中间区域
呼出菜单
上一章
目录
下一章
×