I/O虚拟化解决方案主要有三种:仿真设备模型、直接分配设备模型、虚拟设备模型。
①仿真设备模型。用软件模拟真实硬件的所有行为。仿真设备通过软件方法模拟操作系统能够识别的物理设备,通常也是现实世界中存在的设备,如硬盘、以太网卡等。因此,可直接使用客户机操作系统及基本输入输出系统(BIOS)对该设备的驱动程序。
②虚拟设备模型。又称I/O半虚拟化模型。该模型将设备的驱动分为三个部分:前端驱动(front-end driver)、后端驱动(back-end driver)、原生驱动(native driver)。前端驱动运行在客户机操作系统内,需要修改操作系统内核源码来实现,后端驱动和原生驱动运行在VMM中或一个特权客户域中。前端驱动负责将客户机操作系统的I/O请求传递给后端驱动,后端驱动解析收到的I/O请求并映射到实际的物理设备,最后交给原生驱动来控制真实的硬件完成I/O请求,完成请求后,后端驱动通知前端驱动数据已准备就绪,前端驱动向客户机操作系统报告I/O操作完成。
③直接分配设备模型。该模型直接分配物理I/O设备给虚拟机,虚拟机内部驱动程序和硬件设备直接通信,只需要经过少量,甚至不经过VMM的管理,但该模型需要硬件虚拟化支持,以隔离和保护硬件资源。