首先需要理解一个概念——可虚拟化架构与不可虚拟化架构
特权指令:系统中用来操作和管理关键系统资源的指令,这些指令只有在最高特权级上可以执行。如果在非最高特权级上运行,特权指令会引发一个异常,处理器会陷入到最高特权级,交由系统软件来处理。
敏感指令:在虚拟化世界,操作特权资源的指令,包括修改虚拟机运行模式或者下面物理机状态;读写敏感的寄存器或是内存,例如时钟或者中断寄存器;访问存储保护系统、内存系统或是地址重定位系统以及所有的I/O指令。
所有的特权指令都是敏感指令,然而并不是所有的敏感指令都是特权指令。判断一个结构是否可虚拟化,就在于该结构对敏感指令的支持上,如果在某些结构上所有敏感指令都是特权指令,则它是可虚拟化的结构;否则,如果它无法支持在所有敏感指令上触发异常,则是不可虚拟化结构,也就是所谓的虚拟化漏洞。
重要概念:虚拟处理器、虚拟寄存器、上下文
当虚拟机操作系统访问关键资源时,该请求不会直接访问物理寄存器,VMM会模拟物理处理器的行为,将其访问定位到与物理寄存器相对应的虚拟寄存器上&