对于使用Intel VT-x的VMM,为什么有人想要将VMCS中的外部中断退出位设置为0而不是使用发布的中断(假设架构支持两者)?
例如,如果将外部中断退出位设置为0,则现在,如果guest虚拟机正在运行,则发往主机操作系统的中断将传送到guest虚拟机操作系统。如果客人也使用相同的中断向量,将如何处理?发布的中断处理不存在此问题。
设计使用VMX的VMM有许多不同的方法。从您使用术语“主机操作系统”看,您可能正在考虑一种特定的VMM架构。
由于外部中断退出控制在VMCS中,因此VMM可以为每个VM设置不同的控制。如果存在主机操作系统和客户操作系统,则VMM肯定会在VMCS中为guest虚拟机将外部中断退出控件设置为1,但可以在VMCS中将其设置为0以用于主机OS。 (在某些VMM设计中,主机操作系统以VMX根模式或关闭VMX运行,因此不适用;但在某些VMM中,主机操作系统(也称为服务操作系统,根分区或Dom0)运行在VM)。
关于为什么VMM可能会这样做而不是设置过程发布中断控制,这里有几个可能的原因: