认为

  • 虚拟机(VM1)正在运行,并创建IO请求(读取文件)
  • 在请求完成之前,VMM安排了另一个虚拟机(VM2)
  • 现在,IO已完成,并且DMA导致了中断。此中断将导致调用VM2的中断处理程序,而
  • 则不应该这样

    那怎么运作的呢?

    最佳答案



    这是不正确的。尽管这取决于所使用的确切虚拟机管理程序,但几乎没有任何一种会允许这种情况发生。

    通常(例如,排除诸如设备到VM的直接映射之类的事情),中断将被传递给管理程序,因为管理程序实际上是执行读取请求的事物。假设是虚拟设备,当VM启动读取请求时,它实际上并不与硬件对话,而是与系统管理程序模拟的伪造设备对话。实际管理设备的虚拟机监控程序将因此从设备接收所有中断。再次调度虚拟机时,如果需要虚拟机,则虚拟机管理程序会为虚拟机伪造硬件中断,以进行设备仿真。

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

    10-08 02:20