Operating system 敏感指令和特权指令之间的区别

Operating system 敏感指令和特权指令之间的区别,operating-system,virtual-machine,virtualization,kernel-mode,paravirtualization,Operating System,Virtual Machine,Virtualization,Kernel Mode,Paravirtualization,我一直在寻找一个与敏感和特权指令明显不同的地方,但现在一切都很模糊 据我所知:如果在用户空间执行,敏感指令需要陷阱到内核模式,否则它会被忽略,而特权指令如果在用户空间执行,将陷阱到内核模式 这种差异对我来说是模糊和不令人满意的。请随意给出一个很棒的答案 编辑:只是想一想,这些是同一件事吗 这些术语通常用于硬件虚拟化:虚拟机。敏感指令是管理程序或虚拟机监视器(VMM)希望捕获和模拟的指令,以使未修改的操作系统产生拥有其硬件资源的错觉,即成功虚拟化和运行操作系统 同时,特权指令只是指ISA定义为特权

我一直在寻找一个与敏感和特权指令明显不同的地方,但现在一切都很模糊

据我所知:如果在用户空间执行,敏感指令需要陷阱到内核模式,否则它会被忽略,而特权指令如果在用户空间执行,将陷阱到内核模式

这种差异对我来说是模糊和不令人满意的。请随意给出一个很棒的答案


编辑:只是想一想,这些是同一件事吗

这些术语通常用于硬件虚拟化:虚拟机。敏感指令是管理程序或虚拟机监视器(VMM)希望捕获和模拟的指令,以使未修改的操作系统产生拥有其硬件资源的错觉,即成功虚拟化和运行操作系统

同时,特权指令只是指ISA定义为特权的指令集。也就是说,这些指令必须由环0中运行的进程执行。(请注意,这个概念与用户空间或内核模式本身无关,而是与进程运行的环级别有关。我们几乎一直都在环3中运行用户空间进程,环0中运行内核)

理想情况下,我们希望敏感指令集与特权指令集相等,这允许我们使用现有硬件进行陷阱捕获和仿真。但过去情况并非如此,因此创建了硬件扩展(如Intel VT-x)来解决此问题。几乎所有现代CPU都支持硬件虚拟化,部分原因是允许VMM捕获和模拟所有敏感指令


有关更多背景和来源,请参阅:

不确定。英特尔将一些x86指令列为敏感指令,尤其对IOPL敏感,这意味着它们将在CPL>IOPL的条件下从用户捕获到内核。有些指令未列为敏感指令,但根据某些系统/配置寄存器中的内容,可以在用户模式(例如RDTSC)下类似地启用或禁用,这些指令不也应该敏感吗?还有一些指令在处理敏感信息/系统信息(如SGDT)时有点(?)敏感。