專利名稱:檢測(cè)虛擬化的制作方法
檢測(cè)虛擬化
背景技術(shù):
處理器可以在基于處理器的系統(tǒng)中使用,例如在包括桌上型計(jì)
算機(jī)、服務(wù)器、工作站、或筆記本計(jì)算機(jī)的計(jì)算機(jī)中使用;在諸如個(gè)人數(shù)字助理PDA、"智能"移動(dòng)電話或便攜式游戲系統(tǒng)的手持裝置中使用;或在游戲控制臺(tái)或游戲站、機(jī)頂盒或其他家庭娛樂(lè)設(shè)備中使用等等。在每種情況中,處理器基于基本執(zhí)行周期工作,并且一個(gè)處理器參數(shù)是處理器周期發(fā)生的頻率。以每秒周期數(shù)或赫茲(Hz)或其倍數(shù)(例如兆赫(MHz)和吉赫(GHz))來(lái)測(cè)量該頻率。
在一些情況中,處理器能以多個(gè)頻率工作,例如當(dāng)處于節(jié)能模式中時(shí),處理器切換到以比它處于高性能模式時(shí)所使用的頻率低的頻率來(lái)工作的模式。處理器在不同模式中工作所使用的一組不同頻率常常是處理器的制造商指定的一組離散值。
在一些情況中,處理器制造商可以提供用于處理器上執(zhí)行的程序來(lái)確定處理器要工作所使用的一個(gè)或多個(gè)指定的頻率。例如,程序可以執(zhí)行使處理器返回型號(hào)的指令,基于該型號(hào),程序可以通過(guò)訪問(wèn)存儲(chǔ)表來(lái)確定處理器工作可以使用的一個(gè)或多個(gè)對(duì)應(yīng)頻率。
基于處理器的系統(tǒng)還可以才是供實(shí)時(shí)時(shí)鐘。在此類系統(tǒng)上執(zhí)行的程序可以對(duì)實(shí)時(shí)時(shí)鐘具有訪問(wèn)外又,并且能夠4吏用它例如通過(guò)使程序暫停按實(shí)時(shí)時(shí)鐘測(cè)量的特定時(shí)間來(lái)以程序形式確定程序執(zhí)行期間的實(shí)時(shí)周期。
虛擬化是這樣一種技術(shù),它使基于處理器的主機(jī)能夠以硬件和軟件形式支持虛擬化或在 一 些情況中僅W軟件形式支持虛擬化以呈示主機(jī)的抽象,使得主機(jī)的底層硬件看上去像是一個(gè)或多個(gè)獨(dú)立工作的虛擬機(jī)。因此每個(gè)虛擬機(jī)可以在功能上作為獨(dú)立自給的(self-contained) 平臺(tái)。虛擬化技術(shù)常常用于使多個(gè)訪客操作系統(tǒng)和/或其 他訪客軟件能夠共存并看似同時(shí)地且看似獨(dú)立地在多個(gè)虛擬機(jī)上執(zhí) 行,而實(shí)際在物理上是在相同的硬件平臺(tái)上執(zhí)行。虛擬機(jī)可以模擬 主機(jī)的硬件或完全地呈示不同的硬件抽象。
虛擬化系統(tǒng)向在虛擬機(jī)中工作的訪客軟件提供一組資源(例如 處理器、存儲(chǔ)器、I/O裝置),并可以將物理主機(jī)的一些或全部組件 映射到虛擬機(jī)中或創(chuàng)建完全虛擬的組件。因此可以說(shuō)虛擬化系統(tǒng)提 供與訪客軟件的"虛擬棵機(jī)"接口。
圖1是一個(gè)實(shí)施例中的虛擬化環(huán)境的高層框圖。
圖2是一個(gè)實(shí)施例中的虛擬化環(huán)境的操作的高層流程圖。
圖3是一個(gè)實(shí)施例中的處理的高層流程圖。
圖4是一個(gè)實(shí)施例中的處理的高層流程圖。
具體實(shí)施例方式
在一些實(shí)施例中,虛擬化系統(tǒng)可以包括控制主才幾的虛擬機(jī)監(jiān)視< 器(VMM)。 VMM向在虛擬4幾(VM)中工作的訪客軟件提供一組 資源(例如處理器、存儲(chǔ)器和I/O裝置)。VMM可以將物理主機(jī)的 一些或全部組件映射到虛擬機(jī)中,并可以創(chuàng)建在VMM中的軟件中 仿真且包括在虛擬機(jī)中的完全虛擬的組件(例如虛擬的I/O裝置)。 VMM使用硬件虛擬化體系結(jié)構(gòu)中的工具來(lái)向虛擬機(jī)提供服務(wù)和提供 對(duì)主機(jī)上執(zhí)行的多個(gè)虛擬機(jī)以及這些多個(gè)虛擬機(jī)之間的保護(hù)。
圖1圖示虛擬機(jī)環(huán)境100的一個(gè)實(shí)施例。在該實(shí)施例中,基于 處理器的平臺(tái)116可以執(zhí)行VMM 112。通常以軟件形式實(shí)現(xiàn)的VMM 可以仿真與高層軟件的虛擬棵^L接口并將其導(dǎo)出。此類高層軟件可
以包括標(biāo)準(zhǔn)OS、實(shí)時(shí)OS或可以是具有有限操作系統(tǒng)功能的精簡(jiǎn)環(huán)
8境(stripped-down environment ),并且在一些實(shí)施例中可以不包括標(biāo) 準(zhǔn)OS中通常具有的OS工具?;蛘?,例如VMM 112可以在另一個(gè) VMM內(nèi)運(yùn)行或使用另一個(gè)VMM的服務(wù)。在一些實(shí)施例中,VMM 能以例如硬件、軟件、固件的形式來(lái)實(shí)現(xiàn)或通過(guò)多種技術(shù)的組合來(lái)實(shí)現(xiàn)。
平臺(tái)硬件116可以是個(gè)人計(jì)算機(jī)(PC)、大型主機(jī)、例如個(gè)人數(shù) 字助理(PDA)或"智能"移動(dòng)電話的手持設(shè)備、便攜式計(jì)算機(jī)、 機(jī)頂盒或另 一種基于處理器的系統(tǒng)。平臺(tái)硬件116至少包含處理器118 和存儲(chǔ)器120。處理器118可以是能夠執(zhí)行程序的任何類型的處理器, 例如微處理器、數(shù)字信號(hào)處理器、微控制器等。處理器可以包括用 于在一些實(shí)施例中執(zhí)行的微碼、可編程邏輯或硬編碼的邏輯。雖然 圖1僅示出一個(gè)這種處理器118,但是實(shí)施例中的系統(tǒng)中可以有一個(gè) 或多個(gè)處理器。此外,處理器118可以包括多個(gè)核,支持多個(gè)線程, 等等。在各種實(shí)施例中,存儲(chǔ)器-120可以包括硬盤、軟盤、隨機(jī)存 取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、閃速存儲(chǔ)器、上面這些裝 置的任何組合或處理器118可讀的任何其他類型的機(jī)器媒體。存儲(chǔ)器 120可以存儲(chǔ)用于實(shí)現(xiàn)程序執(zhí)行和其他方法實(shí)施例的指令和/或數(shù)據(jù)。
VMM 112向訪客軟件呈示一個(gè)或多個(gè)虛擬機(jī)的抽象,這樣可以 向各種訪客提供相同或不同的抽象。圖l示出兩個(gè)虛擬機(jī)102和114。 每個(gè)虛擬機(jī)上運(yùn)行的訪客軟件(如訪客軟件103和113)可以包括訪 客OS (如訪客OS 104或106)和多種訪客軟件應(yīng)用程序108和110。 訪客軟件103和113可以訪問(wèn)訪客軟件103和113運(yùn)行于其上并執(zhí)行 其他功能的虛擬機(jī)內(nèi)的物理資源(例如處理器寄存器、存儲(chǔ)器和I/O 裝置)。例如,根據(jù)虛擬機(jī)102和114中呈示的處理器和平臺(tái)的體系 結(jié)構(gòu),訪客軟件103和113期望具有對(duì)所有寄存器、高速緩存、結(jié)構(gòu)、 1/0裝置、存儲(chǔ)器等的訪問(wèn)權(quán)。
在一個(gè)實(shí)施例中,處理器118根據(jù)虛擬機(jī)控制結(jié)構(gòu)(VMCS ) 124 中存儲(chǔ)的數(shù)據(jù)來(lái)控制虛擬機(jī)102和114的操作。VMCS 124是可以包含訪客軟件103和113的狀態(tài)、VMM 112的狀態(tài)、指示VMM 112 期望如何控制訪客軟件103和113的操作的執(zhí)行控制信息、VMM 112 與虛擬機(jī)之間的信息控制轉(zhuǎn)換等的結(jié)構(gòu)。處理器118從VMCS 124 中讀取信息以確定虛擬機(jī)的執(zhí)-f亍環(huán)境并約束它的行為。在一個(gè)實(shí)施 例中,VMCS 124存儲(chǔ)在存儲(chǔ)器120中。在一些實(shí)施例中,使用多個(gè) VMCS結(jié)構(gòu)來(lái)支持多個(gè)虛擬才幾。
可以將訪客軟件(例如103,包括訪客OS 104和應(yīng)用程序108) 能夠訪問(wèn)的資源分類成"具有特權(quán)的"或"不具有特權(quán)的"。對(duì)于具 有特權(quán)的資源,VMM 112使訪客軟件期望的功能便于實(shí)現(xiàn),同時(shí)保 留對(duì)這些具有特權(quán)的資源的最終控制。而且每個(gè)訪客軟件103和113 期望處理諸如異常(例如頁(yè)故障、 一般性保護(hù)故障等)、中斷(例如 硬件中斷、軟件中斷)以及平臺(tái)事件(例如初始化(INIT)和系統(tǒng) 管理中斷(SMI))的各種平臺(tái)事件。這些平臺(tái)事件的其中一些是"具 有特權(quán)的",因?yàn)樗鼈儽仨氂蒝MM 112來(lái)處理以確保虛擬機(jī)102和114 的正常操作以及對(duì)訪客軟件以及訪客軟件之間的防護(hù)。訪客操作系 統(tǒng)和訪客應(yīng)用程序都可能會(huì)嘗試訪問(wèn)具有特權(quán)的資源,并且都可能 引起或遇到具有特權(quán)的事件。具有特權(quán)的平臺(tái)事件和對(duì)具有特權(quán)的 資源的訪問(wèn)嘗試在本文中通稱為"具有特權(quán)的事件"或"虛擬化事 件"。
圖2中所示的處理圖示了例如先前描述并在圖1中圖示的實(shí)施 例中的虛擬機(jī)環(huán)境的操作。圖2圖示用于處理訪客軟件中發(fā)生的具 有特權(quán)的事件的實(shí)施例中的VM環(huán)境的操作,以及由訪客軟件處理 不具有特權(quán)的事件的實(shí)施例的操作。圖2未圖示環(huán)境中可能出現(xiàn)的 所有組件或所有操作,例如圖1中圖示的所有組件或所有操作。這 僅僅是為了呈示的簡(jiǎn)明。雖然圖2中表示一組小數(shù)量的組件和少量 特定操作,但是實(shí)施例中的VM環(huán)境可以包含許多其他組件,并在 此類實(shí)施例中可以進(jìn)行許多其他操作。
圖2圖示虛擬機(jī)抽象102上執(zhí)行的訪客軟件103的一組示范^喿作,以及先前在圖1中描述的平臺(tái)硬件116。在指示系統(tǒng)(例如VMM 112、訪客軟件103等)中發(fā)生這些操作的框中圖示了這些操作。除 了先前描述的VM環(huán)境的其他組件外,在212, VM抽象102可以存 儲(chǔ)訪客軟件103的虛擬機(jī)狀態(tài)和其他狀態(tài)信息,并且還可以向訪客 提供諸如虛擬網(wǎng)絡(luò)連接或一組通用寄存器(作為兩個(gè)示例)的其他 資源。當(dāng)然,實(shí)現(xiàn)VM狀態(tài)、訪客狀態(tài)和其他VM資源的物理資源 實(shí)際是由VM執(zhí)行所在的平臺(tái)硬件116來(lái)提供的。平臺(tái)硬件包括存 儲(chǔ)器120、 VMCS 124和處理器118。
在240,訪客軟件103訪問(wèn)不具有特權(quán)的資源242。不具有特權(quán) 的資源無(wú)需由VMM 112來(lái)控制,并且可以-故不調(diào)用VMM 112而繼 續(xù)運(yùn)行的訪客軟件直接訪問(wèn),/人而允許訪客在訪問(wèn)不具有特權(quán)的資 源242之后在245繼續(xù)運(yùn)行。同樣無(wú)需VMM 112的干預(yù)即可處理不 具有特權(quán)的平臺(tái)事件(圖2中未示出這一點(diǎn))。
在205,訪客軟件103嘗試訪問(wèn)具有特權(quán)的資源和/或遇到具有 特權(quán)的平臺(tái)事件。如在205,當(dāng)具有特權(quán)的事件發(fā)生時(shí),可以將控制 轉(zhuǎn)移207到VMM 112。控制,人訪客軟件轉(zhuǎn)移207到VMM 112在本 文中稱為虛擬機(jī)退出。在使資源訪問(wèn)順利進(jìn)行或以其他方式適當(dāng)?shù)?處理具有特權(quán)的事件之后,在232, VMM 112可以將控制返回到訪 客軟件,然后訪客軟件恢復(fù)操作,235。將控制從VMM112轉(zhuǎn)移232 到訪客軟件在本文中稱為虛擬機(jī)進(jìn)入。在一個(gè)實(shí)施例中,VMM 112 通過(guò)執(zhí)行專門設(shè)計(jì)為觸發(fā)轉(zhuǎn)換的指令來(lái)啟動(dòng)虛擬機(jī)進(jìn)入,230,該指 令在本文中稱為虛擬機(jī)進(jìn)入指令。
在一個(gè)實(shí)施例中,當(dāng)發(fā)生虛擬機(jī)退出時(shí),保存訪客軟件使用的 處理器狀態(tài)的分量,210,加載VMM 112所需的處理器狀態(tài)的分量, 并在220,在VMM 112中執(zhí)4亍重新開(kāi)始。在一個(gè)實(shí)施例中,將訪客 軟件使用的處理器狀態(tài)的分量存儲(chǔ)在VMCS 124的訪客狀態(tài)區(qū)域中, 并將VMM 112所需的處理器狀態(tài)的分量存儲(chǔ)在VMCS 124的監(jiān)視器 狀態(tài)區(qū)域中。在一個(gè)實(shí)施例中,當(dāng)從VMM 112到訪客軟件的轉(zhuǎn)換發(fā)
ii生時(shí),恢復(fù)225虛擬機(jī)退出時(shí)保存(以及在處理虛擬機(jī)退出時(shí)可能 被VMM U2修改)的處理器狀態(tài)的分量,并在230將控制返回給虛 擬機(jī)102或114。
在其他實(shí)施例中,VM的結(jié)構(gòu)和支持訪客軟件的組織可能有所 不同。在主機(jī)上執(zhí)行以支持虛擬化的軟件可以稱為VMM或可能不 稱為VMM;在一些實(shí)例中,虛擬機(jī)支持系統(tǒng)可以不具有硬件組件或 支持。在再一些實(shí)施例中,整個(gè)VMM和訪客可以在執(zhí)行的操作系 統(tǒng)內(nèi)運(yùn)行,而不像圖1圖示的結(jié)構(gòu)那樣。正如本領(lǐng)域中公知的,虛 擬機(jī)的許多其他實(shí)現(xiàn)也是可能的。
當(dāng)硬件支持的VMM按上文參考圖1和圖2描述的實(shí)施例中的 情況來(lái)實(shí)現(xiàn)VM時(shí),可以向VM內(nèi)執(zhí)行的程序呈示虛擬化的訪客機(jī) 器環(huán)境,該虛擬化的訪客機(jī)器環(huán)境在許多方面與物理機(jī)器環(huán)境是很 難區(qū)分的。利用硬件支持,VMM可以誘捕并正確地處理特殊的指令, 例如對(duì)例如虛擬處理器的模式專用寄存器的具有特權(quán)的資源進(jìn)行訪 問(wèn)、像物理處理器返回值的一沖羊返回值;,而且在該實(shí)施例中,可以 通過(guò)VMM和VMCS的所描迷操作結(jié)合該實(shí)施例中的硬件的虛擬化 支持來(lái)適合地;溪擬對(duì)硬件的具有特權(quán)的訪問(wèn)(例如對(duì)I/O裝置具有負(fù) 面影響的存儲(chǔ)器訪問(wèn))。確切地來(lái)說(shuō),在一個(gè)實(shí)例中,特定平臺(tái)可以 通過(guò)例如提供與底層物理處理器屬于相同的處理器類型和型號(hào)的虛 擬處理器、與物理機(jī)器等的總線連接的那些I/O裝置相同的I/O裝置 來(lái)提供呈示在許多方面與底層物理硬件相似或相同的虛擬硬件的 VM。這樣就可以將訪客對(duì)處理器或其他硬件的平臺(tái)或處理器專用引 用經(jīng)由中間VMM和VMCS傳遞到物理平臺(tái)和VM以便進(jìn)行適當(dāng)?shù)?響應(yīng),因此為訪客提供作為底層物理硬件的接近副本的環(huán)境。這使 得訪客很難檢測(cè)到介入虛擬化的存在。
或者,VMM和虛擬化支持系統(tǒng)可以基于與底層物理系統(tǒng)不同的 處理器或平臺(tái)來(lái)提供環(huán)境。甚至在此情況中,虛擬化子系統(tǒng)和VMM
的精細(xì)實(shí)現(xiàn)可以阻止虛擬機(jī)上i丸行的程序通過(guò)任^r直^矣的方法纟全測(cè)到環(huán)境的虛擬化特征。
在一些情況中,對(duì)于程序來(lái)說(shuō),知道它正在執(zhí)行所處的環(huán)境的
虛擬化特征可能是重要的。例如,這對(duì)于希望擁有性能關(guān)^:程序的 適合操作以確保程序僅安裝在具有某些最小能力(例如最小存儲(chǔ)器 大小或處理器頻率)的物理硬件上的程序供應(yīng)商可能是必不可少的。 在虛擬化環(huán)境中,vm可能報(bào)告存儲(chǔ)器大小或處理器頻率或虛擬化硬 件的其他參數(shù),這可能未準(zhǔn)確地反映底層硬件的實(shí)際能力。而且,
程序在vm內(nèi)的執(zhí)行通常僅由于vm本身的操作引起開(kāi)銷,并且這 種開(kāi)銷對(duì)于程序中的一些性能關(guān)鍵處理來(lái)說(shuō)是不期望有的。其他程 序(例如操作或顯示安全數(shù)據(jù)的那些程序)可能希望認(rèn)證硬件裝置 或僅在許可的硬件平臺(tái)上運(yùn)行。如果執(zhí)行此類程序所在的平臺(tái)實(shí)際 是未許可的平臺(tái)上執(zhí)行的vm且惡意地被設(shè)計(jì)成片莫擬許可的物理硬 件平臺(tái),則在該程序不可能檢測(cè)到執(zhí)行程序所在的平臺(tái)是虛擬化的 情況下此類程序的安全性要打折扣。
圖3中圖示程序檢測(cè)它運(yùn)行于虛擬化實(shí)施例上的過(guò)程。在圖3 中,在一個(gè)實(shí)施例中,存在處理器的測(cè)量的工作頻率與它的一組指 定的有效工作頻率之間的比較過(guò)程的 一個(gè)或多個(gè)迭代。在過(guò)程開(kāi)始 305,獲取該處理器工作時(shí)可以采用的一組指定的有效頻率,310。 在迭代方式中,以i表示流程圖中的循環(huán)變量,在315開(kāi)始于1,在 320當(dāng)i超過(guò)某個(gè)數(shù)n時(shí)退出,進(jìn)行測(cè)量的頻率與指定頻率的n次比 較。正如所公知的,可以使用與圖示的基本循環(huán)等效的任何方式的 迭代。在一些實(shí)例中,可以省略循環(huán),即當(dāng)n為1時(shí)。
與確定處理器工作時(shí)可以采用的指定頻率一樣,在本領(lǐng)域中確 定處理器頻率是公知的。在每次迭代中,測(cè)量處理器的實(shí)際頻率, 325,然后將測(cè)量的值與該組指定的有效頻率比較,330。評(píng)估比較 的結(jié)果,335。如果有任何比較落在指定頻率的正常公差范圍之外, 則該機(jī)器是虛擬機(jī),并且過(guò)程在340完成。否則,利用循環(huán)計(jì)數(shù)器 的遞增值重復(fù)循環(huán),345。如果完成所有n次測(cè)試而沒(méi)有超范圍的測(cè)量值,即循環(huán)在320退出,則這意味著結(jié)果指示該過(guò)程是在物理機(jī) 器上執(zhí)行,而非在虛擬機(jī)上執(zhí)4亍(350 )。
在一個(gè)實(shí)施例中,在Intel⑧體系結(jié)構(gòu)處理器、例如IA-32 Intel 體系結(jié)構(gòu)平臺(tái)(IA-32)上使用內(nèi)部體系結(jié)構(gòu)支持和VMM來(lái)實(shí)現(xiàn)虛 擬化,在IA-32 Intel⑧體系結(jié)構(gòu)專欠件開(kāi)發(fā)人員手冊(cè)(IA-32文檔)(IA-32 Intel Architecture Software Developer's Manual ( IA-32 documentation))中對(duì)IA-32 Intel⑧體系結(jié)構(gòu)平臺(tái)(IA-32)進(jìn)行了描 述。在一個(gè)實(shí)施例中,虛擬化處理器和底層物理處理器都是IA-32處 理器,并支持諸如確定該處理器執(zhí)行的周期數(shù)、實(shí)時(shí)時(shí)鐘的值、以 及確定該處理器的標(biāo)識(shí)的方式等的特定指令。例如,在IA-32體系結(jié) 構(gòu)中,RDTSC (讀取時(shí)間戳計(jì)數(shù)器)指令可以用于對(duì)基本處理器周 期計(jì)數(shù)。IA-32 RDMSR (從模式專用寄存器MSR讀取)和CPUID 指令可以用于確定有關(guān)該處理器的型號(hào)、類型和標(biāo)識(shí)的多種參數(shù)。 這些參數(shù)包括CPU類型,這樣就允許根據(jù)IA-32文檔中所指定的從 表中確定特定總線速度上指定的工作頻率。而且,可以結(jié)合該表使 用IA-32 MSR中的其他字段(例如處理器頻率配置字段和可伸縮總 線速度字段)來(lái)查找期望的處理器頻率。
這些指令或不同體系結(jié)構(gòu)中的等效指令集可以用于檢測(cè)虛擬化 環(huán)境。在一個(gè)此類IA-32實(shí)施例中,圖3的高層程序可以作為圖4所 示的使用IA-32體系結(jié)構(gòu)的特定指令的程序來(lái)實(shí)現(xiàn)。檢測(cè)虛擬化的程 序過(guò)程480開(kāi)始于該程序首先在410使用例如RDTSC的指令從它執(zhí) 行所在的處理器請(qǐng)求執(zhí)行的總基本時(shí)鐘周期的值7W。然后在420訪 問(wèn)系統(tǒng)的實(shí)時(shí)時(shí)鐘(RTC),過(guò)程在425等待或循環(huán)已知的實(shí)時(shí)時(shí)鐘 周期,這里為"個(gè)滴答。然后在430該程序讀取執(zhí)行的處理器時(shí)鐘 周期的新當(dāng)前值化2。在460將這兩個(gè)值之差除以時(shí)間
得到測(cè)量的頻率Fm。接下來(lái)在495使用CPUID或類似指令訪 問(wèn)處理器的標(biāo)識(shí)信息。該信息作為處理器中的模式專用寄存器(MSR)中的一組寄存器值提供,且可被處理器讀取,480。然后在 450可以使用所獲取的值的至少一個(gè)或多個(gè)值來(lái)索引到作為處理器的 規(guī)范的一部分發(fā)布的預(yù)定義的表中,以獲得一組可能的預(yù)定頻率和 這些頻率的公差。在450,程序選擇最接近測(cè)量的頻率Fw的指定頻 率以及根據(jù)處理器允許的偏移或變化的相關(guān)的指定范圍或公差, 值△可以從該表中讀取,或從為該處理器指定的其他數(shù)據(jù)中獲知。 然后在480,計(jì)算Fs與F/ 7之差的絕對(duì)值,并將其與A比較。如果 它超過(guò)A,則該程序在虛擬機(jī)中執(zhí)行或在虛擬化平臺(tái)上執(zhí)行,470; 否則該平臺(tái)是非虛擬化的物理平臺(tái),490。
該處理的正確性取決于在不管所采用的實(shí)際虛擬化方法的情況 下,虛擬化的實(shí)時(shí)時(shí)鐘必須與物理實(shí)時(shí)時(shí)鐘相同的可能性。因此, 即使像在420和425那樣訪問(wèn)實(shí)時(shí)時(shí)鐘的程序可以在虛擬化環(huán)境中 執(zhí)行,如果虛擬化環(huán)境要適當(dāng)?shù)貓?zhí)行某些類型的時(shí)間關(guān)鍵功能,虛 擬化環(huán)境仍必須提供對(duì)底層系統(tǒng)的實(shí)時(shí)時(shí)鐘的直接訪問(wèn)。 一般來(lái)說(shuō), 可以假定生產(chǎn)質(zhì)量虛擬化系統(tǒng)不將訪客所見(jiàn)到的實(shí)時(shí)時(shí)鐘虛擬化, 而是將提供對(duì)底層系統(tǒng)的實(shí)時(shí)時(shí)鐘的直接訪問(wèn)。這為訪客提供對(duì)實(shí) 時(shí)物理機(jī)器的訪問(wèn)的窗口,該i方客可按所示的用于檢測(cè)虛擬化。如
如上所述,它可以將虛擬機(jī)呈示的虛擬處理器的表現(xiàn)頻率與指定與 虛擬處理器相同的物理處理器工作所采用的頻率比較。因?yàn)樘摂M化 中涉及到開(kāi)銷,并且虛擬環(huán)境中的組件是以軟件模擬的,虛擬處理 器的測(cè)量的頻率很有可能隨時(shí)間而變化,并且一般處在對(duì)應(yīng)的物理 處理器的工作頻率的正常期望變化范圍之外,因此可以通過(guò)檢測(cè)頻
果虛擬化處理器在型號(hào)和規(guī)范上與底層物理處理器相同,則在特定 總線速度下,虛擬化頻率將低于物理處理器的實(shí)際頻率。即使作為 工作頻率低于底層物理處理器的處理器將虛擬化處理器呈示給訪客 (例如通過(guò)提供較慢處理器的處理器型號(hào)信息),通過(guò)上述處理仍能以高可能性檢測(cè)到由虛擬化的基本特性所導(dǎo)致的虛擬化頻率中幾乎 不可避免的變化。為了實(shí)現(xiàn)更高精確度,可以將該過(guò)程重復(fù)多次以 查找正常范圍之外的測(cè)量的頻率。
上面的實(shí)施例基于IA-32處理器中可用類型的高層體系結(jié)構(gòu)特 征,即時(shí)鐘周期計(jì)數(shù)器和實(shí)時(shí)時(shí)鐘的可用性。但是,圖1所示的處 理的 一 般流程不依賴于特定的體系結(jié)構(gòu)。大多數(shù)現(xiàn)代基于處理器的 系統(tǒng)提供測(cè)量處理器的實(shí)際工作頻率的方式;以及確定為處理器指 定的工作頻率的方式,但是特定細(xì)節(jié)可能不同于圖1所示的那些細(xì) 節(jié)以及不同于上文引述的IA-32指令。因此本領(lǐng)域技術(shù)人員會(huì)認(rèn)識(shí)到 可以在其他實(shí)施例中釆用確定處理器的測(cè)量的頻率是否接近于處理 器的指定頻率的許多備選方法。
一些實(shí)施例可以作為軟件程序產(chǎn)品或軟件來(lái)提供,軟件程序產(chǎn) 品或軟件可以包括在其上存儲(chǔ)有指令的機(jī)器或機(jī)器可讀媒體,其中 當(dāng)這些指令被該機(jī)器訪問(wèn)時(shí)執(zhí)行該實(shí)施例的過(guò)程。在另 一些實(shí)施例 中,過(guò)程可以由特定硬件組件來(lái)執(zhí)行,其中這些硬件組件包含用于 執(zhí)行這些過(guò)程的硬線連接邏輯,或者過(guò)程可以由編程的組件與定制 硬件組件的任何組合來(lái)執(zhí)行。
在前面的描述中,出于解釋的目的,提出了大量特定的細(xì)節(jié)以 便提供對(duì)所描述的實(shí)施例的透徹理解,但是本領(lǐng)域技術(shù)人員將認(rèn)識(shí) 到可以在不采用這些特定細(xì)節(jié)的情況下實(shí)施許多其他實(shí)施例。
上文詳細(xì)描述中的一些部分是根據(jù)對(duì)基于處理器的系統(tǒng)內(nèi)的數(shù) 據(jù)位進(jìn)行操作的算法和符號(hào)表示來(lái)呈示的。這些算法描述和表示是 本領(lǐng)域技術(shù)人員向本領(lǐng)域其他才支術(shù)人員最有效地傳達(dá)他們的工作內(nèi) 容的方式。這些操作是需要以物理方式操縱物理量的操作。這些量 可以采取能夠被存儲(chǔ)、傳輸、組合、比較和以其他方式操縱的電、 磁、光或其他物理信號(hào)的形式。以位、值、元素、符號(hào)、字符、術(shù) 語(yǔ)、數(shù)字等提及這些信號(hào)時(shí)常被證明是方便的,主要是因?yàn)槌S谩?br>
但是應(yīng)該記住,所有這些和相似的術(shù)語(yǔ)將與相應(yīng)的物理量關(guān)聯(lián),并且僅僅是應(yīng)用于這些量的便利標(biāo)記。除非特定聲明,否則從描述 中顯見(jiàn),諸如"執(zhí)行"或"處理,,或"計(jì)算,,或"運(yùn)算"或"確定" 等的術(shù)語(yǔ)可以指基于處理器的系統(tǒng)或相似的電子計(jì)算裝置的動(dòng)作和 過(guò)程,這些動(dòng)作和過(guò)程操縱基于處理器的系統(tǒng)的存儲(chǔ)裝置內(nèi)表示為 物理量的數(shù)據(jù)并將其轉(zhuǎn)換成其他此類信息存儲(chǔ)裝置、傳輸或顯示設(shè) 備上以相似方式表示的其他數(shù)據(jù)。
在這些實(shí)施例的描述中,可能參考了附圖。在所有這些附圖中, 相似的編號(hào)描述基本相似的組件??梢岳闷渌麑?shí)施例,以及可以 進(jìn)行結(jié)構(gòu)、邏輯和電方面的更改。而且,要理解,各種實(shí)施例(雖 然不同)不一定是互相排斥的。例如, 一個(gè)實(shí)施例中描述的具體功 能特征、結(jié)構(gòu)或特征可以包括在其他實(shí)施例中。
而且,在處理器中實(shí)現(xiàn)的實(shí)施例的設(shè)計(jì)可以經(jīng)歷不同的階段, 從開(kāi)發(fā)到模仿到制造。表示設(shè)計(jì)的數(shù)據(jù)能以多種方式來(lái)表示該設(shè)計(jì)。 首先,正如在模仿中有所幫助的,可以使用硬件描述語(yǔ)言或另一功 能描述語(yǔ)言來(lái)表示硬件。此外,還可以在設(shè)計(jì)過(guò)程的一些階段制造 具有邏輯和/或晶體管門電路的電路級(jí)模型。而且,在一些階段,大 多數(shù)設(shè)計(jì)達(dá)到表示各種裝置在硬件模型中的物理布置的數(shù)據(jù)級(jí)。在 使用常規(guī)半導(dǎo)體制造技術(shù)的情況中,表示硬件模型的數(shù)據(jù)可以是指 明用于制造集成電路的不同掩才莫層或掩一莫上各種特征有無(wú)的數(shù)據(jù)。 在設(shè)計(jì)的任何表示中,可以采用任何形式的機(jī)器可讀媒介存儲(chǔ)該數(shù) 據(jù)。調(diào)制或以其他方式生成用來(lái)傳輸此類信息的光或電波、存儲(chǔ)器 或例如光盤的磁或光存儲(chǔ)裝置都可以是機(jī)器可讀媒體。這些媒體的 任何一個(gè)可以"承載"或"指示"設(shè)計(jì)或軟件信息。當(dāng)傳輸指示或 承載代碼或設(shè)計(jì)的電載波時(shí),在執(zhí)行電信號(hào)的復(fù)制、緩沖或再傳輸 方面來(lái)說(shuō),產(chǎn)生新副本。因此,通信提供商或網(wǎng)絡(luò)提供商可以制作 構(gòu)成或表示實(shí)施例的物品(載波)的副本。
實(shí)施例可以作為程序產(chǎn)品來(lái)提供,其中該程序產(chǎn)品可以包括其 上存儲(chǔ)有數(shù)據(jù)的機(jī)器可讀媒體,而當(dāng)該數(shù)據(jù)被機(jī)器訪問(wèn)時(shí)使機(jī)器執(zhí)盤、光盤、DVD-ROM盤、DVD-RAM盤、DVD-RW盤、DVD+RW 盤、CD-R盤、CD-RW盤、CD-ROM盤以及不茲光盤、ROM、 RAM、 EPROM、 EEPROM、磁卡或光卡、閃速存儲(chǔ)器或適用于存儲(chǔ)電指令 的其他類型的媒介/機(jī)器可讀媒體。而且,實(shí)施例還可以作為程序產(chǎn) 品被下載,其中可以通過(guò)載波或其他傳播媒介中包含的數(shù)據(jù)信號(hào)經(jīng) 由通信鏈路(例如調(diào)制解調(diào)器或網(wǎng)絡(luò)連接)將該程序從遠(yuǎn)程數(shù)據(jù)源 傳送到請(qǐng)求設(shè)備。
這些方法的其中一些是以它們最基本的形式描述的,但是在不 背離要求權(quán)利的主題的基本范圍的前提下,可以向這些方法中的任 何一個(gè)方法添加步驟或從中刪除步驟,以及可以對(duì)所描述的消息的 任何 一 個(gè)消息添加信息或從中刪除信息。本領(lǐng)域技術(shù)人員將顯見(jiàn)到 還可以進(jìn)行多種其他修改和調(diào)整。這些具體的實(shí)施例并非提供來(lái)限 制要求權(quán)利的主題,而是說(shuō)明要求權(quán)利的主題。要求權(quán)利的主題的 范圍不由上文提供的特定示例來(lái)確定,而僅由所附權(quán)利要求來(lái)確定。
權(quán)利要求
1. 在基于處理器的系統(tǒng)上執(zhí)行的程序中,一種方法包括獲取所述系統(tǒng)的處理器執(zhí)行時(shí)所采用的頻率的一個(gè)或多個(gè)樣本;將每個(gè)樣本與一組預(yù)定的頻率的至少其中一個(gè)頻率比較;以及至少部分基于所述比較的結(jié)果來(lái)確定所述程序是否是在虛擬機(jī)上執(zhí)行。
2. 如權(quán)利要求1所述的方法,其特征在于,將每個(gè)樣本與所述 一組預(yù)定的頻率的至少其中一個(gè)頻率比較還包括確定所述樣本是 否在所述一組預(yù)定的頻率的至少其中一個(gè)頻率的指定范圍內(nèi)。
3. 如權(quán)利要求2所述的方法,其特征在于,確定所述程序是否 是在虛擬機(jī)中執(zhí)行還包括如果對(duì)于每個(gè)樣本,所述一組預(yù)定的頻率的至少其中一個(gè)頻率在所述樣本的指定范圍內(nèi),則確定所述程序不是在虛擬機(jī)中執(zhí)行; 以及否則,確定所述程序是在虛擬^L中執(zhí)行。
4. 如權(quán)利要求3所述的方法,其特征在于,至少部分基于所述 處理器響應(yīng)標(biāo)識(shí)指令的執(zhí)行而凈艮告的標(biāo)識(shí)符來(lái)選擇所述一組預(yù)定的 頻率。
5. 如權(quán)利要求3所述的方法,其特征在于,還包括在獲取滴答所述處理器執(zhí)行時(shí)所采用的頻率的樣本;用所述處理器的實(shí)時(shí)時(shí)鐘 測(cè)量所述時(shí)間間隔的持續(xù)時(shí)間;以及通過(guò)將所述滴答計(jì)數(shù)除以所述 持續(xù)時(shí)間來(lái)計(jì)算所述頻率。
6. 如權(quán)利要求5所述的方法,其特征在于,在時(shí)間間隔期間對(duì) 所有時(shí)鐘周期計(jì)數(shù)還包括執(zhí)-阡在所述時(shí)間間隔開(kāi)始處獲取所述處理器的第 一 周期計(jì)數(shù)的指令;#1行在所述時(shí)間間隔結(jié)束處獲取所述 處理器的第二周期計(jì)數(shù)的指令;以及獲取所述第一周期計(jì)數(shù)與所述 第二周期計(jì)數(shù)之差;并且其中用所述實(shí)時(shí)時(shí)鐘測(cè)量所述時(shí)間間隔的 持續(xù)時(shí)間還包括執(zhí)行使所述程序等待所述處理器的實(shí)時(shí)時(shí)鐘確定的 某段時(shí)間的指令。
7. —種機(jī)器可讀媒體,所述機(jī)器可讀媒體上存儲(chǔ)有數(shù)據(jù),所述 數(shù)據(jù)在被機(jī)器訪問(wèn)時(shí)使所述機(jī)器執(zhí)行方法,所述方法包括如下步驟獲取所述系統(tǒng)的處理器執(zhí)行時(shí)所采用的頻率的 一個(gè)或多個(gè)樣本;將每個(gè)樣本與一組預(yù)定的頻率的至少其中一個(gè)頻率比較;以及至少部分基于所述比較的結(jié)果來(lái)確定所述程序是否是在虛擬機(jī) 上執(zhí)行。
8. 如權(quán)利要求7所述的機(jī)器可讀媒體,其特征在于,將每個(gè)樣 本與所述一組預(yù)定的頻率的至少其中一個(gè)頻率比較還包括確定所 述樣本是否在所述一組預(yù)定的頻率的至少其中 一個(gè)頻率的指定范圍內(nèi)。
9. 如權(quán)利要求8所述的機(jī)器可讀媒體,其特征在于,確定所述 程序是否是在虛擬機(jī)中執(zhí)行還包括如果對(duì)于每個(gè)樣本,所述一組預(yù)定的頻率的至少其中 一個(gè)頻率 在所述樣本的指定范圍內(nèi),則確定所述程序不是在虛擬機(jī)內(nèi)執(zhí)行; 否則,確定所述程序是在虛擬機(jī)中執(zhí)行。
10. 如權(quán)利要求9所述的機(jī)器可讀媒體,其特征在于,至少部分 基于所述處理器響應(yīng)標(biāo)識(shí)指令的執(zhí)行而報(bào)告的標(biāo)識(shí)符來(lái)選擇所述一 組預(yù)定的頻率。
11. 如權(quán)利要求9所述的才幾器可讀if某體,其特征在于,所述方法 還包括在獲取滴答計(jì)數(shù)的時(shí)間間隔期間通過(guò)對(duì)所述處理器的所有時(shí)鐘 周期計(jì)數(shù)來(lái)獲取所述處理器執(zhí)^"時(shí)所采用的頻率的樣本;用所述處理器的實(shí)時(shí)時(shí)鐘測(cè)量所述時(shí)間間隔的持續(xù)時(shí)間;以及 通過(guò)將所述滴答計(jì)數(shù)除以所述持續(xù)時(shí)間來(lái)計(jì)算所述頻率。 在基于處理器的系統(tǒng)上執(zhí)行的程序中, 一種方法包括 檢測(cè)所述系統(tǒng)的處理器執(zhí)行時(shí)所采用的頻率; 將所述頻率與一組預(yù)定的頻率的至少其中一個(gè)頻率比較;以及 至少部分基于所述比較的結(jié)果來(lái)確定所述程序是否是在虛擬機(jī) 上執(zhí)行。
12. 如權(quán)利要求11所述的機(jī)器可讀媒體,其特征在于,在時(shí)間 間隔期間對(duì)所有時(shí)鐘周期計(jì)數(shù)還包括執(zhí)行在所述時(shí)間間隔開(kāi)始處 獲取所述處理器的第 一 周期計(jì)數(shù)的指令;執(zhí)行在所述時(shí)間間隔結(jié)束 處獲取所述處理器的第二周期計(jì)數(shù)的指令;以及獲取所述第一周期 計(jì)數(shù)與所述第二周期計(jì)數(shù)之差;并且其中用所述實(shí)時(shí)時(shí)鐘測(cè)量所述 時(shí)間間隔的持續(xù)時(shí)間還包括執(zhí)行使所述程序等待所述處理器的實(shí)時(shí) 時(shí)鐘確定的某段時(shí)間的指令。
13. —種系統(tǒng),包括 處理器;存儲(chǔ)裝置,所述存儲(chǔ)裝置中存儲(chǔ)有可在所述系統(tǒng)上執(zhí)行的程序, 所述程序用于獲取所述系統(tǒng)的處理器執(zhí)行時(shí)所采用的頻率的 一個(gè)或多個(gè) 樣本;將每個(gè)樣本與一組預(yù)定的頻率的至少其中一個(gè)頻率比較; 以及至少部分基于所述比較的結(jié)果來(lái)確定所述程序是否是在 虛擬機(jī)上4丸行。
14. 如權(quán)利要求13所述的系統(tǒng),其特征在于,用于將每個(gè)樣本 與所述一組預(yù)定的頻率的至少其中一個(gè)頻率比較的程序還包括用于 確定所述樣本是否在所述一組預(yù)定的頻率的至少其中一個(gè)頻率的指 定范圍內(nèi)的指令。
15. 如權(quán)利要求14所述的系統(tǒng),其特征在于,用于確定所述程序是否是在虛擬機(jī)中執(zhí)行的程序還包括用于執(zhí)行如下操作的指令如果對(duì)于每個(gè)樣本,所述一組預(yù)定的頻率的至少其中一個(gè)頻率在所述樣本的指定范圍內(nèi),則確定所述程序不是在虛擬機(jī)中執(zhí)行; 否則,確定所述程序是在虛擬機(jī)中執(zhí)行。
16. 如權(quán)利要求15所述的系統(tǒng),其特征在于,至少部分基于所 述處理器響應(yīng)標(biāo)識(shí)指令的執(zhí)行而報(bào)告的標(biāo)識(shí)符來(lái)選擇所述一組預(yù)定 的頻率。
17. 如權(quán)利要求15所述的系統(tǒng),其特征在于,所述程序還包括 執(zhí)行如下操作的指令在獲取滴答計(jì)數(shù)的時(shí)間間隔期間通過(guò)對(duì)所述處理器的所有時(shí)鐘 周期計(jì)數(shù)來(lái)獲取所述處理器執(zhí)行時(shí)所采用的頻率的樣本;用所述處理器的實(shí)時(shí)時(shí)鐘測(cè)量所述時(shí)間間隔的持續(xù)時(shí)間;以及 通過(guò)將所述滴答計(jì)數(shù)除以所述持續(xù)時(shí)間來(lái)計(jì)算所述頻率。
18. 如權(quán)利要求17所述的系統(tǒng),其特征在于,在時(shí)間間隔期間 對(duì)所有時(shí)鐘周期計(jì)數(shù)還包括,執(zhí)行在所述時(shí)間間隔開(kāi)始處獲取所述 處理器的第 一 周期計(jì)數(shù)的指令;執(zhí)行在所述時(shí)間間隔結(jié)束處獲取所 述處理器的第二周期計(jì)數(shù)的指令;以及獲取所述第一周期計(jì)數(shù)與所 述第二周期計(jì)數(shù)之差;并且其中用所述實(shí)時(shí)時(shí)鐘測(cè)量所述時(shí)間間隔 的持續(xù)時(shí)間還包括執(zhí)行使所述程序等待所述處理器的實(shí)時(shí)時(shí)鐘確定 的某段時(shí)間的指令。
19. 在機(jī)器上執(zhí)行的一種程序中, 一種方法包括 記錄所述機(jī)器的處理器的第一周期計(jì)數(shù);在記錄所述笫一周期計(jì)數(shù)之后立即等待所述處理器的實(shí)時(shí)時(shí)鐘 的預(yù)定數(shù)目的滴答;在所述等待之后立即記錄第二周期計(jì)數(shù);通過(guò)將所述第二周期計(jì)數(shù)與所述第一周期計(jì)數(shù)之差除以相當(dāng)于 所述預(yù)定數(shù)目的滴答的時(shí)間來(lái)獲取所述處理器的測(cè)量的頻率;獲取所述處理器的標(biāo)識(shí)符;基于所述標(biāo)識(shí)符查找表項(xiàng)以確定所述處理器的指定頻率; 將所述處理器的指定頻率與所述處理器的測(cè)量的頻率比較;以及如果所述指定頻率與所述測(cè)量的頻率之差超過(guò)指定的閾值,則 確定所述機(jī)器是虛擬機(jī)。
全文摘要
在基于處理器的系統(tǒng)上執(zhí)行的程序中,獲取該系統(tǒng)的處理器執(zhí)行時(shí)所采用的頻率的一個(gè)或多個(gè)樣本,將每個(gè)樣本與一組預(yù)定的頻率的至少其中一個(gè)頻率比較,并至少部分基于比較的結(jié)果來(lái)確定程序是否在虛擬機(jī)上執(zhí)行。
文檔編號(hào)G06F9/445GK101460924SQ200680018961
公開(kāi)日2009年6月17日 申請(qǐng)日期2006年6月2日 優(yōu)先權(quán)日2005年6月2日
發(fā)明者M·羅思曼, V·齊默 申請(qǐng)人:英特爾公司