[发明专利]一种基于硬件辅助的虚拟化指令模拟错误检测方法及系统在审
申请号: | 202111597207.8 | 申请日: | 2021-12-24 |
公开(公告)号: | CN116339904A | 公开(公告)日: | 2023-06-27 |
发明(设计)人: | 杨轶;苏璞睿;黄桦烽 | 申请(专利权)人: | 中国科学院软件研究所 |
主分类号: | G06F9/455 | 分类号: | G06F9/455 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 司立彬 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 硬件 辅助 虚拟 指令 模拟 错误 检测 方法 系统 | ||
1.一种基于硬件辅助的虚拟化指令模拟错误检测方法,其步骤包括:
选择两台配置相同的主机,在第一主机上安装Qemu系统构建Qemu虚拟机,在第二主机上安装KVM系统构建KVM虚拟机;其中,Qemu系统、KVM系统中均安装相同的操作系统和软件;
在Qemu虚拟机运行时,定时保存Qemu虚拟机运行快照;
当Qemu虚拟机内部的程序发生异常时,根据保存的快照信息将Qemu虚拟机和KVM虚拟机同时恢复到最近一次快照位置;
以基本块为单位,在Qemu虚拟机和KVM虚拟机中同步执行程序,每次基本块执行之前,Qemu虚拟机创建快照,监测运行的指令基本块,并检测错误发生的位置;
根据检测错误发生的位置确定出现错误的基本块BasicBlockError,然后以Qemu虚拟机最近一次的基本块快照为起点,同时启动Qemu虚拟机和KVM虚拟机,以指令为单位在Qemu虚拟机、KVM虚拟机同步运行,检测基本块BasicBlockError中错误发生的指令位置。
2.根据权利要求1所述的方法,其特征在于,所述KVM虚拟机采用基于Intel CPU特权指令并对MSR寄存器进行修改,设定硬件CPU的EIP、CS的方式,使所述KVM虚拟机能够加载Qemu产生的镜像;对所述KVM虚拟机的状态恢复函数进行修改,通过读写VMCS寄存器,同时写入显存信息,使得KVM虚拟机能够基于Qemu的快照进行运行状态恢复。
3.根据权利要求1所述的方法,其特征在于,所述检测错误发生的位置的方法为:以最近一次保存的Qemu虚拟机快照为起点,Qemu虚拟机和KVM虚拟机同时加载启动,在每个基本块的开头抓取系统快照,并在基本块执行的开头和结尾,对比KVM虚拟机和Qemu虚拟机的CPU在基本块执行期间修改的寄存器和内存内容是否一致,如果不一致,则判定Qemu虚拟机的指令模拟存在错误并确定错误发生的位置。
4.根据权利要求1或2或3所述的方法,其特征在于,Qemu虚拟机运行快照包括Qemu虚拟机的寄存器信息、中断信息、异常信息和内存状态信息。
5.根据权利要求1或2或3所述的方法,其特征在于,所述当Qemu虚拟机内部的程序发生异常时,是指Qemu虚拟机运行的程序崩溃或系统蓝屏。
6.根据权利要求1或2或3所述的方法,其特征在于,所述检测错误发生的指令位置的方法为:Qemu虚拟机和KVM虚拟机加载运行基本块BasicBlockError,对比执行每一条指令的CPU寄存器和内存变化;如果相同指令在Qemu虚拟机和KVM虚拟机上执行之后,得到的寄存器和内存变化不同,则认为定位到了模拟错误的指令位置,提取指令EIP、指令反汇编和错误对比数据上报。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111597207.8/1.html,转载请声明来源钻瓜专利网。