● 摘要
由于虚拟化技术在提高资源利用率、简化系统管理复杂度等方面具有独特优势,在服务器等领域得到了日益广泛的应用。计算机I/O资源种类繁多、功能各异,因此如何实现I/O虚拟化成为虚拟化领域研究的难点之一。近年来,虚拟化在学术界和工业界都得到了普遍的关注,现有I/O虚拟化技术的相关研究主要从软件和硬件辅助虚拟化两方面开展。本文利用硬件辅助虚拟化技术在提升I/O性能、安全隔离等方面的优势,针对软件虚拟化技术中存在的较大性能开销等问题,通过借鉴AMD和Intel的硬件辅助虚拟化技术,改进现有的软件虚拟化方法,研究并实现了一种基于硬件辅助虚拟化的计算机I/O虚拟化方法。本文的主要工作和贡献包括: 1.基于Xen虚拟机,通过改进软件模拟的方法,设计并实现了一种硬件辅助的I/O虚拟化模型,以保证上层客户操作系统 (GOS) 对底层直接分配设备的访问;2.针对传统的软件模拟方式无法对真实物理设备进行DMA (直接内存访问) 操作的问题,借助处理器硬件辅助功能重新映射地址空间等方法,设计了一种DMA重映射机制,以实现GOS可以直接访问外设的I/O端口和I/O内存;3.不同于软件通过设备模拟产生伪中断的方式,实现了一种虚拟机监控器的中断虚拟化方法,使GOS可响应并处理真实物理硬件的中断;4.基于上述方法和技术,设计并实现了一个基于硬件辅助虚拟化的I/O虚拟化原型系统,旁路了软件模拟机制,不需要添加其它的驱动,GOS就可以访问PCI设备。测试结果表明,本文提出的方法可实现对网卡设备的直接访问,并缩短网络响应时间。