全虚拟化 在计算机科学中全虚拟化英語Full virtualization是硬件虚拟化的一种允许未经修改的客操作系统英語Guest OS隔离运行硬件虚拟化对客操作系统隐藏了真实的硬件虚拟机运行在一个架设在硬件或主机操作系统英語Host OS之上的虚拟机监视器VMM中对于全虚拟化硬件特征会被映射到虚拟机上这些特征包括完整的指令集IO操作中断和内存管理等在全虚拟化环境中任何可以运行在裸机上的软件通常是操作系统都可以未经修改地运行在虚拟机中相对地半虚拟化英語Paravirtualization则要求对客操作系统做出必要的更改以适应VMM提供的半虚拟化API 实现一个比主机操作系统优先级更高的VMM或超级操作系统英語Super OS是全虚拟化与型虚拟化英語Type virtualization的基础监视器或超级操作系统需要两个关键特性来提供并保护虚拟化环境 操作系统无关的储存管理可以为不同的虚拟环境如LinuxWindows和嵌入式环境提供资源并保护这些环境不会被未经授权地访问 虚拟化环境的切换以向虚拟机分配物理计算资源Intel VTx与AMDV的x虚拟化和IBM在世纪年代末到年代初的早期虚拟机有着不同的实现 全虚拟化仅仅在波佩克与戈德堡虚拟化需求得以满足时才是可行的 在大多数IBM SystemIBM System是一个例外和早期的IBM System是无法实现全虚拟化的IBM于年在System上添加了实现虚拟化内存的硬件从而实现了全虚拟化 全虚拟化在早期的x平台上也无法实现直到年前后AMD和Intel分别加入了AMDV和Intel VTx扩展参见x虚拟化Intel VTx采用了保护环的实现方式以恰当地控制虚拟机的内核模式特权然而在此之前许多x上的平台VMM已经非常接近于实现全虚拟化甚至宣称支持全虚拟化比如 AdeosMaconLinuxParallels Desktop for MacParallels WorkstationVMware WorkstationVMware ServerVirtualBoxWinBSD和WinLin Pro以VMware为例它使用二进制翻译的技术可以在运行时将x软件中的一些可以穿过虚拟机的指令自动地翻译成对主机安全的指令 全虚拟化技术应对的关键挑战是对有高特权操作的侦听和模拟比如IO操作虚拟机中所有操作的副作用一定要限制在虚拟机之内虚拟操作不可以修改其他虚拟机的状态控制程序或是硬件对于涉及对象完全受VMM管理的机器指令可以直接在硬件上执行例如内存地址和算数寄存器其他一些指令可能会穿过虚拟机即可以访问或影响状态信息或对虚拟机外产生影响这些指令就不可以直接执行它们必须被软中断之后由VMM模拟执行 全虚拟化已被证实的成功之处有 多用户之间共享系统 隔离用户和控制程序 模拟新硬件提升可靠性安全性和生产力