英特尔VT-x(或AMD Pacifica / AMD V)是否支持真正的虚拟化?

我仍然对虚拟化的机制感到困惑。

我明白为什么x86架构本身不是虚拟化的,为什么其他架构(以及为什么68k架构除了MC68000本身等)。

然后我阅读了有关将虚拟化function添加到x86的英特尔VT-x和AMD V。

但是,虚拟CPU似乎是与物理CPU不同的CPU; 即物理CPU具有VT-x,而虚拟CPU不具有VT-x。

虽然这不是一个实际的问题(通常不需要在虚拟机中运行的操作系统需要VT-x),但这确实使我怀疑这是否构成真正的虚拟化。

80386已经可以虚拟化一个比80386本身更less的特性,即虚拟x86模式。 VT-x就是这样一个层(环-1,我想)还是真正的虚拟化?

(如果要虚拟化使用VT-x的系统,会发生什么情况?真正的虚拟化不应该允许无限制的虚拟化水平吗?)

对不起,一个愚蠢的问题。 或者说,对于理论而不是实际的问题抱歉。

更新:我做了这个graphics,试图更好地理解这一点:

http://www.netneurotic.net/bin/VMM.png

我明白为什么x86架构本身不是虚拟化的。

那根本不是真的。 它可以通过二进制翻译进行虚拟化,也可以称为完全虚拟化。 您可以使用位于操作系统之上的软件模拟传统计算机的每个组件。

然后我阅读了有关将虚拟化function添加到x86的英特尔VT-x和AMD V。

为了更加正确,它增加了额外的虚拟化function。 确切地说,它增加了处理器扩展,可以更快地处理虚拟化查询。 它还为64位处理器增加了一个-1环,因为AMD64环的数量减less到了2。

您可以使用“完全虚拟化”(Virtual PC,VirtualBox)或半虚拟化(Xen,Hyper-V)在x86上进行虚拟化。 英特尔VT / AMD-V允许您加速虚拟化并执行“硬件辅助虚拟化”。

我不知道你真正的虚拟化是什么意思……任何types的虚拟化都是真实的,它们使你能够在一台计算机上安装更多的操作系统。 这就是虚拟化的意义所在。

我希望这是明确的。 不要犹豫,如果你想要更多的信息评论。

编辑:如果你真的想知道更多关于这个,得到这本书 。 它教会了我一切。

你能解释一下Intel VT / AMD-V究竟如何加速虚拟化?

通过在CPU技术上实现VMWare等,他们使得pipe理程序的工作更容易。 人。 不得不在他们的二进制翻译软件。 有关这方面的更多细节,英特尔有一些不错的网页:

http://www.intel.com/technology/itj/2006/v10i3/1-hardware/6-vt-x-vt-i-solutions.htm

有几个地方使它更容易。 根据以上所述:

  • 地址转换提供给操作系统的内存空间表必须在非VT CPU上人为分段。 这是用软件完成的。 这些扩展允许CPU通过允许多个线性地址空间直接虚拟化VM-guest虚拟机的内存空间。 在这些扩展之前,这是在二进制翻译层处理的。
  • CPU特权级别这些扩展允许访客在正确的环层上实际运行他们的代码。 在扩展之前,打算在Ring 0中运行的代码实际上是在软件二进制转换层提供的faker中在1或3环中运行的。 这些扩展允许访客在他们正确的Ring级别上运行他们的代码,同时提供关于脱离虚拟机的安全防护。
  • 中断虚拟化通过允许虚拟机客户端处理自己的中断,它允许虚拟机pipe理程序不会涉及每一个中断。 这使得客人跑得更快。

这三件事大大简化了编写pipe理程序的工作,为什么像KVM和Xen这样的开发者首先在VT处理器上只支持“完全”虚拟化。

VT-x和Pacifica加速虚拟化。 仿真加速是徒劳的。

VT-x实际上也给你一些更多的function。 由于EM64T / Intel64不支持VMware二进制转换所需的分段存储器,因此VMware ESX无法虚拟化没有VT-x的64位guest虚拟机。 AMD64支持除Opteron Rev C处理器之外的分割。 AMD意识到一个错误,并修复了它,而英特尔不select。