X86虚拟化

虚拟化技术是指在x86的系统中，一个或以上的客操作系统（Guest Operating System，簡稱：Guest OS）在一个主操作系统（Host Operating System，簡稱：Host OS）下运行的一种技术。这种技术只要求对客操作系统有很少的修改或甚至根本没有修改。x86处理器架构起先并不满足波佩克与戈德堡虚拟化需求（Popek and Goldberg virtualization requirements），这使得在x86处理器下对普通虚拟机的操作变得十分复杂。在2005年，英特尔与AMD分别在它们的x86架构上解决了这个问题。 1999年2月8日，VMware展示了它的第一个x86虚拟化产品“VMware虚拟平台”（VMware Virtual Platform），此产品建立在创建者早期在斯坦福大学的研究基础之上。VMware在1998年10月提交了对这一技术的专利申请，并于2002年5月28日被授予美國專利第6,397,242号。VMware与类似的x86虚拟化软件必须使用十分复杂的技术来获得并虚拟运行一些指令，这些技术被IBM的IBM_System/370 （页面存档备份，存于互联网档案馆）以及摩托罗拉的MC68020等原生可虚拟化的架构远远超出。 Kevin Lawton启动了Plex86项目（原来叫作“freemware”）来创建应用于x86虚拟化的自由软件。此项目已经改变了原有的目的，现在只支持Linux作为客操作系统；然而在这之前，Lawton发表了一篇论文《使用虚拟化技术在一台IA-32 PC上同时运行多个操作系统》，作出了对x86架构虚拟化困难的分析以及提出了一些解决这些困难的技术。 2003年，应用于Linux平台的x86虚拟化方案Xen诞生。2005年，随着Intel推出支持x86虚拟化技术的CPU，Xen亦加入全虚拟化模式。Xen的全虚拟化模式允许在虚拟机中运行Windows等非Linux系统。 微软也提供了基于Windows的x86虚拟化产品：Microsoft Virtual PC与Microsoft Virtual Server，这两个产品都基于微软收购Connectix后获得的技术。后来，微软的Microsoft Virtual PC更名为Hyper-V并成为Windows的一个组件，亦曾推出Windows XP Mode以尽可能的解决Windows 7操作系统不支持某些老应用程序的问题。 开源的替代品也包括KVM、QEMU与VirtualBox。 英特尔与AMD独立地开发出了x86架构的虚拟化扩展。它们并不直接兼容，但是能够做到大部分的功能都相同。这两个扩展都允许在虚拟的性能不出现明显下降时运行一个虚拟机查看器，以运行未经过修改的客操作系统。 英特尔虚拟化技术（Intel Virtualization Technology）是由英特尔开发的一种虚拟化技术，利用IVT可以对在系统上的操作系统，通过虚拟机查看器（VMM，Virtual Machine Monitor）来虚拟一套硬件设备，以供虚拟机操作系统使用。 这些技术以往在VMware与Virtual PC上都通过软件实现，而通过IVT的硬件支持可以加速此类软件的进行。 英特尔在32位与64位x86架构下的虚拟化扩展被命名为“IVT”，有时候也用它的开发代号“Vanderpool”来称呼它。32位/64位元的IVT扩展叫作“VT-x”。英特尔同时为用于IA-64（安腾2）处理器的IVT发布了规格说明，此项IVT被称为“VT-i”；在这之前，IA-64的虚拟化技术的开发代号是“Silverdale”。 英特尔虚拟化技术是在2005年春季英特尔信息技术峰会时由官方发布的。部分型號的Pentium 4/Pentium D/Core 2/Pentium Dual-Core/Celeron/Xeon可用VT-x。Intel Core i3/i5/i7/i9可用SLAT。 VT-x不仅需要处理器的支持，也需要芯片组、BIOS的支持。 在Linux中，支持虚拟化的英特尔处理器会在一个特别文件/proc/cpuinfo中有一个名为“vmx”的标志。 Intel还推出了“直接输入/输出虚拟化”（Virtualization for Directed I/O，VT-d）技术。这项技术提供了一种配置传送给独立虚拟机的中断与配置I/O内存单元的方式，以防止虚拟机使用DMA来终止与真实硬件的隔离。 不過值得注意的是，該功能在Core系列以及Xeon E3、Xeon D系列中並不完整。 部分Intel網路卡支援VT-c技術。 AMD虚拟化（AMD Virtualization），缩写为“AMD-V”，是AMD为64位的x86架构提供的虚拟化扩展的名称，但有时仍然会用“Pacifica”（AMD开发这项扩展时的内部项目代码）来指代它。 AMD-V在AMD的步进为“F”与“G”的速龙64以及速龙64 X2处理器，使用Socket S1的炫龙64处理器、炫龙64 X2处理器、弈龙处理器，以及全部更新的处理器上可用。現在的AMD APU、AMD FX、AMD Athlon、AMD Ryzen、AMD Epyc等AMD處理器絕大多數都支援AMD SVM技術。 在Linux中，支持虚拟化的AMD处理器会在一个特别文件/proc/cpuinfo中有一个名为“svm”的标志。 AMD为一项名为AMD-V的IO内存管理单元（IOMMU）发布过一份技术规范。这份技术规范提供了一种配置传送给独立虚拟机的中断与配置I/O内存单元的方式，以防止虚拟机使用DMA来终止与真实硬件的隔离。IOMMU在高级的操作系统（如缺席虚拟化，absent virtualization）与AMD的Torrenza架构中起到了重要的作用。 AMD亦有I/O虛擬化的IOMMU技術。 起初Windows Vista的家用入門版与家庭高级版在最终用户许可协议中声明，该系统不能够在一台虚拟机中安装或运行，尽管在技术上并没有障碍使得用户无法这样做。这一条款在2008年1月时被修改了。 Intel Virtualization Technology. Intel. [2008-01-23]. （原始内容存档于2012-10-25）.  Intel Processors Supporting VT. Xen Source. [2008-01-23]. （原始内容存档于2013-04-28）.  Intel Pentium 4 Processor 6xx Sequence and Intel Pentium 4 Processor Extreme Edition Datasheet. Intel. [2008-01-23]. （原始内容存档于2008-12-22）.  Re: [vfio-users] IOMMU group question - different pcie slots gives different configuration. Red Hat. [2019-12-06]. （原始内容存档于2019-07-25）.  https://medium.com/@9to5tech/laptops-under-40000-843e6d0b2aa6 Microsoft relents: Vista consumer virtualization ban lifted. [2008-01-23]. （原始内容存档于2008-09-17）.  虚拟化 虚拟机器 Virtualization technologies from Intel （页面存档备份，存于互联网档案馆） Intel VT（Virtualization Technolegy）技術