什么是"非虚拟化" x86架构中的说明?

时间:2015-09-26 06:32:29

标签: x86 intel virtualization computer-architecture xen

在硬件辅助虚拟化出现之前,有些指令因各种原因无法虚拟化。有人可以解释这些说明是什么以及为什么它们不能虚拟化?

1 个答案:

答案 0 :(得分:35)

要虚拟化ISA,必须满足某些要求。 Popek and Goldberg使用了以下内容:

机器至少有两种模式(a)用户模式和(b)系统模式。通常,应用程序以用户模式运行,操作系统以系统模式运行。在系统模式中,代码/程序可以无限制地查看和操作机器。在用户模式中,代码/程序在其功能方面有一些限制,例如:它无法在未获得许可的情况下访问所有机器的内存。

说明是(a)特权或(b)无特权。在用户模式中执行特权说明陷阱。陷阱意味着机器被强制进入系统模式,从而执行操作系统的一些代码来处理这种情况。从某种意义上说,它们在执行时会提醒操作系统。

说明也可以是(a)敏感或(b)不敏感敏感说明会修改部分计算机资源,或者表现出不同的行为,具体取决于它们是在用户模式系统模式下执行

虚拟化ISA时,重要的是虚拟机监视器(VMM)可以检测并平稳处理程序或客户操作系统修改计算机资源的任何尝试。它必须能够看到何时执行敏感指令。要执行此操作,敏感指令的所有需要特权,因此在执行时会陷阱。陷阱时,我们可以进入系统模式并从VMM调用代码来处理资源修改。

问题在于并非所有X86的敏感指令都是特权指令。这意味着可以在VMM查看和处理它的情况下进行资源修改,这可能是危险的。或者,它可能意味着在用户模式中在客户操作系统中执行指令,并且看到的效果与在系统模式中执行该指令的效果不同。根据{{​​3}},x86中有17条指令敏感,但没有特权。一个例子是POPF,当具有不同的语义时,取决于机器的模式。