中断如何在硬件虚拟化中发挥作用?

时间:2015-09-14 20:07:51

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

假设

  1. 虚拟机(VM1)正在运行,它会创建IO请求(文件读取)
  2. 在请求完成之前,VMM将安排另一台虚拟机(VM2)
  3. 现在IO已完成,DMA导致中断。此中断将导致VM2的中断处理程序被调用,而不应该是这种情况
  4. 然后它是如何工作的?

1 个答案:

答案 0 :(得分:3)

  

现在IO已完成,DMA导致中断。这个中断将导致VM2的中断处理程序调用,不应该是这种情况

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

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

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