管理程序如何处理从非 VM 实例的主机进程执行的敏感指令?

问题描述

我知道所谓的 Type2 Hypervisor(例如 VMWare Workstation、VirtualBox)是作为内核模块实现的。 VM-instance 是宿主 OS 进程。

假设以下情况。(我知道这很奇怪,但为了简单起见)

  • 一台机器有一个 cpu
  • 主机操作系统是 Windows,它有两个进程,calc.exe 和 VM-instance(引导 Linux)。
  • calc.exe 有一些敏感指令。

我不明白 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?

谢谢。

Imagine Context Switch

解决方法

“敏感”意味着指令可以区分是否在来宾 VM 中运行。 (或者可能会影响来宾 VM 之外的状态)。 calc.exe 不在来宾 VM 中运行,因此它的作用无关紧要。

calc.exe 基本上是管理程序的一部分。阻止用户空间进程干扰其他进程(包括来宾 VM)取决于正常的操作系统机制,即不让它们禁用中断或覆盖其他进程的内存。