I/O设备的工作原理
- 虚拟中断
- 虚拟寄存器访问
- 虚拟DMA
I/O虚拟化的实现方式
软件模拟
Hypervisor通过捕获访问,然后解码并进行模拟。这种方式的效率很低,并且仅出现在早期的虚拟化中。
半虚拟化(PV)
重新定义I/O架构,例如Xen引入split diver,通过共享内存交换数据,摒弃了寄存器和DMA的操作方式,因此效率很高,唯一的不足是软件复杂度较高。采用PV虚拟化的I/O解决方案大量出现于商业级虚拟化软件中,例如Xen和KVM。
设备直通(VT-d+SRIOV)
CPU厂商通过在北桥芯片中加入VT-d技术,解决中断及DMA的remapping(重映射)问题,联合I/O设备对SRIOV技术的支持,解决物理设备独占访问的问题,最终使得I/O虚拟化的大部分工作由硬件完成,提高了效率并且降低了软件复杂度。