你为什么要外部中断退出?

问题描述 投票:0回答:1

对于使用Intel VT-x的VMM,为什么有人想要将VMCS中的外部中断退出位设置为0而不是使用发布的中断(假设架构支持两者)?

例如,如果将外部中断退出位设置为0,则现在,如果guest虚拟机正在运行,则发往主机操作系统的中断将传送到guest虚拟机操作系统。如果客人也使用相同的中断向量,将如何处理?发布的中断处理不存在此问题。

x86 virtual-machine interrupt virtualization hypervisor
1个回答
2
投票

设计使用VMX的VMM有许多不同的方法。从您使用术语“主机操作系统”看,您可能正在考虑一种特定的VMM架构。

由于外部中断退出控制在VMCS中,因此VMM可以为每个VM设置不同的控制。如果存在主机操作系统和客户操作系统,则VMM肯定会在VMCS中为guest虚拟机将外部中断退出控件设置为1,但可以在VMCS中将其设置为0以用于主机OS。 (在某些VMM设计中,主机操作系统以VMX根模式或关闭VMX运行,因此不适用;但在某些VMM中,主机操作系统(也称为服务操作系统,根分区或Dom0)运行在VM)。

关于为什么VMM可能会这样做而不是设置过程发布中断控制,这里有几个可能的原因:

  • VMM是在发布中断之前编写的。
  • VMM旨在用于不支持已发布中断的平台。
  • (可能)直接传递中断所需的处理器时间和功率更少,并且比使用发布的中断更低的延迟。
  • 发布的中断处理旨在处理分配给guest虚拟机vcpu的中断。 guest虚拟机vcpu当前可能不在运行,并且当它正在运行时,它运行的物理CPU可能会有所不同。此外,发布的中断处理支持中断传递可能延迟到vcpu恢复的情况。 如果VMM希望主机中断始终立即传送到中断目标中指示的物理CPU,那么对这些中断使用发布的中断可能没有任何价值。
© www.soinside.com 2019 - 2024. All rights reserved.