QEMU模拟I/O设备的基本原理
当客户机的设备驱动程序(Device Driver)发起I/O请求时,KVM模块中的I/O操作捕获代码会拦截这次I/O请求,然后经过处理后将本次I/O请求的信息存放到I/O共享页(sharing page),并通知用户控件的QEMU程序。QEMU模拟程序获得I/O操作的具体信息后,交给硬件模拟代码(Emulation Code)来模拟出本次的I/O操作,完成后把结果放回I/O共享页中,并通知KVM模块中的I/O操作捕获代码。最后由KVM模块中的捕获代码读取I/O共享页中的操作结果,把结果返回给客户机中。当然,这个操作过程中客户机作为一个QEMU进程在等待I/O时也可能被阻塞。
原文:https://www.cnblogs.com/holidays/p/vhost.html