Hypervisor 如何处理从不是 VM 实例的主机进程执行的敏感指令?
How does Hypervisor deal with sensitive instructions executed from host process that is not VM-instance?
我知道所谓的 Type2 Hypervisor(如 VMWare Workstation、VirtualBox)是作为内核模块实现的。
VM 实例是主机 OS 进程。
假设以下情况。(我知道这很奇怪但为了简单起见)
- 一台机器有一个CPU。
- 主机 OS 是 Windows,它有两个进程,calc.exe 和 VM 实例(启动 Linux)。
- calc.exe 有一些敏感指令。
我不明白 Hypervisor 是否捕获敏感指令,而 运行 calc.exe 在 CPU。
我有两个想法。
i) Hypervisor 捕获来自 calc.exe 的敏感指令。
管理程序识别 calc.exe 或 VM 实例进程。
如果需要,Hypervisor 会模拟从 VM 实例进程执行的它。
ii) 当上下文切换中断导致 VM-EXIT 时,Hypervisor 不执行 vmresume。
换句话说,CPU 在执行 calc.exe 时是“VMX ROOT MODE”。因此 Hypervisor 不起作用。
在ii)的情况下,当VM-instance进程重新分配给CPU时,Hypervisor如何执行vmresume?
谢谢。
Imagine Context Switch
“敏感”意味着一条指令可以区分 运行 是否在来宾虚拟机内部。 (或者可能影响来宾 VM 外部的状态)。 calc.exe 不在来宾 VM 中 运行,所以它做什么并不重要。
calc.exe 基本上是管理程序的一部分。这取决于正常的 OS 机制来阻止用户-space 进程弄乱其他进程(包括来宾 VM),即不让它们禁用中断或覆盖其他进程的内存。
我知道所谓的 Type2 Hypervisor(如 VMWare Workstation、VirtualBox)是作为内核模块实现的。 VM 实例是主机 OS 进程。
假设以下情况。(我知道这很奇怪但为了简单起见)
- 一台机器有一个CPU。
- 主机 OS 是 Windows,它有两个进程,calc.exe 和 VM 实例(启动 Linux)。
- calc.exe 有一些敏感指令。
我不明白 Hypervisor 是否捕获敏感指令,而 运行 calc.exe 在 CPU。
我有两个想法。
i) Hypervisor 捕获来自 calc.exe 的敏感指令。 管理程序识别 calc.exe 或 VM 实例进程。 如果需要,Hypervisor 会模拟从 VM 实例进程执行的它。
ii) 当上下文切换中断导致 VM-EXIT 时,Hypervisor 不执行 vmresume。 换句话说,CPU 在执行 calc.exe 时是“VMX ROOT MODE”。因此 Hypervisor 不起作用。
在ii)的情况下,当VM-instance进程重新分配给CPU时,Hypervisor如何执行vmresume?
谢谢。
Imagine Context Switch
“敏感”意味着一条指令可以区分 运行 是否在来宾虚拟机内部。 (或者可能影响来宾 VM 外部的状态)。 calc.exe 不在来宾 VM 中 运行,所以它做什么并不重要。
calc.exe 基本上是管理程序的一部分。这取决于正常的 OS 机制来阻止用户-space 进程弄乱其他进程(包括来宾 VM),即不让它们禁用中断或覆盖其他进程的内存。