【问题标题】:How do interrupts work in hardware virtualization?中断在硬件虚拟化中是如何工作的?
【发布时间】:2023-04-10 01:18:01
【问题描述】:

假设

  1. 虚拟机 (VM1) 正在运行并创建 IO 请求(文件读取)
  2. 在请求完成之前,另一个虚拟机 (VM2) 由 VMM 调度
  3. 现在 IO 已完成,DMA 导致中断。此中断将导致调用 VM2 的中断处理程序,这不应该是这种情况

那么它是如何工作的呢?

【问题讨论】:

    标签: kernel virtual-machine interrupt virtualization interrupt-handling


    【解决方案1】:

    现在 IO 已完成,DMA 导致中断。这个中断会导致VM2的中断处理程序被调用,这不应该是这样

    这是不正确的。虽然这取决于所使用的确切管理程序,但几乎没有人会允许这种情况发生。

    通常(例如,不包括设备到 VM 的直接映射之类的东西),中断将被传递给管理程序,因为管理程序是实际执行读取请求的东西。假设是一个虚拟设备,当虚拟机发起一个读取请求时,它实际上并不与硬件对话,而是与虚拟机管理程序模拟的假设备对话。实际管理设备并因此将接收来自设备的所有中断的管理程序。当再次调度 VM 时,虚拟机管理程序将在必要时为设备模拟假装到 VM 的硬件中断。

    现在,在将设备直接映射到 VM 的情况下,VM 是管理设备的对象。尽管管理程序仍然可以阻止其他虚拟机接收来自该设备的中断,因此在管理程序阻止并且不将中断传递给不应接收它们的虚拟机的意义上,情况类似。

    【讨论】:

    • 当中断出现时,VM2 将在处理器中运行其代码。管理程序如何知道中断?管理程序是否将处理程序地址更改为自己的处理程序?
    • 一种可能的方式是中断会导致VM退出。管理程序不会更改来宾,它只是对硬件虚拟化扩展进行编程以强制 VM 退出。如有必要,管理程序稍后可以使用硬件虚拟化扩展来模拟来宾的中断。
    猜你喜欢
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2012-11-05
    • 1970-01-01
    • 2012-01-02
    • 2014-08-01
    相关资源
    最近更新 更多