我的问题是关于中断,以及在guest虚拟机在KVM中执行时如何交给他们?客户正在执行时发生中断时会发生什么?
可以说当kvm调用vmentry或vmresume时,客人代码开始执行。现在当一个外部中断发生定时器中断时,guest会引起一个vmexit。在Vmexit之后,kvm中的下一条指令将执行或主机中断调用者被调用。如果kvm中的下一条指令被调用,则kvm可以做任何想要的操作,然后调用相应的主机中断处理程序。
谢谢,
我的问题是关于中断,以及在guest虚拟机在KVM中执行时如何交给他们?客户正在执行时发生中断时会发生什么?
可以说当kvm调用vmentry或vmresume时,客人代码开始执行。现在当一个外部中断发生定时器中断时,guest会引起一个vmexit。在Vmexit之后,kvm中的下一条指令将执行或主机中断调用者被调用。如果kvm中的下一条指令被调用,则kvm可以做任何想要的操作,然后调用相应的主机中断处理程序。
谢谢,
在Intel VT-X,所有的中断导致陷阱到宿主操作系统。然后,主机将决定是否中断是:
对于本身(在这种情况下,它就会进行处理,可能导致KVM坐不定期相当长的一段时间);或
对于来宾,在这种情况下,它会通知KVM有关该中断。然后,KVM会将中断注入到guest虚拟机中。 (请注意,这部分KVM以内核模式运行;但我认为您仍然认为这是KVM)。
无论哪种情况,主机操作系统都会首先进行控制。
有点不相干,但VT-x的一个扩展使我们虚拟化的人更快乐,如果某些中断可以直接发送给guest虚拟机,避免陷入主机陷阱(以及相关的性能损失)。唉,这似乎还没有成为现实。
感谢您的回答。关于你的第二点,我认为这可能是有一个passthru设备时完成的。由于主机不知道它,访客中断处理程序将被始终调用。 – zombie 2011-02-01 17:21:54
它会一直运行在内核进程下,为什么用户空间进程或权限对内核空间有什么要求? – leppie 2011-02-01 09:28:16