[发明专利]X86计算机虚拟化的物理中断处理方法无效
申请号: | 200910043829.9 | 申请日: | 2009-07-03 |
公开(公告)号: | CN101620547A | 公开(公告)日: | 2010-01-06 |
发明(设计)人: | 易晓东;刘晓建;张卫华;谭郁松;戴华东;吴庆波;孔金珠 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F9/455 | 分类号: | G06F9/455;G06F13/24 |
代理公司: | 国防科技大学专利服务中心 | 代理人: | 郭 敏 |
地址: | 410073湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种X86计算机虚拟化的物理中断处理方法,目的是解决同时运行多个虚拟化操作系统的X86计算机中物理中断处理方法实现复杂、代码庞大和中断处理开销大等问题。技术方案是首先构建虚拟机系统,主要是修改物理中断处理模块,然后由由虚拟机系统对物理中断进行处理,包括构建接收和处理NMI所需要的软件环境,初始化IPI发送与接收所需的软件环境、对LAPIC进行基本初始化,分别对dom0操作系统、domU操作系统和虚拟机监控器进行配置,监测和处理dom0操作系统对LAPIC的初始化、设备中断、NMI、IPI这五个步骤。采用本发明能简化中断处理逻辑、缩减虚拟机监控器的代码量,减小中断处理的开销,增强整个计算机系统的稳定性,具有优秀的硬件适配性。 | ||
搜索关键词: | x86 计算机 虚拟 物理 中断 处理 方法 | ||
【主权项】:
1.一种X86计算机虚拟化的物理中断处理方法,首先构建虚拟机系统,虚拟机系统由三部分组成:最底层是X86计算机硬件与中断;中间层是虚拟机监控器;最上层是同时运行的多个虚拟化操作系统,包括一个domO操作系统,一个或多个domU操作系统,虚拟机监控器由物理中断处理模块和虚拟中断处理模块、CPU指令虚拟化模块、MMU虚拟化模块组成;其特征在于所述物理中断处理模块由LAPIC初始化子模块、CPU虚拟化模式配置子模块、domO LAPIC初始化监视子模块、domO设备中断接收辅助子模块、IPI发送与接收子模块、NMI接收和处理子模块这六个子模块组成;CPU运行模式配置子模块配置CPU的运行模式并接收从CPU发来的设备中断信息,再调用domO设备中断接收辅助子模块,在domO设备中断接收辅助子模块的控制下,设备中断直接传递给domO操作系统;所有的NMI都传递给NMI接收和处理子模块,该子模块接收NMI后进行判断,如果NMI是IPI消息导致的,则将该NMI传送给IPI发送与接收子模块,否则将NMI转发至domO操作系统;LAPIC初始化子模块在X86计算机系统加电引导时对LAPIC进行部分初始化,在domO LAPIC初始化监视子模块的监控下,domO操作系统直接访问经初始化的LAPIC,当CPU指令虚拟化模块检测到domO对LAPIC重新初始化时,CPU指令虚拟化模块通知domOLAPIC初始化监视子模块,由domO LAPIC初始化监视子模块调用LAPIC初始化子模块对LAPIC进行重配置;IPI发送与接收子模块直接访问LAPIC进行IPI消息的发送与接收;构建好虚拟机系统后,由虚拟机系统对物理中断进行处理,方法是:第一步,NMI接收和处理子模块构建接收和处理NMI所需要的软件环境:构建NMI中断的中断处理函数,将该中断处理函数的地址放入IDT表的第2项中;第二步,IPI发送与接收子模块按如下方法初始化IPI发送与接收所需的软件环境:2.1选用不可屏蔽中断NMI的中断号2作为IPI的中断号;2.2为每个CPU都设置一个先进先出的队列结构作为IPI消息队列,同时为每个IPI消息队列设置一个消息队列锁;第三步,LAPIC初始化子模块对本地高级可编程中断控制器LAPIC进行基本初始化,方法如下:3.1探测X86系统中是否配备了LAPIC,如果系统中不存在LAPIC,则转第四步,否则执行3.2;3.2映射LAPIC的寄存器,为每个CPU的LAPIC的所有寄存器的物理地址区间映射相应的虚拟地址;3.3启用LAPIC,即向LAPIC的寄存器中写入数据;第四步,CPU运行模式配置子模块按如下方法分别配置domO操作系统、domU操作系统和虚拟机监控器的运行模式:4.1对domO操作系统,按如下方法配置CPU的运行模式:●配置domO操作系统的运行模式为CPU的虚拟化模式;●配置domO操作系统的中断触发模式为直接触发和处理模式,即当domO操作系统运行时,到达的物理中断不通知物理中断处理模块,而直接在domO操作系统中被触发和处理;●当domO操作系统运行时,打开CPU的中断允许标志;4.2对domU操作系统,按如下方法配置CPU的运行模式:●配置domU操作系统的运行模式为CPU的虚拟化模式;●配置domU操作系统的中断触发模式为退出运行并通知中断处理模块这种模式,即当domU操作系统运行时,到达的物理中断将中断domU操作系统的运行,并马上通知物理中断处理模块;●当这些操作系统运行时,打开CPU的中断允许标志;4.3对虚拟机监控器,按如下方法配置CPU的运行模式:●配置虚拟机监控器的运行模式为CPU的普通模式;●在虚拟机监控器运行期间,始终关闭CPU的中断允许标志;第五步,当domO LAPIC初始化监视子模块监测到domO操作系统对LAPIC进行初始化操作时,转5.1;当domO设备中断接收辅助子模块监测到设备中断到达时,转5.2;当NMI接收和处理子模块监测到不可屏蔽中断NMI到达时,转5.3;当IPI发送与接收子模块检测到虚拟机的其它模块或上层操作系统请求发送和接收处理器间中断IPI时,转5.4:5.1 CPU指令虚拟化模块截获domO操作系统读写MSR的指令rdmsr/wrmsr,并将结果交给domO LAPIC初始化监视子模块,domO LAPIC初始化监视子模块判断domO操作系统是否访问编号为0x1B的MSR,如果是则判断LAPIC寄存器的内存映射地址是否被改变,如果改变则将新地址记录下来,并按3.2所示的方法重新映射LAPIC的寄存器;如果不改变则转第五步,进入下一次循环;5.2domO设备中断接收辅助子模块分下列三种情况辅助domO操作系统接收设备中断:●当设备中断到达时,如果CPU正在运行domU操作系统,则CPU中断domU操作系统的运行,并将设备中断到达情况通知domO设备中断接收辅助子模块,domO设备中断接收辅助子模块马上请求虚拟机监控器转入运行domO操作系统,等到domO操作系统开始运行时,设备中断将立即被触发并被domO操作系统接收;●当设备中断到达时,如果CPU正在运行domO操作系统,设备中断直接在domO操作系统中被触发;●当设备中断到达时,如果CPU正在运行虚拟机监控器自身,到达的设备中断不会被触发;上述处理完毕后,转第五步进入下一次循环;5.3 NMI接收和处理子模块接收和处理不可屏蔽中断NMI,方法是判断IPI发送与接收子模块是否正在发送IPI消息,如果正在发送IPI消息,则由IPI发送与接收子模块接收和处理IPI消息;否则,将NMI转发到domO操作系统,domO操作系统异步处理该NMI;上述两种情况处理完成后,都转第五步进入下一次循环;5.4如果IPI发送与接收子模块被请求发送IPI,转5.4.1;如果NMI接收和处理子模块接收到NMI后调用IPI发送与接收子模块,转5.4.2:5.4.1按下述方法向一个或多个目标CPU发送一个IPI消息:5.4.1.1获得目标CPU的消息队列锁,把IPI消息加入到该IPI消息的目标CPU的IPI消息队列中,再释放目标CPU的消息队列锁;5.4.1.2通过访问LAPIC的寄存器,向SMP系统中的其它全部CPU发送该IPI消息,发送参数中设置的IPI中断号为NMI的中断号2;5.4.1.3转第五步进入下一次循环;5.4.2按下述方法接收和处理IPI消息:5.4.2.1先获得本CPU的消息队列锁,再判断消息队列是否为空,如果为空则释放本CPU的消息队列锁,转5.4.2.3;如果消息队列不为空,执行5.4.2.2;5.4.2.2从本CPU的IPI消息队列中取出一个IPI消息,释放本CPU的消息队列锁,调用IPI消息中包含的IPI接收和处理函数实现IPI通信,转5.4.2.1。5.4.2.3转第五步进入下一次循环。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200910043829.9/,转载请声明来源钻瓜专利网。