Dee*_*tel 6 virtualization kernel interrupt virtual-machine interrupt-handling
假设
那怎么运作呢?
现在IO完成,DMA引起中断。此中断将导致调用 VM2 的中断处理程序,这不应该是这种情况
这是不正确的。虽然这取决于所使用的确切管理程序,但几乎没有人会允许这种情况发生。
通常(例如,不包括设备到虚拟机的直接映射等),中断将传递给管理程序,因为管理程序是实际执行读取请求的东西。假设是虚拟设备,当 VM 发起读取请求时,它实际上并不与硬件通信,而是与虚拟机管理程序模拟的假设备通信。管理程序实际管理设备,因此将从设备接收所有中断。当再次调度 VM 时,如果需要进行设备模拟,虚拟机管理程序将向 VM 伪造硬件中断。
现在,在将设备直接映射到 VM 的情况下,VM 将管理设备。但是,管理程序仍然可以阻止其他 VM 从该设备接收中断,因此情况与管理程序类似,即管理程序阻止并且不将中断交付给不应接收它们的 VM。