【发布时间】:2012-10-05 16:33:05
【问题描述】:
最近,我正在做有关虚拟化的作业。我的问题是,VMM 如何将控制权转移到来宾内核并在 Ring 1 中运行该代码?
Type-1 VMM:这是经典的陷阱和仿真 VMM。 VMM 直接在硬件上运行,充当环 0 中的“主机操作系统”。来宾内核和来宾应用程序分别在环 1 和环 3 中的 VMM 上运行。
当来宾应用程序进行系统调用时,它将捕获到 Ring 0 VMM(CPU 旨在执行此操作)。
VMM 将检测到这是一个系统调用,然后将控制权转移到来宾内核系统处理程序并在环 1 中执行。
完成后,guest 内核执行 syscall-return,这是一个特权调用,它将再次陷入 VMM。
VMM 然后在环 3 中真正返回来宾用户空间。(CPU 也被设计为执行此操作。)
我的问题是关于第 2 步的。VMM 如何将控制权转移到客户内核并强制 CPU 响铃 1? 从那时起,客户内核代码就不是简单的“调用”了将在环 0 中运行。它必须是某种“系统调用返回”或一些特殊的上下文切换指令。
你有什么想法吗?谢谢!
【问题讨论】:
-
您说的是哪个管理程序?这可能因一个 VMM 与另一个不同。
-
@hsalimi 谢谢!但实际上我没有特定的 VMM。一般来说,有多少种方法可以实现?
标签: virtualization context-switch protected-mode hypervisor