一种检测硬件环境是否为虚拟机环境的方法,包括:获取硬件环境的系统第一时间;向CPU发送执行指令,执行指令用于指示CPU执行特权指令;当检测到特权指令执行完毕时,获取硬件环境的系统第二时间;以及计算系统第一时间和系统第二时间的差值,若差值超过预设值,则判定硬件环境为虚拟机环境。此外,本发明专利技术还提供一种检测硬件环境是否为虚拟机环境的装置。上述检测硬件环境是否为虚拟机环境的方法及装置可更有效地检测出硬件环境是否为虚拟机环境。
【技术实现步骤摘要】
检测硬件环境是否为虚拟机环境的方法及装置
本专利技术涉及计算机
,尤其涉及一种检测硬件环境是否为虚拟机环境的方法及装置。
技术介绍
虚拟化技术的本质是通过软件模拟出具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。随着虚拟化技术的发展,针对X86系列CPU (CentralProcessing Unit,中央处理器)的虚拟化技术已经得到广泛应用,并已逐渐被发展运用到数据存储领域。由于虚拟化技术可以在同一台物理机(physical machine)中虚拟出多个系统,从而提高物理机的使用效率,因此有些不良的服务器供应商为降低成本就会在一台物理机上虚拟出多个虚拟机(virtual machine),然后冒充多个物理机租用给多个客户。但在同一台物理机上同时运行多个虚拟机,由于每个虚拟机都需要占用物理机的资源,这样就会导致物理机整体性能的下降,进而影响物理机上每个虚拟机的性能,使得租客们的利益受损。然而租客们由于技术限制,很难判断出自己租用的到底是真实的物理机器,还是虚拟化之后的虚拟机。 现有技术中一般可通过查看设备信息中是否包含特定的字样(比如:VMwareVirtual ),来判断硬件环境是否为虚拟机环境,但设备信息是可修改的,上述方法无法检测出设备信息未被修改的虚拟机。因此如何有效检测出硬件环境是否为虚拟机环境是当前的一大难题。
技术实现思路
有鉴于此,本专利技术提供一种检测硬件环境是否为虚拟机环境的方法及装置,可更有效地检测出硬件环境是否为虚拟机环境。 一种检测硬件环境是否为虚拟机环境的方法,包括:获取所述硬件环境的系统第一时间;向CPU发送执行指令,所述执行指令用于指示所述CPU执行特权指令;当检测到所述特权指令执行完毕时,获取所述硬件环境的系统第二时间;以及计算所述系统第一时间和所述系统第二时间的差值,若所述差值超过预设值,则判定所述硬件环境为虚拟机环境。 一种检测硬件环境是否为虚拟机环境的装置,包括:系统第一时间获取模块,用于获取所述硬件环境的系统第一时间;执行指令发送模块,用于向CPU发送执行指令,所述执行指令用于指示所述CPU执行特权指令;系统第二时间获取模块,用于当检测到所述特权指令执行完毕时,获取所述硬件环境的系统第二时间;以及第一判定模块,用于计算所述系统第一时间和所述系统第二时间的差值,若所述差值超过预设值,则判定所述硬件环境为虚拟机环境。 本专利技术实施例提供的检测硬件环境是否为虚拟机环境的方法及装置,通过计算在测试设备中执行特权指令的前后时间的差值,然后将计算出的差值与物理机处理该特权指令所需时钟周期进行比较,可有效检测出硬件环境是否为虚拟机环境。 为让本专利技术的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。 【附图说明】 图1为本专利技术第一实施例提供的检测硬件环境是否为虚拟机环境的方法的流程图。 图2为本专利技术第二实施例提供的检测硬件环境是否为虚拟机环境的方法的流程图。 图3为本专利技术第三实施例提供的检测硬件环境是否为虚拟机环境的装置的结构示意图。 图4为本专利技术第四实施例提供的检测硬件环境是否为虚拟机环境的装置的结构示意图。 【具体实施方式】 为更进一步阐述本专利技术为实现预定专利技术目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本专利技术的【具体实施方式】、结构、特征及其功效,详细说明如后。 本专利技术实施例所提供的检测硬件环境是否为虚拟机环境的方法可应用于计算机等测试设备中实现对计算机硬件环境是否为虚拟机环境的检测。 第一实施例 图1为本专利技术第一实施例提供的检测硬件环境是否为虚拟机环境的方法的流程图。如图1所示,本实施例的检测硬件环境是否为虚拟机环境的方法包括以下步骤: 步骤SI I,获取所述硬件环境的系统第一时间。 系统指的是所述硬件环境运行的操作系统。所述获取的硬件环境的系统第一时间的最小时间单位可以为微秒(microsecond, μ S)。 步骤S12,向CPU发送执行指令,所述执行指令用于指示所述CPU执行特权指令。 在多道程序设计环境中,为了保证系统安全,将计算机的指令系统分为特权指令和非特权指令两部分。特权指令是指CPU特权级才能执行的指令,例如:1/0指令、设置时钟指令,控制中断屏蔽的某些指令,清内存指令,建立存储保护指令等。 步骤S13,当检测到所述特权指令执行完毕时,获取所述硬件环境的系统第二时间。 可以理解的,所述获取的硬件环境的系统第二时间的最小时间单位为μ S。 步骤S14,计算所述系统第一时间和所述系统第二时间的差值,若所述差值超过预设值,则判定所述硬件环境为虚拟机环境。 特权指令是对真实的物理设备的操作,而虚拟机运行的是模拟的硬件设备,因此根据规定,某些特权指令必须被物理机拦截,也即必须通过转换系统控制权的方式,将对模拟硬件设备的操作转换为对真实物理设备的操作。对特权指令的拦截,意味着CPU必须退出虚拟化的虚拟机环境,转而在真实的物理机环境下,由真实的物理机处理特权指令,处理完毕后再进入虚拟化的虚拟机环境。因此,虚拟机环境下,CPU执行特权指令的时钟周期要远远大于物理机环境下处理相同特权指令的时钟周期。 基于上述原理,在物理机环境下处理相同特权指令的时钟周期的基础上预设步骤S14中的所述预设值,如果系统第一时间和系统第二时间的差值,也即CPU执行特权指令的时钟周期大于预设值,则可判断测试设备的硬件环境为虚拟机环境。 考虑到由于测试设备性能导致的执行时间误差,预设值至少为物理机环境下处理I/o指令所需时钟周期的十倍,优选地,可为物理机环境下处理I/O指令所需时钟周期的十倍。物理机环境下处理各种CPU特权指令所需的时钟周期为常规参数,可通过查询CPU规格设备手册获得,在此不再赘述。 本专利技术实施例提供的检测硬件环境是否为虚拟机环境的方法,通过计算在测试设备中执行特权指令的前后时间的差值,然后将计算出的差值与物理机处理该特权指令所需时钟周期进行比较,可有效检测出硬件环境是否为虚拟机环境。 第二实施例 图2为本专利技术第二实施例提供的检测硬件环境是否为虚拟机环境的方法的流程图。如图3所示,本实施例的检测硬件环境是否为虚拟机环境的方法包括以下步骤: 步骤S21,获取所述硬件环境的系统第一时间。 此步骤可以参考第一实施例中的相应步骤,这里不再赘述。 步骤S22,向CPU发送执行指令,指示所述CPU执行I/O指令。 I/O指令也即输入/输出指令,在X86指令系统中具体可包括IN/0UT两种指令。IN指令的功能是从I/O端口输入(读)数据到微处理器的寄存器中,OUT指令的功能是将微处理器的寄存器中的数据输出(写)到I/O端口中。 于本实施例中,例如,测试设备向CPU指令发送执行指令,指示CPU从预设I/O端口输入数据到微处理器的寄存器中。 优选地,于本实施例其他【具体实施方式】中,也可指示CPU执行其他特权指令,例如=CPUID指令、或INVD指令、或MOV from CR3指令。其中,CPUID指令用于获取待测设备的CPU的信息,例如:CPU类型,型号,制造商信息,商标信息,序列号,缓存。INVD指令用于本文档来自技高网...
【技术保护点】
一种检测硬件环境是否为虚拟机环境的方法,其特征在于,包括:获取所述硬件环境的系统第一时间;向CPU发送执行指令,所述执行指令用于指示所述CPU执行特权指令;当检测到所述特权指令执行完毕时,获取所述硬件环境的系统第二时间;以及计算所述系统第一时间和所述系统第二时间的差值,若所述差值超过预设值,则判定所述硬件环境为虚拟机环境。
【技术特征摘要】
1.一种检测硬件环境是否为虚拟机环境的方法,其特征在于,包括: 获取所述硬件环境的系统第一时间; 向CPU发送执行指令,所述执行指令用于指示所述CPU执行特权指令; 当检测到所述特权指令执行完毕时,获取所述硬件环境的系统第二时间;以及 计算所述系统第一时间和所述系统第二时间的差值,若所述差值超过预设值,则判定所述硬件环境为虚拟机环境。2.根据权利要求1所述的方法,其特征在于,还包括: 若所述差值未超过预设值,则判定所述硬件环境为物理机环境。3.根据权利要求2所述的方法,其特征在于,还包括: 输出判定结果,将所述判定结果显示给用户。4.根据权利要求1所述的方法,其特征在于,所述特权指令至少包括:1/0指令、CPWD指令、INVD指令、或MOV from CR3指令。5.根据权利要求1至4中任一项所述的方法,其特征在于,所述预设值至少为物理机处理所述特权指令所需时钟周期的十倍。6.一种检测硬件环境是否为虚拟机环境的装置,其特征在于,包括:...
【专利技术属性】
技术研发人员:高剑林,
申请(专利权)人:深圳市腾讯计算机系统有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。