什么是「;“不可虚拟化”;x86体系结构中的指令?

什么是「;“不可虚拟化”;x86体系结构中的指令?,x86,intel,virtualization,computer-architecture,xen,X86,Intel,Virtualization,Computer Architecture,Xen,在硬件辅助虚拟化出现之前,由于各种原因,有些指令无法虚拟化。有人能解释一下这些指令是什么以及为什么不能虚拟化吗?要虚拟化ISA,必须满足某些要求。使用类似以下内容的内容: 机器至少有两种模式(A)用户模式和(b)系统模式。通常,应用程序在用户模式下运行,操作系统在系统模式下运行。在系统模式下,代码/程序可以不受限制地查看和操作机器。在用户模式下,代码/程序在其功能上有一些限制,例如,在未获得许可的情况下,无法访问机器的所有内存 指令是(a)特权的或(b)非特权的特权指令在用户模式下执行时陷阱。陷

在硬件辅助虚拟化出现之前,由于各种原因,有些指令无法虚拟化。有人能解释一下这些指令是什么以及为什么不能虚拟化吗?

要虚拟化ISA,必须满足某些要求。使用类似以下内容的内容:

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

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

指令也可以是(a)敏感的或(b)不敏感的敏感指令修改机器的部分资源,或根据它们是在用户模式系统模式下执行而表现出不同的行为

在虚拟化ISA时,虚拟机监视器(VMM)能够检测并顺利处理程序或来宾操作系统修改机器资源的任何尝试,这一点很重要。它必须能够看到何时执行敏感指令。要做到这一点,所有敏感的指令都必须是特权的,因此在执行时会被捕获。当被捕获时,我们可以进入系统模式,并从VMM调用代码来处理资源修改


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

我投票将这个问题作为离题题来结束,因为它不是一个编程问题。谢谢你的回答!解释清楚。