发明名称 一种分布式虚拟机监控器的I/O资源调度方法
摘要 本发明涉及一种分布式虚拟机监控器的I/O资源调度模型,该模型的实施分四个步骤:步骤一:探测物理资源阶段;步骤二:建立全局虚拟I/O位图;步骤三:处理I/O指令;步骤四:中断虚拟化。本发明提出的模型,实现了分布式虚拟机监控器在单一系统映像下对设备的直接访问,提供了完整的I/O资源调度方案,提高了I/O资源利用效率,具有良好的使用价值和广阔的发展前景。
申请公布号 CN101751284A 申请公布日期 2010.06.23
申请号 CN200910243088.9 申请日期 2009.12.25
申请人 北京航空航天大学 发明人 肖利民;李卓;姜兆龙;陈思名
分类号 G06F9/455(2006.01)I;G06F9/50(2006.01)I 主分类号 G06F9/455(2006.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 一种分布式虚拟机监控器的I/O资源调度方法,具体实施步骤如下:步骤一、探测物理资源阶段:1).DVMM原型系统启动,从各节点基本输入输出系统加电自检开始,到节点间数据包准备传输为止;2)建立通信基础设施,建立协议栈,为分布于不同物理机器上的VMM提供通信服务,为实现DVMM的跨物理机I/O访问、跨物理机中断处理等功能提供通信支持;3)读取BIOS构建的资源信息表,预留部分资源,主要是内存资源,用于存储各类控制信息,读取ACPI表,解析DMAR和DHRD结构,设置各节点DSS,完成VT-d硬件环境初始化;4).将本结点可供操作系统使用的资源信息告知其他结点,收集其他结点的资源信息;5).收集到全局资源信息后,整合各类资源,构建相关的虚拟资源信息表,准备构建全局I/O位图,通过软件模拟设备或借助硬件辅助的重映射结构来处理I/O虚拟化;6)通信模块设置完毕报告,DVMM初始化设置完毕;7).加载OS引导模块,开始启动客户操作系统;8).截获OS发出的BIOS中断调用;9).将BIOS中断调用的信息传递给资源探测模块,模拟BIOS中断服务,从资源信息表中读取虚拟资源信息;10).将虚拟硬件配置信息报告给GOS;步骤二、建立全局虚拟I/O位图:DVMM中建立全局虚拟的I/O位图,为上层GOS提高单一的物理地址空间;1)分配I/O位图:对于全局的I/O资源,采用两种分配方案,静态分配和动态分配,静态分配指DVMM启动后,GOS启动前,为GOS分配I/O资源,包括软件模拟的设备资源和硬件直接访问的硬件资源;动态分配指GOS启动以后,由用户态程序指定需要直接访问的I/O资源,与前者的不同点在于内核是以模块方式加载的,需要维护一个引起特权级变换的注入全局虚拟I/O位图的超级调研;2)二次仲裁机制:I/O内存所指向的地址在完成客户物理到机器地址转换时,需要构建全局的P2M表,保证内存寻址的安全性;节点机本地进行客户物理到机器地址转换时,需要构建单机P2M表来确保VT-d硬件可以安全进行DMA重映射和中断重映射;步骤三、处理I/O指令1)当客户操作系统在从节点引起虚拟机退出后,I/O虚拟化模块将此I/O指令分成三类分别进行处理:a、非访存类I/O指令:即输入,输出这两种访问I/O端口的指令,它们在执行过程中不访问系统内存;b、访存类I/O指令:即INS,OUTS这两种字符串IO指令,以及访问内存映射IO区域的指令,它们在执行过程中访问系统内存;c、直接内存访问指令;DMA控制指令是字符串IO指令,DMA执行时存在大量访存操作;2)截获I/O指令,查询I/O端口映射表,判定I/O地址落在本地或者是远程节点;3)指令执行:端口映射后,判断指令执行位置,若在本地,借助VT-d技术,通过单机P2M表进行地址重映射,或者交给QEMU软件模拟执行;若在远程,打包在IOREQ结构中,发送出去,远程节点通过通信模块接收IOREQ;4)结果返回:由软件执行后的指令,或硬件物理设备状态变化产生的I/O地址变化,需要通知给GOS;DVMM中端口更新模块实施这一功能;步骤四、中断虚拟化:1)DVMM底层物理设备发生中断,发给物理I/OAPIC,转化为中断向量发给localAPIC;2)localAPIC将中断注入到CPU中;3)CPU跳转到中断描述符表表所指的处理函数,LocalAPIC的中断服务寄存器置位,屏蔽中断;4)执行VMM的中断处理函数,判断是否为直接分配给客户机的物理设备产生的中断,置物理I/OAPIC的重定向表条目屏蔽位,向物理localAPIC写中断结束寄存器,清除ISR屏蔽;5)虚拟I/O APIC接收中断,调用虚拟local APIC接口函数,屏蔽中断;6)判断是否把中断注入到远程CPU中去,发处理器间中断,这个操作产生缺页,被DVMM捕获,解析操作数后,定位其访问的寄存器,如果是处理器间中断寄存器,则模拟DVMM中的IPI操作;如果是对LDR或者DFR寄存器的写操作,则在进行本地更新模拟后,调用数据包的发送更新函数发送逻辑目的寄存器或者目的格式寄存器更新信息到所有其他服务器;7)远程节点通过虚拟机控制结构,虚拟local APIC将中断注入到GOS,GOS执行中断处理函数;8)GOS向虚拟local写入EOI,DVMM截获此操作,清除虚拟local APIC中断屏蔽,通知GOS完成处理,DVMM清除物理I/O APIC RTE中断屏蔽位。
地址 100191 北京市海淀区学院路37号北京航空航天大学计算机科学与工程学院