2024年6月3日发(作者:)

全虚拟化(Full virtualization), 也称为原始虚拟化技术, 是另一种虚拟化方法. 该模型

使用虚拟机协调客户操作系统和原始硬件(见图2). 这里"协调"是一个关键词, 因为VMM

在客户操作系统和裸硬件之间用于工作协调. 一些受保护的指令必须由Hypervisor(虚拟

机管理程序)来捕获和处理. 因为操作系统是通过Hypervisor来分享底层硬件.

图2. 全虚拟化: 使用Hypervisor分享底层硬件

全虚拟化的运行速度要快于硬件模拟, 但是性能方面不如裸机, 因为Hypervisor需要

占用一些资源. 全虚拟化最大的优点是操作系统没有经过任何修改. 它的唯一限制是操作

系统必须能够支持底层硬件(比如, PowerPC).

老机器上的Hypervisors

一些老的硬件如x86, 全虚拟化遇到了问题. 比如, 一些敏感的指令需要由VMM来处

理(VMM不能设置陷阱). 因此, Hypervisors必须动态扫描和捕获特权代码来处理问题.

半虚拟化

半虚拟化(Paravirtualization)是另一种类似于全虚拟化的热门技术. 它使用

Hypervisor(虚拟机管理程序)分享存取底层的硬件, 但是它的客户操作系统集成了虚拟化

方面的代码. 该方法无需重新编译或引起陷阱, 因为操作系统自身能够与虚拟进程进行很

好的协作.

图3. 半虚拟化: 通过客户操作系统分享进程

上面提到过, 半虚拟化需要客户操作系统做一些修改(配合Hypervisor), 这是一个不

足之处. 但是半虚拟化提供了与原始系统相近的性能. 与全虚拟化一样, 半虚拟化可以同

时能支持多个不同的操作系统.

有这样的疑问:

在半虚拟化的环境中,不能运行未经修改内核的操作系统,那么,cpu不支持vt,在

宿主系统上跑的虚拟环境就可以称为半虚拟化环境了,那么在cpu不支持vt的机器上

vmwera可以运行xp,这个互相矛盾,为什么就可以运行呢?

PV vs. FV

PV(Para-Vritralization)和FV(Full-Vritralization)的差别,主要以guest OS的

硬件仿真程度做区分。

FV:FV是一般较常看到的作法,所有的guest OS完全不会看到实际的硬件为何,只

能使用由Supervisor所提供的所有虚拟硬件,因此,在这种机制下,guest OS动作的性

能一定会大受虚拟接口的影响。另外还有一个特点,就是因为完全仿真的关系,不支持新