檢測硬件環(huán)境是否為虛擬機環(huán)境的方法及裝置制造方法
【專利摘要】一種檢測硬件環(huán)境是否為虛擬機環(huán)境的方法,包括:獲取硬件環(huán)境的系統(tǒng)第一時間;向CPU發(fā)送執(zhí)行指令,執(zhí)行指令用于指示CPU執(zhí)行特權指令;當檢測到特權指令執(zhí)行完畢時,獲取硬件環(huán)境的系統(tǒng)第二時間;以及計算系統(tǒng)第一時間和系統(tǒng)第二時間的差值,若差值超過預設值,則判定硬件環(huán)境為虛擬機環(huán)境。此外,本發(fā)明還提供一種檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置。上述檢測硬件環(huán)境是否為虛擬機環(huán)境的方法及裝置可更有效地檢測出硬件環(huán)境是否為虛擬機環(huán)境。
【專利說明】檢測硬件環(huán)境是否為虛擬機環(huán)境的方法及裝置
【技術領域】
[0001]本發(fā)明涉及計算機【技術領域】,尤其涉及一種檢測硬件環(huán)境是否為虛擬機環(huán)境的方法及裝置。
【背景技術】
[0002]虛擬化技術的本質(zhì)是通過軟件模擬出具有完整硬件系統(tǒng)功能的、運行在一個完全隔離環(huán)境中的完整計算機系統(tǒng)。隨著虛擬化技術的發(fā)展,針對X86系列CPU (CentralProcessing Unit,中央處理器)的虛擬化技術已經(jīng)得到廣泛應用,并已逐漸被發(fā)展運用到數(shù)據(jù)存儲領域。由于虛擬化技術可以在同一臺物理機(physical machine)中虛擬出多個系統(tǒng),從而提高物理機的使用效率,因此有些不良的服務器供應商為降低成本就會在一臺物理機上虛擬出多個虛擬機(virtual machine),然后冒充多個物理機租用給多個客戶。但在同一臺物理機上同時運行多個虛擬機,由于每個虛擬機都需要占用物理機的資源,這樣就會導致物理機整體性能的下降,進而影響物理機上每個虛擬機的性能,使得租客們的利益受損。然而租客們由于技術限制,很難判斷出自己租用的到底是真實的物理機器,還是虛擬化之后的虛擬機。
[0003]現(xiàn)有技術中一般可通過查看設備信息中是否包含特定的字樣(比如:VMwareVirtual ),來判斷硬件環(huán)境是否為虛擬機環(huán)境,但設備信息是可修改的,上述方法無法檢測出設備信息未被修改的虛擬機。因此如何有效檢測出硬件環(huán)境是否為虛擬機環(huán)境是當前的一大難題。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供一種檢測硬件環(huán)境是否為虛擬機環(huán)境的方法及裝置,可更有效地檢測出硬件環(huán)境是否為虛擬機環(huán)境。
[0005]一種檢測硬件環(huán)境是否為虛擬機環(huán)境的方法,包括:獲取所述硬件環(huán)境的系統(tǒng)第一時間;向CPU發(fā)送執(zhí)行指令,所述執(zhí)行指令用于指示所述CPU執(zhí)行特權指令;當檢測到所述特權指令執(zhí)行完畢時,獲取所述硬件環(huán)境的系統(tǒng)第二時間;以及計算所述系統(tǒng)第一時間和所述系統(tǒng)第二時間的差值,若所述差值超過預設值,則判定所述硬件環(huán)境為虛擬機環(huán)境。
[0006]一種檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置,包括:系統(tǒng)第一時間獲取模塊,用于獲取所述硬件環(huán)境的系統(tǒng)第一時間;執(zhí)行指令發(fā)送模塊,用于向CPU發(fā)送執(zhí)行指令,所述執(zhí)行指令用于指示所述CPU執(zhí)行特權指令;系統(tǒng)第二時間獲取模塊,用于當檢測到所述特權指令執(zhí)行完畢時,獲取所述硬件環(huán)境的系統(tǒng)第二時間;以及第一判定模塊,用于計算所述系統(tǒng)第一時間和所述系統(tǒng)第二時間的差值,若所述差值超過預設值,則判定所述硬件環(huán)境為虛擬機環(huán)境。
[0007]本發(fā)明實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的方法及裝置,通過計算在測試設備中執(zhí)行特權指令的前后時間的差值,然后將計算出的差值與物理機處理該特權指令所需時鐘周期進行比較,可有效檢測出硬件環(huán)境是否為虛擬機環(huán)境。
[0008]為讓本發(fā)明的上述和其他目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附圖式,作詳細說明如下。
【專利附圖】
【附圖說明】
[0009]圖1為本發(fā)明第一實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的方法的流程圖。
[0010]圖2為本發(fā)明第二實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的方法的流程圖。
[0011]圖3為本發(fā)明第三實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置的結(jié)構示意圖。
[0012]圖4為本發(fā)明第四實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置的結(jié)構示意圖。
【具體實施方式】
[0013]為更進一步闡述本發(fā)明為實現(xiàn)預定發(fā)明目的所采取的技術手段及功效,以下結(jié)合附圖及較佳實施例,對依據(jù)本發(fā)明的【具體實施方式】、結(jié)構、特征及其功效,詳細說明如后。
[0014]本發(fā)明實施例所提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的方法可應用于計算機等測試設備中實現(xiàn)對計算機硬件環(huán)境是否為虛擬機環(huán)境的檢測。
[0015]第一實施例
[0016]圖1為本發(fā)明第一實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的方法的流程圖。如圖1所示,本實施例的檢測硬件環(huán)境是否為虛擬機環(huán)境的方法包括以下步驟:
[0017]步驟SI I,獲取所述硬件環(huán)境的系統(tǒng)第一時間。
[0018]系統(tǒng)指的是所述硬件環(huán)境運行的操作系統(tǒng)。所述獲取的硬件環(huán)境的系統(tǒng)第一時間的最小時間單位可以為微秒(microsecond, μ S)。
[0019]步驟S12,向CPU發(fā)送執(zhí)行指令,所述執(zhí)行指令用于指示所述CPU執(zhí)行特權指令。
[0020]在多道程序設計環(huán)境中,為了保證系統(tǒng)安全,將計算機的指令系統(tǒng)分為特權指令和非特權指令兩部分。特權指令是指CPU特權級才能執(zhí)行的指令,例如:1/0指令、設置時鐘指令,控制中斷屏蔽的某些指令,清內(nèi)存指令,建立存儲保護指令等。
[0021]步驟S13,當檢測到所述特權指令執(zhí)行完畢時,獲取所述硬件環(huán)境的系統(tǒng)第二時間。
[0022]可以理解的,所述獲取的硬件環(huán)境的系統(tǒng)第二時間的最小時間單位為μ S。
[0023]步驟S14,計算所述系統(tǒng)第一時間和所述系統(tǒng)第二時間的差值,若所述差值超過預設值,則判定所述硬件環(huán)境為虛擬機環(huán)境。
[0024]特權指令是對真實的物理設備的操作,而虛擬機運行的是模擬的硬件設備,因此根據(jù)規(guī)定,某些特權指令必須被物理機攔截,也即必須通過轉(zhuǎn)換系統(tǒng)控制權的方式,將對模擬硬件設備的操作轉(zhuǎn)換為對真實物理設備的操作。對特權指令的攔截,意味著CPU必須退出虛擬化的虛擬機環(huán)境,轉(zhuǎn)而在真實的物理機環(huán)境下,由真實的物理機處理特權指令,處理完畢后再進入虛擬化的虛擬機環(huán)境。因此,虛擬機環(huán)境下,CPU執(zhí)行特權指令的時鐘周期要遠遠大于物理機環(huán)境下處理相同特權指令的時鐘周期。
[0025]基于上述原理,在物理機環(huán)境下處理相同特權指令的時鐘周期的基礎上預設步驟S14中的所述預設值,如果系統(tǒng)第一時間和系統(tǒng)第二時間的差值,也即CPU執(zhí)行特權指令的時鐘周期大于預設值,則可判斷測試設備的硬件環(huán)境為虛擬機環(huán)境。
[0026]考慮到由于測試設備性能導致的執(zhí)行時間誤差,預設值至少為物理機環(huán)境下處理I/o指令所需時鐘周期的十倍,優(yōu)選地,可為物理機環(huán)境下處理I/O指令所需時鐘周期的十倍。物理機環(huán)境下處理各種CPU特權指令所需的時鐘周期為常規(guī)參數(shù),可通過查詢CPU規(guī)格設備手冊獲得,在此不再贅述。
[0027]本發(fā)明實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的方法,通過計算在測試設備中執(zhí)行特權指令的前后時間的差值,然后將計算出的差值與物理機處理該特權指令所需時鐘周期進行比較,可有效檢測出硬件環(huán)境是否為虛擬機環(huán)境。
[0028]第二實施例
[0029]圖2為本發(fā)明第二實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的方法的流程圖。如圖3所示,本實施例的檢測硬件環(huán)境是否為虛擬機環(huán)境的方法包括以下步驟:
[0030]步驟S21,獲取所述硬件環(huán)境的系統(tǒng)第一時間。
[0031]此步驟可以參考第一實施例中的相應步驟,這里不再贅述。
[0032]步驟S22,向CPU發(fā)送執(zhí)行指令,指示所述CPU執(zhí)行I/O指令。
[0033]I/O指令也即輸入/輸出指令,在X86指令系統(tǒng)中具體可包括IN/0UT兩種指令。IN指令的功能是從I/O端口輸入(讀)數(shù)據(jù)到微處理器的寄存器中,OUT指令的功能是將微處理器的寄存器中的數(shù)據(jù)輸出(寫)到I/O端口中。
[0034]于本實施例中,例如,測試設備向CPU指令發(fā)送執(zhí)行指令,指示CPU從預設I/O端口輸入數(shù)據(jù)到微處理器的寄存器中。
[0035]優(yōu)選地,于本實施例其他【具體實施方式】中,也可指示CPU執(zhí)行其他特權指令,例如=CPUID指令、或INVD指令、或MOV from CR3指令。其中,CPUID指令用于獲取待測設備的CPU的信息,例如:CPU類型,型號,制造商信息,商標信息,序列號,緩存。INVD指令用于使芯片上的高速緩存無效,即:清洗芯片上的超高速緩存。MOV from CR3指令用于在CR3寄存器中加載新值。
[0036]步驟S23,當檢測到所述特權指令執(zhí)行完畢時,獲取所述硬件環(huán)境的系統(tǒng)第二時間。
[0037]步驟S24,計算所述系統(tǒng)第一時間和所述系統(tǒng)第二時間的差值。
[0038]步驟S25,判斷所述差值是否超過預設值。
[0039]步驟S23至步驟S25可以參考第一實施例中的相應步驟,這里不再贅述。
[0040]若是,則執(zhí)行步驟S26:判定所述硬件環(huán)境為虛擬機環(huán)境,然后執(zhí)行步驟S28:輸出判定結(jié)果,將所述判定結(jié)果顯示給用戶。
[0041]若否,則執(zhí)行步驟S27:判定所述硬件環(huán)境為物理機環(huán)境。
[0042]步驟S28:輸出判定結(jié)果,將所述判定結(jié)果顯示給用戶。
[0043]本發(fā)明實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的方法,通過計算在測試設備中執(zhí)行特權指令的前后時間的差值,然后將計算出的差值與物理機處理該特權指令所需時鐘周期進行比較,可有效檢測出硬件環(huán)境是否為虛擬機環(huán)境。
[0044]第三實施例
[0045]圖3為本發(fā)明第三實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置的結(jié)構示意圖。本實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置可以用于實現(xiàn)第一實施例中的檢測硬件環(huán)境是否為虛擬機環(huán)境的方法。如圖3所示,檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置10包括:系統(tǒng)第一時間獲取模塊11、執(zhí)行指令發(fā)送模塊12、系統(tǒng)第二時間獲取模塊13、第一判定模塊14。
[0046]其中,系統(tǒng)第一時間獲取模塊11用于獲取所述硬件環(huán)境的系統(tǒng)第一時間;
[0047]執(zhí)行指令發(fā)送模塊12用于向CPU發(fā)送執(zhí)行指令,所述執(zhí)行指令用于指示所述CPU執(zhí)7TT特權指令;
[0048]系統(tǒng)第二時間獲取模塊13用于當檢測到所述特權指令執(zhí)行完畢時,獲取所述硬件環(huán)境的系統(tǒng)第二時間;以及
[0049]第一判定模塊14用于計算所述系統(tǒng)第一時間和所述系統(tǒng)第二時間的差值,若所述差值超過預設值,則判定所述硬件環(huán)境為虛擬機環(huán)境。
[0050]優(yōu)選地,所述特權指令至少包括:1/0指令、CPUID指令、INVD指令、或MOV fromCR3指令。
[0051]優(yōu)選地,所述預設值至少為物理機處理所述特權指令所需時鐘周期的十倍。
[0052]本實施例檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置10的各功能模塊實現(xiàn)各自功能的具體過程,請參見上述圖1至圖2所示實施例中描述的具體內(nèi)容,此處不再贅述。
[0053]本發(fā)明實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置,通過計算在測試設備中執(zhí)行特權指令的前后時間的差值,然后將計算出的差值與物理機處理該特權指令所需時鐘周期進行比較,可有效檢測出硬件環(huán)境是否為虛擬機環(huán)境。
[0054]第四實施例
[0055]圖4為第四實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置的結(jié)構示意圖。本實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置可以用于實現(xiàn)第二實施例中的檢測硬件環(huán)境是否為虛擬機環(huán)境的方法。如圖4所示,移動終端鈴音調(diào)整裝置20包括:系統(tǒng)第一時間獲取模塊21、執(zhí)行指令發(fā)送模塊22、系統(tǒng)第二時間獲取模塊23、第一判定模塊24、第二判定模塊25、顯示模塊26。
[0056]其中,系統(tǒng)第一時間獲取模塊21用于獲取所述硬件環(huán)境的系統(tǒng)第一時間。
[0057]執(zhí)行指令發(fā)送模塊22用于向CPU發(fā)送執(zhí)行指令,所述執(zhí)行指令用于指示所述CPU執(zhí)7TT特權指令。
[0058]系統(tǒng)第二時間獲取模塊23用于當檢測到所述特權指令執(zhí)行完畢時,獲取所述硬件環(huán)境的系統(tǒng)第二時間。
[0059]第一判定模塊24用于計算所述系統(tǒng)第一時間和所述系統(tǒng)第二時間的差值,若所述差值超過預設值,則判定所述硬件環(huán)境為虛擬機環(huán)境。
[0060]第二判定模塊25用于若所述差值未超過預設值,則判定所述硬件環(huán)境為物理機環(huán)境。
[0061]顯示模塊26用于輸出判定結(jié)果,將所述判定結(jié)果顯示給用戶。
[0062]優(yōu)選地,所述特權指令至少包括:1/0指令、CPUID指令、INVD指令、或MOV fromCR3指令。
[0063]優(yōu)選地,所述預設值至少為物理機處理所述特權指令所需時鐘周期的十倍。
[0064]本實施例檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置20的各功能模塊實現(xiàn)各自功能的具體過程,請參見上述圖1至圖2所示實施例中描述的具體內(nèi)容,此處不再贅述。
[0065]本發(fā)明實施例提供的檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置,通過計算在測試設備中執(zhí)行特權指令的前后時間的差值,然后將計算出的差值與物理機處理該特權指令所需時鐘周期進行比較,可有效檢測出硬件環(huán)境是否為虛擬機環(huán)境。
[0066]需要說明的是,本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。對于裝置類實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
[0067]需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者裝置中還存在另外的相同要素。
[0068]本領域普通技術人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
[0069]以上所述,僅是本發(fā)明的較佳實施例而已,并非對本發(fā)明作任何形式上的限制,雖然本發(fā)明已以較佳實施例揭露如上,然而并非用以限定本發(fā)明,任何熟悉本專業(yè)的技術人員,在不脫離本發(fā)明技術方案范圍內(nèi),當可利用上述揭示的技術內(nèi)容做出些許更動或修飾為等同變化的等效實施例,但凡是未脫離本發(fā)明技術方案內(nèi)容,依據(jù)本發(fā)明的技術實質(zhì)對以上實施例所作的任何簡單修改、等同變化與修飾,均仍屬于本發(fā)明技術方案的范圍內(nèi)。
【權利要求】
1.一種檢測硬件環(huán)境是否為虛擬機環(huán)境的方法,其特征在于,包括: 獲取所述硬件環(huán)境的系統(tǒng)第一時間; 向CPU發(fā)送執(zhí)行指令,所述執(zhí)行指令用于指示所述CPU執(zhí)行特權指令; 當檢測到所述特權指令執(zhí)行完畢時,獲取所述硬件環(huán)境的系統(tǒng)第二時間;以及 計算所述系統(tǒng)第一時間和所述系統(tǒng)第二時間的差值,若所述差值超過預設值,則判定所述硬件環(huán)境為虛擬機環(huán)境。
2.根據(jù)權利要求1所述的方法,其特征在于,還包括: 若所述差值未超過預設值,則判定所述硬件環(huán)境為物理機環(huán)境。
3.根據(jù)權利要求2所述的方法,其特征在于,還包括: 輸出判定結(jié)果,將所述判定結(jié)果顯示給用戶。
4.根據(jù)權利要求1所述的方法,其特征在于,所述特權指令至少包括:1/0指令、CPWD指令、INVD指令、或MOV from CR3指令。
5.根據(jù)權利要求1至4中任一項所述的方法,其特征在于,所述預設值至少為物理機處理所述特權指令所需時鐘周期的十倍。
6.一種檢測硬件環(huán)境是否為虛擬機環(huán)境的裝置,其特征在于,包括: 系統(tǒng)第一時間獲取模塊,用于獲取所述硬件環(huán)境的系統(tǒng)第一時間; 執(zhí)行指令發(fā)送模塊,用于向CPU發(fā)送執(zhí)行指令,所述執(zhí)行指令用于指示所述CPU執(zhí)行特權指令; 系統(tǒng)第二時間獲取模塊,用于當檢測到所述特權指令執(zhí)行完畢時,獲取所述硬件環(huán)境的系統(tǒng)第二時間;以及 第一判定模塊,用于計算所述系統(tǒng)第一時間和所述系統(tǒng)第二時間的差值,若所述差值超過預設值,則判定所述硬件環(huán)境為虛擬機環(huán)境。
7.根據(jù)權利要求6所述的裝置,其特征在于,還包括: 第二判定模塊,用于若所述差值未超過預設值,則判定所述硬件環(huán)境為物理機環(huán)境。
8.根據(jù)權利要求7所述的裝置,其特征在于,還包括: 顯示模塊,用于輸出判定結(jié)果,將所述判定結(jié)果顯示給用戶。
9.根據(jù)權利要求6所述的裝置,其特征在于,所述特權指令至少包括:1/0指令、CPWD指令、INVD指令、或MOV from CR3指令。
10.根據(jù)權利要求6至9中任一項所述的裝置,其特征在于,所述預設值至少為物理機處理所述特權指令所需時鐘周期的十倍。
【文檔編號】G06F9/44GK104239003SQ201310227592
【公開日】2014年12月24日 申請日期:2013年6月8日 優(yōu)先權日:2013年6月8日
【發(fā)明者】高劍林 申請人:深圳市騰訊計算機系統(tǒng)有限公司