全虚拟化

在计算机科学中，全虚拟化（）是硬件虚拟化的一种，允许未经修改的客操作系统（）隔离运行。硬件虚拟化对客操作系统隐藏了真实的硬件，虚拟机运行在一个架设在硬件或主机操作系统（）之上的虚拟机监视器(VMM)中。对于全虚拟化，硬件特征会被映射到虚拟机上，这些特征包括完整的指令集、I/O操作、中断和内存管理等。在全虚拟化环境中，任何可以运行在裸机上的软件（通常是操作系统）都可以未经修改地运行在虚拟机中。相对地，半虚拟化（）则要求对客操作系统做出必要的更改，以适应VMM提供的半虚拟化API。

实现一个比主机操作系统优先级更高的VMM或超级操作系统（）是全虚拟化与1型虚拟化（）的基础。监视器或超级操作系统需要两个关键特性来提供并保护虚拟化环境：
 操作系统无关的储存管理，可以为不同的虚拟环境（如Linux、Windows和嵌入式环境）提供资源，并保护这些环境不会被未经授权地访问；
 虚拟化环境的切换，以向虚拟机分配物理计算资源。Intel VT-x与AMD-V的x86虚拟化和IBM在20世纪60年代末到70年代初的早期虚拟机有着不同的实现。

全虚拟化仅仅在波佩克与戈德堡虚拟化需求得以满足时才是可行的。

在大多数IBM System/360（IBM System/360-67是一个例外）和早期的IBM System/370是无法实现全虚拟化的。IBM于1972年在System/370上添加了实现虚拟化内存的硬件，从而实现了全虚拟化。

全虚拟化在早期的x86平台上也无法实现。直到2006年前后，AMD和Intel分别加入了AMD-V和Intel VT-x扩展（参见x86虚拟化）。Intel VT-x采用了保护环的实现方式，以恰当地控制虚拟机的内核模式特权。然而在此之前许多x86上的平台VMM已经非常接近于实现全虚拟化，甚至宣称支持全虚拟化。比如 Adeos、Mac-on-Linux、Parallels Desktop for Mac、Parallels Workstation、VMware Workstation、VMware Server、VirtualBox、Win4BSD和Win4Lin Pro。以VMware为例，它使用二进制翻译的技术，可以在运行时将x86软件中的一些可以“穿过虚拟机”的指令自动地翻译成对主机安全的指令。

全虚拟化技术应对的关键挑战是对有高特权操作的侦听和模拟，比如I/O操作。虚拟机中所有操作的副作用一定要限制在虚拟机之内——虚拟操作不可以修改其他虚拟机的状态、控制程序或是硬件。对于涉及对象完全受VMM管理的机器指令，可以直接在硬件上执行，例如内存地址和算数寄存器。其他一些指令可能会“穿过虚拟机”，即可以访问或影响状态信息或对虚拟机外产生影响，这些指令就不可以直接执行，它们必须被软中断之后由VMM模拟执行。

全虚拟化已被证实的成功之处有：
 多用户之间共享系统
 隔离用户（和控制程序）
 模拟新硬件，提升可靠性、安全性和生产力

参见 

 
 
 
 
 管理程序
 
 
 作業系統層虛擬化
 
 硬件虚拟化
 波佩克和戈德堡虚拟化的要求
 
 虛擬機器

参考文献

外部链接 
 Compatibility is Not Transparency: VMM Detection Myths and Realities

硬件虚拟化