当guest正在执行时,中断会发生什么?

时间:2011-02-01 09:18:49

标签: linux-kernel virtualization intel kvm

我的问题是关于中断以及当客人在KVM中执行时它们是如何处理的?

让我们说当kvm调用vmentry或vmresume时,访客代码开始执行。现在,当外部中断发生定时器中断时,guest虚拟机将导致vmexit。在Vmexit之后,kvm中的下一条指令将执行,或者是否会调用主机中断调用程序。如果调用kvm中的下一条指令,则kvm可以执行任何操作,然后调用相应的主机中断处理程序。

谢谢,

1 个答案:

答案 0 :(得分:2)

在Intel VT-x上,所有中断都会导致进入主机操作系统的陷阱。然后主机将确定中断是否为:

  • 对于它自己(在这种情况下它会处理它,可能导致KVM在计划中停留很长时间);或

  • 对于来宾,在这种情况下,它会通知KVM中断。然后,KVM将中断注入到guest虚拟机中。 (请注意,KVM的这一部分在内核模式下运行;但我认为您仍然认为这是KVM)。

在任何一种情况下,主机操作系统都会先控制。

有点无关,但VT-x的一个扩展可以让我们虚拟化的人更快乐,如果某些中断可以直接发送给访客,完全避免陷入主机的陷阱(以及相关的性能损失)。唉,这似乎还没有出现在卡片上。