检测硬件环境是否为虚拟机环境的方法及装置制造方法

文档序号:6504072阅读:200来源:国知局
检测硬件环境是否为虚拟机环境的方法及装置制造方法
【专利摘要】一种检测硬件环境是否为虚拟机环境的方法,包括:获取硬件环境的系统第一时间;向CPU发送执行指令,执行指令用于指示CPU执行特权指令;当检测到特权指令执行完毕时,获取硬件环境的系统第二时间;以及计算系统第一时间和系统第二时间的差值,若差值超过预设值,则判定硬件环境为虚拟机环境。此外,本发明还提供一种检测硬件环境是否为虚拟机环境的装置。上述检测硬件环境是否为虚拟机环境的方法及装置可更有效地检测出硬件环境是否为虚拟机环境。
【专利说明】检测硬件环境是否为虚拟机环境的方法及装置

【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种检测硬件环境是否为虚拟机环境的方法及装置。

【背景技术】
[0002]虚拟化技术的本质是通过软件模拟出具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。随着虚拟化技术的发展,针对X86系列CPU (CentralProcessing Unit,中央处理器)的虚拟化技术已经得到广泛应用,并已逐渐被发展运用到数据存储领域。由于虚拟化技术可以在同一台物理机(physical machine)中虚拟出多个系统,从而提高物理机的使用效率,因此有些不良的服务器供应商为降低成本就会在一台物理机上虚拟出多个虚拟机(virtual machine),然后冒充多个物理机租用给多个客户。但在同一台物理机上同时运行多个虚拟机,由于每个虚拟机都需要占用物理机的资源,这样就会导致物理机整体性能的下降,进而影响物理机上每个虚拟机的性能,使得租客们的利益受损。然而租客们由于技术限制,很难判断出自己租用的到底是真实的物理机器,还是虚拟化之后的虚拟机。
[0003]现有技术中一般可通过查看设备信息中是否包含特定的字样(比如:VMwareVirtual ),来判断硬件环境是否为虚拟机环境,但设备信息是可修改的,上述方法无法检测出设备信息未被修改的虚拟机。因此如何有效检测出硬件环境是否为虚拟机环境是当前的一大难题。


【发明内容】

[0004]有鉴于此,本发明提供一种检测硬件环境是否为虚拟机环境的方法及装置,可更有效地检测出硬件环境是否为虚拟机环境。
[0005]一种检测硬件环境是否为虚拟机环境的方法,包括:获取所述硬件环境的系统第一时间;向CPU发送执行指令,所述执行指令用于指示所述CPU执行特权指令;当检测到所述特权指令执行完毕时,获取所述硬件环境的系统第二时间;以及计算所述系统第一时间和所述系统第二时间的差值,若所述差值超过预设值,则判定所述硬件环境为虚拟机环境。
[0006]一种检测硬件环境是否为虚拟机环境的装置,包括:系统第一时间获取模块,用于获取所述硬件环境的系统第一时间;执行指令发送模块,用于向CPU发送执行指令,所述执行指令用于指示所述CPU执行特权指令;系统第二时间获取模块,用于当检测到所述特权指令执行完毕时,获取所述硬件环境的系统第二时间;以及第一判定模块,用于计算所述系统第一时间和所述系统第二时间的差值,若所述差值超过预设值,则判定所述硬件环境为虚拟机环境。
[0007]本发明实施例提供的检测硬件环境是否为虚拟机环境的方法及装置,通过计算在测试设备中执行特权指令的前后时间的差值,然后将计算出的差值与物理机处理该特权指令所需时钟周期进行比较,可有效检测出硬件环境是否为虚拟机环境。
[0008]为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。

【专利附图】

【附图说明】
[0009]图1为本发明第一实施例提供的检测硬件环境是否为虚拟机环境的方法的流程图。
[0010]图2为本发明第二实施例提供的检测硬件环境是否为虚拟机环境的方法的流程图。
[0011]图3为本发明第三实施例提供的检测硬件环境是否为虚拟机环境的装置的结构示意图。
[0012]图4为本发明第四实施例提供的检测硬件环境是否为虚拟机环境的装置的结构示意图。

【具体实施方式】
[0013]为更进一步阐述本发明为实现预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明的【具体实施方式】、结构、特征及其功效,详细说明如后。
[0014]本发明实施例所提供的检测硬件环境是否为虚拟机环境的方法可应用于计算机等测试设备中实现对计算机硬件环境是否为虚拟机环境的检测。
[0015]第一实施例
[0016]图1为本发明第一实施例提供的检测硬件环境是否为虚拟机环境的方法的流程图。如图1所示,本实施例的检测硬件环境是否为虚拟机环境的方法包括以下步骤:
[0017]步骤SI I,获取所述硬件环境的系统第一时间。
[0018]系统指的是所述硬件环境运行的操作系统。所述获取的硬件环境的系统第一时间的最小时间单位可以为微秒(microsecond, μ S)。
[0019]步骤S12,向CPU发送执行指令,所述执行指令用于指示所述CPU执行特权指令。
[0020]在多道程序设计环境中,为了保证系统安全,将计算机的指令系统分为特权指令和非特权指令两部分。特权指令是指CPU特权级才能执行的指令,例如:1/0指令、设置时钟指令,控制中断屏蔽的某些指令,清内存指令,建立存储保护指令等。
[0021]步骤S13,当检测到所述特权指令执行完毕时,获取所述硬件环境的系统第二时间。
[0022]可以理解的,所述获取的硬件环境的系统第二时间的最小时间单位为μ S。
[0023]步骤S14,计算所述系统第一时间和所述系统第二时间的差值,若所述差值超过预设值,则判定所述硬件环境为虚拟机环境。
[0024]特权指令是对真实的物理设备的操作,而虚拟机运行的是模拟的硬件设备,因此根据规定,某些特权指令必须被物理机拦截,也即必须通过转换系统控制权的方式,将对模拟硬件设备的操作转换为对真实物理设备的操作。对特权指令的拦截,意味着CPU必须退出虚拟化的虚拟机环境,转而在真实的物理机环境下,由真实的物理机处理特权指令,处理完毕后再进入虚拟化的虚拟机环境。因此,虚拟机环境下,CPU执行特权指令的时钟周期要远远大于物理机环境下处理相同特权指令的时钟周期。
[0025]基于上述原理,在物理机环境下处理相同特权指令的时钟周期的基础上预设步骤S14中的所述预设值,如果系统第一时间和系统第二时间的差值,也即CPU执行特权指令的时钟周期大于预设值,则可判断测试设备的硬件环境为虚拟机环境。
[0026]考虑到由于测试设备性能导致的执行时间误差,预设值至少为物理机环境下处理I/o指令所需时钟周期的十倍,优选地,可为物理机环境下处理I/O指令所需时钟周期的十倍。物理机环境下处理各种CPU特权指令所需的时钟周期为常规参数,可通过查询CPU规格设备手册获得,在此不再赘述。
[0027]本发明实施例提供的检测硬件环境是否为虚拟机环境的方法,通过计算在测试设备中执行特权指令的前后时间的差值,然后将计算出的差值与物理机处理该特权指令所需时钟周期进行比较,可有效检测出硬件环境是否为虚拟机环境。
[0028]第二实施例
[0029]图2为本发明第二实施例提供的检测硬件环境是否为虚拟机环境的方法的流程图。如图3所示,本实施例的检测硬件环境是否为虚拟机环境的方法包括以下步骤:
[0030]步骤S21,获取所述硬件环境的系统第一时间。
[0031]此步骤可以参考第一实施例中的相应步骤,这里不再赘述。
[0032]步骤S22,向CPU发送执行指令,指示所述CPU执行I/O指令。
[0033]I/O指令也即输入/输出指令,在X86指令系统中具体可包括IN/0UT两种指令。IN指令的功能是从I/O端口输入(读)数据到微处理器的寄存器中,OUT指令的功能是将微处理器的寄存器中的数据输出(写)到I/O端口中。
[0034]于本实施例中,例如,测试设备向CPU指令发送执行指令,指示CPU从预设I/O端口输入数据到微处理器的寄存器中。
[0035]优选地,于本实施例其他【具体实施方式】中,也可指示CPU执行其他特权指令,例如=CPUID指令、或INVD指令、或MOV from CR3指令。其中,CPUID指令用于获取待测设备的CPU的信息,例如:CPU类型,型号,制造商信息,商标信息,序列号,缓存。INVD指令用于使芯片上的高速缓存无效,即:清洗芯片上的超高速缓存。MOV from CR3指令用于在CR3寄存器中加载新值。
[0036]步骤S23,当检测到所述特权指令执行完毕时,获取所述硬件环境的系统第二时间。
[0037]步骤S24,计算所述系统第一时间和所述系统第二时间的差值。
[0038]步骤S25,判断所述差值是否超过预设值。
[0039]步骤S23至步骤S25可以参考第一实施例中的相应步骤,这里不再赘述。
[0040]若是,则执行步骤S26:判定所述硬件环境为虚拟机环境,然后执行步骤S28:输出判定结果,将所述判定结果显示给用户。
[0041]若否,则执行步骤S27:判定所述硬件环境为物理机环境。
[0042]步骤S28:输出判定结果,将所述判定结果显示给用户。
[0043]本发明实施例提供的检测硬件环境是否为虚拟机环境的方法,通过计算在测试设备中执行特权指令的前后时间的差值,然后将计算出的差值与物理机处理该特权指令所需时钟周期进行比较,可有效检测出硬件环境是否为虚拟机环境。
[0044]第三实施例
[0045]图3为本发明第三实施例提供的检测硬件环境是否为虚拟机环境的装置的结构示意图。本实施例提供的检测硬件环境是否为虚拟机环境的装置可以用于实现第一实施例中的检测硬件环境是否为虚拟机环境的方法。如图3所示,检测硬件环境是否为虚拟机环境的装置10包括:系统第一时间获取模块11、执行指令发送模块12、系统第二时间获取模块13、第一判定模块14。
[0046]其中,系统第一时间获取模块11用于获取所述硬件环境的系统第一时间;
[0047]执行指令发送模块12用于向CPU发送执行指令,所述执行指令用于指示所述CPU执7TT特权指令;
[0048]系统第二时间获取模块13用于当检测到所述特权指令执行完毕时,获取所述硬件环境的系统第二时间;以及
[0049]第一判定模块14用于计算所述系统第一时间和所述系统第二时间的差值,若所述差值超过预设值,则判定所述硬件环境为虚拟机环境。
[0050]优选地,所述特权指令至少包括:1/0指令、CPUID指令、INVD指令、或MOV fromCR3指令。
[0051]优选地,所述预设值至少为物理机处理所述特权指令所需时钟周期的十倍。
[0052]本实施例检测硬件环境是否为虚拟机环境的装置10的各功能模块实现各自功能的具体过程,请参见上述图1至图2所示实施例中描述的具体内容,此处不再赘述。
[0053]本发明实施例提供的检测硬件环境是否为虚拟机环境的装置,通过计算在测试设备中执行特权指令的前后时间的差值,然后将计算出的差值与物理机处理该特权指令所需时钟周期进行比较,可有效检测出硬件环境是否为虚拟机环境。
[0054]第四实施例
[0055]图4为第四实施例提供的检测硬件环境是否为虚拟机环境的装置的结构示意图。本实施例提供的检测硬件环境是否为虚拟机环境的装置可以用于实现第二实施例中的检测硬件环境是否为虚拟机环境的方法。如图4所示,移动终端铃音调整装置20包括:系统第一时间获取模块21、执行指令发送模块22、系统第二时间获取模块23、第一判定模块24、第二判定模块25、显示模块26。
[0056]其中,系统第一时间获取模块21用于获取所述硬件环境的系统第一时间。
[0057]执行指令发送模块22用于向CPU发送执行指令,所述执行指令用于指示所述CPU执7TT特权指令。
[0058]系统第二时间获取模块23用于当检测到所述特权指令执行完毕时,获取所述硬件环境的系统第二时间。
[0059]第一判定模块24用于计算所述系统第一时间和所述系统第二时间的差值,若所述差值超过预设值,则判定所述硬件环境为虚拟机环境。
[0060]第二判定模块25用于若所述差值未超过预设值,则判定所述硬件环境为物理机环境。
[0061]显示模块26用于输出判定结果,将所述判定结果显示给用户。
[0062]优选地,所述特权指令至少包括:1/0指令、CPUID指令、INVD指令、或MOV fromCR3指令。
[0063]优选地,所述预设值至少为物理机处理所述特权指令所需时钟周期的十倍。
[0064]本实施例检测硬件环境是否为虚拟机环境的装置20的各功能模块实现各自功能的具体过程,请参见上述图1至图2所示实施例中描述的具体内容,此处不再赘述。
[0065]本发明实施例提供的检测硬件环境是否为虚拟机环境的装置,通过计算在测试设备中执行特权指令的前后时间的差值,然后将计算出的差值与物理机处理该特权指令所需时钟周期进行比较,可有效检测出硬件环境是否为虚拟机环境。
[0066]需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0067]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0068]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0069]以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
【权利要求】
1.一种检测硬件环境是否为虚拟机环境的方法,其特征在于,包括: 获取所述硬件环境的系统第一时间; 向CPU发送执行指令,所述执行指令用于指示所述CPU执行特权指令; 当检测到所述特权指令执行完毕时,获取所述硬件环境的系统第二时间;以及 计算所述系统第一时间和所述系统第二时间的差值,若所述差值超过预设值,则判定所述硬件环境为虚拟机环境。
2.根据权利要求1所述的方法,其特征在于,还包括: 若所述差值未超过预设值,则判定所述硬件环境为物理机环境。
3.根据权利要求2所述的方法,其特征在于,还包括: 输出判定结果,将所述判定结果显示给用户。
4.根据权利要求1所述的方法,其特征在于,所述特权指令至少包括:1/0指令、CPWD指令、INVD指令、或MOV from CR3指令。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述预设值至少为物理机处理所述特权指令所需时钟周期的十倍。
6.一种检测硬件环境是否为虚拟机环境的装置,其特征在于,包括: 系统第一时间获取模块,用于获取所述硬件环境的系统第一时间; 执行指令发送模块,用于向CPU发送执行指令,所述执行指令用于指示所述CPU执行特权指令; 系统第二时间获取模块,用于当检测到所述特权指令执行完毕时,获取所述硬件环境的系统第二时间;以及 第一判定模块,用于计算所述系统第一时间和所述系统第二时间的差值,若所述差值超过预设值,则判定所述硬件环境为虚拟机环境。
7.根据权利要求6所述的装置,其特征在于,还包括: 第二判定模块,用于若所述差值未超过预设值,则判定所述硬件环境为物理机环境。
8.根据权利要求7所述的装置,其特征在于,还包括: 显示模块,用于输出判定结果,将所述判定结果显示给用户。
9.根据权利要求6所述的装置,其特征在于,所述特权指令至少包括:1/0指令、CPWD指令、INVD指令、或MOV from CR3指令。
10.根据权利要求6至9中任一项所述的装置,其特征在于,所述预设值至少为物理机处理所述特权指令所需时钟周期的十倍。
【文档编号】G06F9/44GK104239003SQ201310227592
【公开日】2014年12月24日 申请日期:2013年6月8日 优先权日:2013年6月8日
【发明者】高剑林 申请人:深圳市腾讯计算机系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1