问题描述
我知道所谓的 Type2 Hypervisor(例如 VMWare Workstation、VirtualBox)是作为内核模块实现的。 VM-instance 是宿主 OS 进程。
假设以下情况。(我知道这很奇怪,但为了简单起见)
我不明白 Hypervisor 在 cpu 上运行 calc.exe 时是否会捕获敏感指令。
我有两个想法。
i) 管理程序捕获来自 calc.exe 的敏感指令。 管理程序识别 calc.exe 或 VM 实例进程。 如有必要,Hypervisor 会模拟从 VM 实例进程执行的它。
ii) 当上下文切换中断导致 VM 退出时,Hypervisor 不会执行 vmresume。 换句话说,cpu 在执行 calc.exe 时是“VMX ROOT MODE”。因此虚拟机管理程序不起作用。
在 ii) 的情况下,当 VM-instance 进程重新分配给 cpu 时,Hypervisor 如何执行 vmresume?
谢谢。
解决方法
“敏感”意味着指令可以区分是否在来宾 VM 中运行。 (或者可能会影响来宾 VM 之外的状态)。 calc.exe 不在来宾 VM 中运行,因此它的作用无关紧要。
calc.exe 基本上是管理程序的一部分。阻止用户空间进程干扰其他进程(包括来宾 VM)取决于正常的操作系统机制,即不让它们禁用中断或覆盖其他进程的内存。