專利名稱:提供對(duì)臨界存儲(chǔ)器區(qū)域的受保護(hù)訪問(wèn)的制作方法
提供對(duì)臨界存儲(chǔ)器區(qū)域的受保護(hù)訪問(wèn)背景技術(shù)在大多數(shù)基于處理器的系統(tǒng)中,在特權(quán)模式中,比如例如在"ringO" 中,執(zhí)行的任何系統(tǒng)軟件或程序訪問(wèn)系統(tǒng)的臨界資源,所述臨界資源包括 在存儲(chǔ)器或在其它存儲(chǔ)裝置中在所述系統(tǒng)上執(zhí)行的其它程序的映象以及呈 現(xiàn)于所述系統(tǒng)上的數(shù)據(jù),所述數(shù)據(jù)包括其它程序的數(shù)據(jù)。如所知的,諸如 特洛伊木馬、蠕蟲(chóng)、病毒等的不希望軟件或惡意軟件能夠通過(guò)修改、禁用 或規(guī)避(circumvent)在存儲(chǔ)器中以特權(quán)模式執(zhí)行的這種程序的執(zhí)行進(jìn)行來(lái) 突破操作系統(tǒng)的安全。例如,2003和2004年中Microsoft Windows⑧的補(bǔ) 丁所解決的大量弱點(diǎn)就與對(duì)程序或部分操作系統(tǒng)進(jìn)行的存儲(chǔ)器內(nèi)的修改有 關(guān)。使用如目前待審的美國(guó)專利申請(qǐng)No.11/173,851中所描述的方法,可以 在程序在存儲(chǔ)器中被加載之前對(duì)所述程序的完整性進(jìn)行驗(yàn)證。然而,這樣的驗(yàn)證不能夠防止對(duì)正在執(zhí)行的程序進(jìn)行存儲(chǔ)器內(nèi)的修改。對(duì)在其中可執(zhí)行這些特權(quán)程序的存儲(chǔ)器進(jìn)行直接保護(hù)是可能的,但是現(xiàn)有的機(jī)制對(duì)系統(tǒng)的操作增加了性能損失并且/或者需要在存儲(chǔ)器中維護(hù)額 外的結(jié)構(gòu)。虛擬化是這樣一種技術(shù),其使得基于處理器的主機(jī)能夠呈現(xiàn)所述主機(jī) 的抽象,使得所述主機(jī)的底層硬件表現(xiàn)為一個(gè)或多個(gè)獨(dú)立操作的虛擬機(jī)。 由此,每個(gè)虛擬機(jī)可以用作獨(dú)立(self-contained)平臺(tái)。通常,虛擬化技術(shù) 被用來(lái)允許多個(gè)客戶操作系統(tǒng)和/或其它客戶軟件共存,并且表面上同時(shí)和 表面上獨(dú)立地在多個(gè)虛擬機(jī)上執(zhí)行,而實(shí)際上是在相同的硬件平臺(tái)上物理 執(zhí)行。虛擬機(jī)可以模仿主機(jī)的硬件,或者作為選擇,共同呈現(xiàn)不同的硬件 抽象。虛擬化系統(tǒng)向在虛擬機(jī)中操作的客戶軟件提供一組資源(例如,處理 器、存儲(chǔ)器、I/O設(shè)備),并且可以將物理主機(jī)的一些或所有部件映射到所 述虛擬機(jī)中,或者創(chuàng)建完全虛擬的部件。所述虛擬化系統(tǒng)由此被稱為向客戶軟件提供虛擬的裸露機(jī)器接口。在一些實(shí)施例中,虛擬化系統(tǒng)可以包括控制主機(jī)的虛擬機(jī)監(jiān)視器(VMM)。 VMM向在虛擬機(jī)(VM)中執(zhí)行的客 戶軟件提供一組資源,比如處理器、存儲(chǔ)器和I/0設(shè)備。VMM可以將物理 主機(jī)的一些或所有部件映射到所述虛擬機(jī)中,并且可以創(chuàng)建在VMM中以 軟件進(jìn)行仿真的完全虛擬的部件,所述部件被包括在所述虛擬機(jī)中(例如, 虛擬I/0設(shè)備)。如上所述的特權(quán)程序隨后可以在所述虛擬化系統(tǒng)的VM內(nèi),在所述VM 內(nèi)的特權(quán)環(huán)境內(nèi)執(zhí)行。例如,如果Linux操作系統(tǒng)正在虛擬化系統(tǒng)的一個(gè) VM內(nèi)運(yùn)行,則特權(quán)程序可以在基于Linux的VM的ring-0或ring-3內(nèi)執(zhí)行。 諸如Intd⑧處理器及其它處理器的處理器可以通常被設(shè)計(jì)為允許由所 述處理器對(duì)來(lái)自存儲(chǔ)器的數(shù)據(jù)進(jìn)行高速緩存。此外,訪問(wèn)存儲(chǔ)器中的數(shù)據(jù) 需要針對(duì)系統(tǒng)處理器或多個(gè)處理器中的高速緩存結(jié)構(gòu)的內(nèi)容所采取的一個(gè) 或多個(gè)動(dòng)作。這些動(dòng)作在此被稱作探聽(tīng)(snooping)特性。此外,可以選擇 特定的處理器來(lái)允許對(duì)存儲(chǔ)器訪問(wèn)進(jìn)行動(dòng)態(tài)重排序。由處理器使用來(lái)訪問(wèn) 存儲(chǔ)器中的位置(location)的高速緩存(高速緩存能力)類型(如果存在 的話),探聽(tīng)特性和是否為該位置啟動(dòng)對(duì)存儲(chǔ)器訪問(wèn)的動(dòng)態(tài)重排序確定所述 存儲(chǔ)器單元的特定行為,例如,所述存儲(chǔ)器位置是否正確支持排序操作或 讀取的副作用。與存儲(chǔ)器行為相關(guān)的這些屬性及其它屬性被稱作存儲(chǔ)器類 型,并且可以使用各種系統(tǒng)標(biāo)記和寄存器為給定的存儲(chǔ)器位置和訪問(wèn)事件 指定上述屬性。例如,存儲(chǔ)器類型可以包括"不可高速緩存"、"混合寫(xiě)入"、 "直寫(xiě)"、"回寫(xiě)"和"寫(xiě)保護(hù)"。對(duì)于每個(gè)存儲(chǔ)器訪問(wèn),存儲(chǔ)器類型范圍寄 存器(MTRR)、頁(yè)面屬性表、頁(yè)面表和其它處理器控制寄存器字段,可以 確定正訪問(wèn)的線性地址或物理地址的相關(guān)存儲(chǔ)器類型。處理器所采用的通 信協(xié)議可以根據(jù)正訪問(wèn)的存儲(chǔ)器位置的存儲(chǔ)器類型而變化。
圖1描述了一個(gè)實(shí)施例中的虛擬化環(huán)境。圖2描述了一個(gè)實(shí)施例中的具有受保護(hù)存儲(chǔ)器區(qū)域的虛擬化環(huán)境。 圖3描述了一個(gè)實(shí)施例中的處理流程。圖4描述了一個(gè)實(shí)施例中的處理流程。
具體實(shí)施方式
在一個(gè)實(shí)施例中,虛擬化系統(tǒng)可以在用于虛擬化的硬件中得到支持。在該實(shí)施例中,VMM使用硬件虛擬化體系中的工具向虛擬機(jī)提供服務(wù),并 且對(duì)在主機(jī)上執(zhí)行的多個(gè)虛擬機(jī)以及在這些虛擬機(jī)之間提供保護(hù)。通常, VMM在其中操作的存儲(chǔ)器空間是主機(jī)物理存儲(chǔ)器的一部分,對(duì)于所述 VMM所服務(wù)的任何虛擬機(jī),所述主機(jī)物理存儲(chǔ)器都是不可訪問(wèn)的。圖1圖示了虛擬機(jī)環(huán)境100的一個(gè)實(shí)施例。在該實(shí)施例中,基于處理 器的平臺(tái)或"裸露平臺(tái)"116可以執(zhí)行VMM 112。雖然所述VMM典型地 以軟件來(lái)實(shí)現(xiàn),但是可以進(jìn)行仿真且將虛擬的裸露機(jī)器接口輸出到更高級(jí) 別軟件。這種更高級(jí)別軟件可以包括標(biāo)準(zhǔn)OS、實(shí)時(shí)0S,或者可以是剝離(stripped-down)環(huán)境,所述剝離環(huán)境具有有限操作系統(tǒng)功能并且在一些實(shí) 施例中可以不包括在標(biāo)準(zhǔn)OS中典型可用的OS工具。例如,作為選擇,VMM 112可以在另一個(gè)VMM內(nèi)運(yùn)行,或者使用另一個(gè)VMM的服務(wù)運(yùn)行。例如, 在一些實(shí)施例中,VMM可以以硬件、軟件、固件或各種技術(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在邏輯上包括至少一個(gè)處理器118 和存儲(chǔ)器120。處理器118可以是能夠執(zhí)行程序的任何類型的處理器,比如 微處理器、數(shù)字信號(hào)處理器、微控制器等。在一些實(shí)施例中,所述處理器 可以包括用于執(zhí)行的微代碼、可編程邏輯或硬編碼邏輯。雖然圖1僅示出 了一個(gè)這樣的處理器118,但是在一個(gè)實(shí)施例中,在系統(tǒng)中可以有一個(gè)或多 個(gè)處理器。此外,處理器118可以包括支持多個(gè)線程等的多個(gè)內(nèi)核等。在 不同實(shí)施例中,存儲(chǔ)器120可以包括硬盤、軟盤、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、 只讀存儲(chǔ)器(ROM)、閃速存儲(chǔ)器、以上設(shè)備的任意組合,或者可由處理器 118讀取的任何其它類型的機(jī)器介質(zhì)。存儲(chǔ)器120可以存儲(chǔ)用于執(zhí)行程序執(zhí) 行和其它方法實(shí)施例的指令和/或數(shù)據(jù)。VMM 112向客戶軟件呈現(xiàn)一個(gè)或多個(gè)虛擬機(jī)的抽象,所述一個(gè)或多個(gè) 虛擬機(jī)的抽象可以向各個(gè)客戶提供相同或不同的抽象。圖1示出了兩個(gè)虛擬機(jī),102和114。在每個(gè)虛擬機(jī)上運(yùn)行的客戶軟件,比如客戶軟件101和 111,可以包括客戶OS (比如客戶OS 104或106)和各種客戶軟件應(yīng)用程 序108和110??蛻糗浖?01和111可以訪問(wèn)虛擬機(jī)內(nèi)的物理資源(例如, 處理器寄存器、存儲(chǔ)器和I/O設(shè)備),其中客戶軟件101和111在所述虛擬 機(jī)上運(yùn)行并且執(zhí)行其它功能。例如,根據(jù)虛擬機(jī)102和114中所呈現(xiàn)的處 理器和平臺(tái)的體系,客戶軟件101和111希望訪問(wèn)所有寄存器、高速緩存、 結(jié)構(gòu)、1/0設(shè)備、存儲(chǔ)器等。在一個(gè)實(shí)施例中,處理器118根據(jù)虛擬機(jī)控制結(jié)構(gòu)(VMCS) 124中存 儲(chǔ)的數(shù)據(jù)來(lái)控制虛擬機(jī)102和114的操作。VMCS 124為可以包含客戶軟件 101和111的狀態(tài)、VMM 112的狀態(tài)、指示VMM 112希望如何對(duì)客戶軟件 101和111的操作進(jìn)行控制的執(zhí)行控制信息、VMM 112和虛擬機(jī)之間的信 息控制轉(zhuǎn)移等等的結(jié)構(gòu)。處理器118從VMCS 124讀取信息以確定虛擬機(jī) 的執(zhí)行環(huán)境并且約束其行為。在一個(gè)實(shí)施例中,VMCS 124存儲(chǔ)在存儲(chǔ)器 120中。在一些實(shí)施例中,多個(gè)VMCS結(jié)構(gòu)被用來(lái)支持多個(gè)虛擬機(jī)。能夠由客戶軟件(例如101,包括客戶OS 104和應(yīng)用程序108)訪問(wèn) 的資源可以被歸類為"特權(quán)的"或"非特權(quán)的"。對(duì)于特權(quán)的資源而言,VMM 112促進(jìn)客戶軟件所需的功能,同時(shí)保留對(duì)這些特權(quán)資源的最終控制。此外, 每個(gè)客戶軟件101和111希望處理各種平臺(tái)事件,比如異常(例如,頁(yè)面 故障、通常保護(hù)故障等)、中斷(例如,硬件中斷、軟件中斷)以及平臺(tái)事 件(例如,初始化(INIT)和系統(tǒng)管理中斷(SMI))。這些平臺(tái)事件中的一 些平臺(tái)事件是"特權(quán)的",這是因?yàn)樗鼈儽仨氂蒝MM 112來(lái)處理以確保虛 擬機(jī)102和114的正確操作,以及對(duì)客戶軟件以及在客戶軟件之間進(jìn)行保 護(hù)??蛻舨僮飨到y(tǒng)和客戶應(yīng)用程序兩者都可以嘗試訪問(wèn)特權(quán)資源,并且都 可以導(dǎo)致或經(jīng)歷特權(quán)事件。特權(quán)平臺(tái)事件和對(duì)特權(quán)資源的訪問(wèn)嘗試在此共 同被稱作"特權(quán)事件"或"虛擬化事件"。圖2更為詳細(xì)地描述了圖1的系統(tǒng)。為了簡(jiǎn)要,在系統(tǒng)100中僅示出 了 VM101中的一個(gè)。在該實(shí)施例中,VM101包括應(yīng)用程序108和OS 104。 一個(gè)或多個(gè)應(yīng)用程序或部分OS可以是一組受保護(hù)程序中的一個(gè)受保護(hù)程 序210,對(duì)于該組受保護(hù)程序希望存儲(chǔ)器映象保護(hù)。諸如在211所描述的一 個(gè)受保護(hù)程序的受保護(hù)程序可以包括代碼和數(shù)據(jù)。當(dāng)然,應(yīng)當(dāng)清楚的是,塊210和211是程序代碼和數(shù)據(jù)的抽象表示。通常,程序代碼和數(shù)據(jù)可以 駐留在諸如盤片驅(qū)動(dòng)器、閃存驅(qū)動(dòng)器或其它存儲(chǔ)裝置的存儲(chǔ)設(shè)備上,并且 隨后被加載到內(nèi)存120以用于執(zhí)行。當(dāng)這樣的程序代碼和數(shù)據(jù)被加載到存 儲(chǔ)器中時(shí),其可以占據(jù)如在220所描述的一個(gè)或多個(gè)可能的不同存儲(chǔ)器的 一個(gè)區(qū)域或一組區(qū)域。受保護(hù)程序的保護(hù)則可以包括220處的存儲(chǔ)器位置 或區(qū)域的范圍的保護(hù)。
在一個(gè)實(shí)施例中,基于硬件的保護(hù)機(jī)制可以被用來(lái)嘗試防止對(duì)受保護(hù) 程序進(jìn)行基于存儲(chǔ)器的攻擊。在這樣的機(jī)制中,240處的處理器或多個(gè)處理 器118中的一個(gè)或多個(gè)寄存器可以被用來(lái)指定需要被保護(hù)的存儲(chǔ)器范圍。 這些寄存器可以是一個(gè)或多個(gè)寄存器,并且可以使用各種編碼機(jī)制來(lái)指定 需要被保護(hù)的存儲(chǔ)器位置的范圍以及各種類型的存儲(chǔ)器訪問(wèn)保護(hù)。在其它 實(shí)施例中,存儲(chǔ)器控制器260可以被用來(lái)有選擇地阻止對(duì)于特定存儲(chǔ)器范 圍的特定類型的訪問(wèn)。在如圖2所描述的一些實(shí)施例中,兩種機(jī)制都可以 存在。
在該實(shí)施例中,存儲(chǔ)器訪問(wèn)的基本模式是
1. 無(wú)訪問(wèn)當(dāng)存儲(chǔ)器的區(qū)域被標(biāo)記為無(wú)訪問(wèn)時(shí),對(duì)該區(qū)域的任何訪問(wèn) 都會(huì)生成一個(gè)動(dòng)作,比如中斷、故障或異常信號(hào)。
2. 只讀訪問(wèn)當(dāng)存儲(chǔ)器的區(qū)域被標(biāo)記為只讀訪問(wèn)時(shí),可以進(jìn)行對(duì)該區(qū)
域的讀取訪問(wèn),而沒(méi)有任何動(dòng)作。然而,對(duì)該區(qū)域的存儲(chǔ)器進(jìn)行修改的任 何嘗試會(huì)生成一個(gè)動(dòng)作。
3. 無(wú)保護(hù)如果利用無(wú)保護(hù)屬性對(duì)存儲(chǔ)器的區(qū)域進(jìn)行標(biāo)記,則對(duì)于該
區(qū)域的任何類型的訪問(wèn)被允許,并且所述訪問(wèn)進(jìn)行而不會(huì)在訪問(wèn)時(shí)生成動(dòng) 作。
在一個(gè)實(shí)施例中,通過(guò)在硬件中使用在如圖2中的240所描述的那些 特殊用途寄存器,諸如x86體系的處理器體系可以被擴(kuò)展或修改為包括部 分基于存儲(chǔ)器類型指定(specification),即存儲(chǔ)器類型范圍寄存器(MTRR), 的現(xiàn)有能力的存儲(chǔ)器保護(hù)能力。新的能力可以被稱作存儲(chǔ)器保護(hù)范圍寄存 器(MPRR),并且是基于x86族體系中的現(xiàn)有MTRR能力或者作為全新的
能力來(lái)創(chuàng)建的。
以與MTRR能力中所使用的以及本領(lǐng)域已知的相類似的方式, 一個(gè)實(shí)施例中的MPRR將支持該實(shí)施例中的存儲(chǔ)器區(qū)域的三種基本操作模式。在 一個(gè)實(shí)施例中,MPRR寄存器中的位字段注冊(cè)來(lái)指定存儲(chǔ)器范圍以及每個(gè) 存儲(chǔ)器范圍的訪問(wèn)模式。對(duì)于本領(lǐng)域技術(shù)人員而言,用于實(shí)現(xiàn)指定進(jìn)行保 護(hù)的存儲(chǔ)器范圍的該方法的許多特定方式是顯而易見(jiàn)的。在該實(shí)施例中, 一旦指定了存儲(chǔ)器范圍以及該范圍的存儲(chǔ)器訪問(wèn)模式,則以與所指定訪問(wèn) 模式不一致的方式在指定范圍中對(duì)存儲(chǔ)器進(jìn)行的訪問(wèn)導(dǎo)致調(diào)用VMM的異 常。
在另一個(gè)實(shí)施例中,諸如在260所描述的存儲(chǔ)器控制器可以被用來(lái)指 定受保護(hù)的存儲(chǔ)器范圍以及該范圍的訪問(wèn)模式。在圖2中由塊260描述的 用于實(shí)現(xiàn)存儲(chǔ)器控制邏輯的芯片組或其它硬件可以包括配置能力,從而允 許該實(shí)施例中的存儲(chǔ)器控制器芯片組有選擇地阻止或允許對(duì)存儲(chǔ)器位置或 頁(yè)面地址的特定范圍進(jìn)行特定類型的存儲(chǔ)器訪問(wèn)。由此,所述存儲(chǔ)器控制 器邏輯可以支持多種存儲(chǔ)器訪問(wèn)模式,并且響應(yīng)于對(duì)存儲(chǔ)器位置的指定范 圍中的頁(yè)面進(jìn)行與指定模式不一致的訪問(wèn)而產(chǎn)生異?;蛏墒录?br>
使用上述存儲(chǔ)器控制器來(lái)保護(hù)存儲(chǔ)器范圍的一個(gè)潛在問(wèn)題是如果訪 問(wèn)是在該位置的內(nèi)容己經(jīng)被高速緩存之后進(jìn)行,并且在高速緩存中發(fā)生, 則所述存儲(chǔ)器控制器通常無(wú)法響應(yīng)于對(duì)存儲(chǔ)器位置所進(jìn)行的訪問(wèn)。由此, 惡意程序或惡意軟件可能修改高速緩存的內(nèi)容,而不會(huì)被存儲(chǔ)器控制器發(fā) 現(xiàn)。在這種情形下,可以例如通過(guò)設(shè)置x86實(shí)施例中的MTRR中的字段和 值,利用存儲(chǔ)器類型系統(tǒng)的附加配置來(lái)增加所述存儲(chǔ)器控制器變化。該過(guò) 程隨后控制受保護(hù)的存儲(chǔ)器區(qū)域中的被高速緩存的內(nèi)容的特性。由此,例 如,在該實(shí)施例中,被芯片組配置指定為"無(wú)訪問(wèn)"的存儲(chǔ)器頁(yè)面將在MTRR
中被指定為"不可高速緩存";由芯片組配置指定為"只讀訪問(wèn)"的那些頁(yè) 面將通過(guò)使用MTRR而被指定為"不可高速緩存"、"直寫(xiě)"或"寫(xiě)保護(hù)"。 在上述情形的每一種情形中,所述指定將分別防止對(duì)頁(yè)面進(jìn)行高速緩存, 或防止在高速緩存中對(duì)那些頁(yè)面進(jìn)行寫(xiě)操作,或者在高速緩存進(jìn)行寫(xiě)操作 時(shí)強(qiáng)制對(duì)存儲(chǔ)器進(jìn)行寫(xiě)操作。在其它實(shí)施例中,可以使用與存儲(chǔ)器的被高 速緩存內(nèi)容相似的保護(hù)系統(tǒng),然而所使用的條件和機(jī)制可以不同。VMM可 以被用來(lái)確保對(duì)于存儲(chǔ)器范圍指定給存儲(chǔ)器控制器的保護(hù)和指定給MTRR 的被高速緩存的存儲(chǔ)器類型之間的一致性。這是通過(guò)在配置時(shí),即當(dāng)所述存儲(chǔ)器控制器被配置來(lái)進(jìn)行存儲(chǔ)器保護(hù)時(shí),對(duì)其進(jìn)行調(diào)用來(lái)實(shí)現(xiàn)的;以及通過(guò)在清除所述存儲(chǔ)器控制器配置時(shí)對(duì)其進(jìn)行調(diào)用來(lái)實(shí)現(xiàn)的。在一些實(shí)施例中,由存儲(chǔ)器控制器邏輯所揭示的特殊I/O端口可以被用 來(lái)配置各種存儲(chǔ)器區(qū)域;作為選擇,在其它實(shí)施例中,所述存儲(chǔ)器控制器 可以對(duì)一些特殊的高級(jí)可編程中斷控制器(APIC)事務(wù)或其等價(jià)物進(jìn)行響 應(yīng),以便指定用于存儲(chǔ)器保護(hù)的存儲(chǔ)器范圍和訪問(wèn)模式。對(duì)存儲(chǔ)器范圍的 訪問(wèn)由此受到保護(hù),并且與所述范圍的指定訪問(wèn)模式的不一致將會(huì)為系統(tǒng) 的VMM創(chuàng)建異?;蛑袛唷R韵聟⒖紙D3描述在此種中斷之后所進(jìn)行的處 理。此外,關(guān)鍵的是,存儲(chǔ)器范圍和它們的訪問(wèn)模式的指定也是受保護(hù)的 動(dòng)作。由此,在MPRR被用來(lái)指定受保護(hù)的存儲(chǔ)器范圍的實(shí)施例中,用于 修改MPRR的指令可以生成VMEXIT或僅能夠由VMM服務(wù)的中斷。例如, x86指令WRMSR被用來(lái)修改MTRR,并且可以被擴(kuò)展為修改和設(shè)置MPRR 的字段中的值。由此,在VM內(nèi)對(duì)WRMSR指令的調(diào)用可以導(dǎo)致VMM中 斷,從而允許VMM檢查WRMSR指令是否對(duì)MPRR進(jìn)行不正確或惡意修 改。類似地,在存儲(chǔ)器控制器芯片組或邏輯被用來(lái)執(zhí)行存儲(chǔ)器保護(hù)的實(shí)施 例中,訪問(wèn)特殊I/O端口或執(zhí)行APIC事務(wù)或其等價(jià)物來(lái)配置存儲(chǔ)器保護(hù)將 自動(dòng)使得VMEXIT允許VMM對(duì)這些動(dòng)作進(jìn)行管理。圖3更高級(jí)別地描述了在一個(gè)實(shí)施例中,首先在受保護(hù)程序被加載到 存儲(chǔ)器時(shí)(在305-320)并隨后在所述受保護(hù)程序被調(diào)度而在VM中運(yùn)行時(shí) (在325-355)所發(fā)生的處理。當(dāng)受保護(hù)的程序在305被加載到存儲(chǔ)器中時(shí),VM中的OS可以配置該 實(shí)施例中的MPRR以保護(hù)所述受保護(hù)程序的存儲(chǔ)器位置范圍。該動(dòng)作通常 由VMM截取,所述VMM隨后可以對(duì)請(qǐng)求以及請(qǐng)求保護(hù)的程序的有效性 進(jìn)行驗(yàn)證??梢栽诔绦蛟?15被加載到存儲(chǔ)器中之前,以如上在相關(guān)申請(qǐng) 中所參考的共同提交的申請(qǐng)No.11/173,851中所描述的方式對(duì)程序完整性進(jìn) 行驗(yàn)證。接著,可以在320將控制返回到VM以進(jìn)行正常運(yùn)行時(shí)間的操作。在這樣的操作期間,在325,所述受保護(hù)程序可以被調(diào)度執(zhí)行。 一旦開(kāi) 始執(zhí)行所述程序,330,在一些情形中,會(huì)發(fā)生保護(hù)侵犯(protection violation)。這通常會(huì)是在VM中執(zhí)行的過(guò)程嘗試訪問(wèn)所述程序的受保護(hù)部分,包括由 所述程序所進(jìn)行的非預(yù)料訪問(wèn)對(duì)其部分代碼或數(shù)據(jù)進(jìn)行訪問(wèn)。在該實(shí)施例中,該侵犯會(huì)觸發(fā)異?;騐MEXIT,對(duì)于一個(gè)實(shí)例而言,導(dǎo)致控制在335 返回到VMM。此時(shí),VMM可以隨后對(duì)訪問(wèn)的位置以及發(fā)起所述訪問(wèn)的源 進(jìn)行驗(yàn)證,340,并且確定所述訪問(wèn)是否允許。如果允許,則VMM會(huì)隨后 重新配置MPRR以允許訪問(wèn),345,并且所述受保護(hù)程序可以在控制返回 VM之后恢復(fù)正常執(zhí)行,335。否則,在350, VMM可以采取其它動(dòng)作,諸 如生成系統(tǒng)故障、中止VM中的程序,或者可以采取許多其它的補(bǔ)救動(dòng)作, 諸如警報(bào)程序通知、向管理員發(fā)送消息或?qū)⑹录浫肴罩疽约捌渌褐獎(jiǎng)?作,以在VM存儲(chǔ)器中防止和/或記錄潛在的有害動(dòng)作。圖3的流程圖中的動(dòng)作是一個(gè)實(shí)施例所特有的。在其它實(shí)施例中,在 310的MPRR配置步驟可由如前所述的存儲(chǔ)器控制器芯片組的配置來(lái)代替, 以實(shí)現(xiàn)如前所述的存儲(chǔ)器范圍的類似保護(hù),以及同時(shí)進(jìn)行的對(duì)諸如MTRR 之類的高速緩存類型控制寄存器的重新配置。在該實(shí)施例中,由于存儲(chǔ)器 控制器芯片組或MTRR發(fā)信號(hào)通知對(duì)受保護(hù)存儲(chǔ)器位置或處理器高速緩存 中的其所高速緩存的內(nèi)容進(jìn)行的訪問(wèn),所以可以如所描述地發(fā)生在335的 故障生成。許多其它的變化也是可以的。圖4描述了一個(gè)實(shí)施例中的處理,其示出了當(dāng)存儲(chǔ)器保護(hù)在如上所述 的系統(tǒng)中是活動(dòng)時(shí)如何處理環(huán)境變化。如果受保護(hù)程序正在執(zhí)行,410,并 且發(fā)生中斷或其它環(huán)境變化,420,則VMM可以將MPRR重置為預(yù)定配置 并且記錄該時(shí)刻正在執(zhí)行的任意受保護(hù)程序的執(zhí)行位置,430。 一旦中斷被 處理,并且其它過(guò)程執(zhí)行以下中斷服務(wù),440,則在450, MPRR可以接著 檢測(cè)如前所述的對(duì)受保護(hù)存儲(chǔ)器范圍的侵犯。接著發(fā)生的處理與圖3所示 的相類似。此時(shí),VMM接著可以對(duì)訪問(wèn)的位置以及發(fā)起訪問(wèn)的源進(jìn)行驗(yàn)證, 470,并且確定所述訪問(wèn)是否是可允許的。此外,將訪問(wèn)的位置和狀態(tài)與環(huán) 境切換之前所保存的狀態(tài)相比較。如果狀態(tài)匹配,也就是如果所述訪問(wèn)是 可允許的,則VMM可以將MPRR重新配置為允許訪問(wèn)或釋放(disengage) 它們,480,并且受保護(hù)程序可以在控制返回VM之后恢復(fù)正常的執(zhí)行,490。 否則,在460, VMM可以采取其它動(dòng)作,諸如生成系統(tǒng)故障、中止VM中 的程序,或者可以采取已知的許多其它補(bǔ)救動(dòng)作,以防止VM存儲(chǔ)器中潛在的有害動(dòng)作。如前所述,基于VMM的實(shí)施例的許多變化是可以的。圖1所示的虛擬機(jī)僅僅是一個(gè)實(shí)施例的一種表示,在其它實(shí)施例中,在主機(jī)上執(zhí)行的虛 擬機(jī)的實(shí)際數(shù)目可以從一個(gè)變化到多個(gè)。對(duì)于不同實(shí)施例中的不同事件,VMM和VMCS的部分可以以硬件或軟件來(lái)實(shí)現(xiàn)。在一些實(shí)施例中,由VMM 所提供的基本功能可以變化。每個(gè)實(shí)施例可以定義不同組的虛擬化事件。 上述處理發(fā)生在基于x86概念和功能的實(shí)施例中。然而,其它實(shí)施例可能 處于具有類似或等同功能的其它體系中。在實(shí)施例中可以使用許多不同的 數(shù)據(jù)結(jié)構(gòu)和算法流程。在一些實(shí)施例中,存儲(chǔ)器范圍寄存器可以不存在; 在其它實(shí)施例中,訪問(wèn)控制器可以不存在。發(fā)現(xiàn)無(wú)效訪問(wèn)所采取的動(dòng)作可 以變化。在一些實(shí)施例中,可以生成錯(cuò)誤消息、中止或內(nèi)核恐慌(kernel panic)。在其它實(shí)施例中,可以將警告記入日志。在之前的說(shuō)明中,出于解釋的目的,為了提供對(duì)所描述實(shí)施例的全面 理解而給出了多個(gè)特定的細(xì)節(jié),然而,本領(lǐng)域技術(shù)人員將意識(shí)到許多其它 的實(shí)施例可以無(wú)需這些特定細(xì)節(jié)來(lái)實(shí)現(xiàn)。以上的詳細(xì)說(shuō)明中的一些部分是針對(duì)在基于處理器的系統(tǒng)內(nèi)對(duì)數(shù)據(jù)位 進(jìn)行的操作的算法和符號(hào)表示而給出的。這些算法說(shuō)明和表示是本領(lǐng)域技 術(shù)人員用來(lái)最為有效地向所述領(lǐng)域的其它人員傳遞他們的工作實(shí)質(zhì)的手 段。這些操作是需要物理量的物理處理的操作。這些量可以采用電、磁、 光或能夠存儲(chǔ)、傳輸、合并、比較和以別的方式處理的其它物理信號(hào)的形 式。主要是出于一般使用的原因,已經(jīng)證明的是,在將這些信號(hào)稱作位、值、元素、符號(hào)、字符、術(shù)語(yǔ)、數(shù)字等時(shí)是方便的。然而,應(yīng)當(dāng)牢記的是,所有這些和類似術(shù)語(yǔ)是與合適的物理量相關(guān)聯(lián)的,并且僅僅是應(yīng)用于這些物理量的便利標(biāo)簽。除非在說(shuō)明書(shū)中明確地以 別的方式特別指出,諸如"執(zhí)行"或"處理"或"計(jì)算"或"運(yùn)算"或"確 定"等術(shù)語(yǔ)指的是基于處理器的系統(tǒng)動(dòng)作和處理,或?qū)⒈硎緸樗龌谔?理器的系統(tǒng)的存儲(chǔ)裝置內(nèi)的物理量的數(shù)據(jù)處理和轉(zhuǎn)換為類似表示的其它數(shù) 據(jù)的類似電子計(jì)算設(shè)備,或其它這種存儲(chǔ)、傳輸或顯示設(shè)備。在這些實(shí)施例的說(shuō)明中,可以參考附圖。在附圖中,相同的數(shù)字表示 在整個(gè)若干示圖中基本上相似的部件??梢岳闷渌鼘?shí)施例,并且可以進(jìn)行結(jié)構(gòu)、邏輯和電氣變化。此外,應(yīng)當(dāng)理解的是,各個(gè)實(shí)施例盡管不同, 但是不必互相排斥。例如,在一個(gè)實(shí)施例中所描述的特定特征、結(jié)構(gòu)或特 性可以包括在其它實(shí)施例中。此外,在處理器中實(shí)現(xiàn)的實(shí)施例的設(shè)計(jì)可以經(jīng)歷從創(chuàng)建到仿真到制造 的各個(gè)階段。表示設(shè)計(jì)的數(shù)據(jù)可以以多種方式來(lái)表示所述設(shè)計(jì)。首先,如 在仿真中有用的,可以使用硬件描述語(yǔ)言或其它功能描述語(yǔ)言來(lái)表示硬件。 此外,在設(shè)計(jì)過(guò)程的一些階段可以生成具有邏輯和/或晶體管門電路的電路 級(jí)模型。而且,在一些階段,大多數(shù)設(shè)計(jì)達(dá)到數(shù)據(jù)級(jí),所述數(shù)據(jù)表示硬件 模型中的各種設(shè)備的物理布置。在使用常規(guī)的半導(dǎo)體布線技術(shù)的情況下, 表示硬件模型的數(shù)據(jù)可以是用于指定在用來(lái)生成集成電路的掩膜的不同掩 膜層上存在或不存在各種特征的數(shù)據(jù)。在所述設(shè)計(jì)的任何表示中,所述數(shù) 據(jù)可以存儲(chǔ)在任何形式的機(jī)器可讀介質(zhì)中。所述機(jī)器可讀介質(zhì)可以是調(diào)制 或以別的方式生成的用來(lái)傳輸這樣的信息的光或電波、存儲(chǔ)器或者諸如盤 之類的磁或光存儲(chǔ)裝置。任何這些介質(zhì)可以"承載"或"指示"設(shè)計(jì)或軟 件信息。當(dāng)指示或承載代碼或設(shè)計(jì)的電載波被傳輸,達(dá)到執(zhí)行電信號(hào)的復(fù) 制、緩沖或重傳的程度時(shí),制造新的副本。這樣,通信提供者或網(wǎng)絡(luò)提供 者可以制造構(gòu)成或表示一個(gè)實(shí)施例的物品(載波)的副本。實(shí)施例可以被作為程序產(chǎn)品提供,所述程序產(chǎn)品可以包括機(jī)器可讀介 質(zhì),所述機(jī)器可讀介質(zhì)上存儲(chǔ)有數(shù)據(jù),當(dāng)所述數(shù)據(jù)被機(jī)器訪問(wèn)時(shí),可以使 得所述機(jī)器執(zhí)行與所要求的主題相符合的過(guò)程。機(jī)器可讀介質(zhì)可包括軟盤、光盤、DVD-ROM盤、DVD-RAM盤、DVD-RW盤、DVD+RW盤、CD-R 盤、CD-RW盤、CD-ROM盤和磁光盤、ROM、 RAM、 EPROM、 EEPROM、磁或光卡、閃存存儲(chǔ)器或者適合于存儲(chǔ)電子指令的其它類型的媒介/機(jī)器可 讀介質(zhì),但并不局限于此。此外,實(shí)施例還可以作為程序產(chǎn)品進(jìn)行下載, 其中所述程序可以借助于在載波或其它傳播介質(zhì)中包含的數(shù)據(jù)信號(hào),經(jīng)由 通信鏈接(例如,調(diào)制解調(diào)器或網(wǎng)絡(luò)連接)從遠(yuǎn)程數(shù)據(jù)源傳輸?shù)秸?qǐng)求設(shè)備。 己經(jīng)以其最基本的形式對(duì)許多方法進(jìn)行了描述,但是可以向任何方法 添加或從其刪除步驟,并且可以向任何所描述的消息添加或從其減去信息, 而不會(huì)背離所要求主題的基本范圍。對(duì)于本領(lǐng)域技術(shù)人員顯而易見(jiàn)的是, 可以進(jìn)行許多進(jìn)一步的修改和改正。特定的實(shí)施例并不是被提供來(lái)限制所要求的主題,而是對(duì)其進(jìn)行說(shuō)明。所要求主題的范圍并不由以上所提供的 特定示例確定,而是僅由以下權(quán)利要求來(lái)確定。
權(quán)利要求
1、一種方法,包括由基于虛擬處理器的系統(tǒng)的硬件檢測(cè)對(duì)存儲(chǔ)器的識(shí)別區(qū)域進(jìn)行指定類型的存儲(chǔ)器訪問(wèn);并且響應(yīng)于所述檢測(cè),為所述基于虛擬存儲(chǔ)器的系統(tǒng)的虛擬機(jī)監(jiān)視器(VMM)生成中斷。
2、 如權(quán)利要求l所述的方法,進(jìn)一步包括所述VMM至少部分地通 過(guò)識(shí)別所述存儲(chǔ)器訪問(wèn)的源并至少部分地基于所述識(shí)別采取動(dòng)作,而對(duì)所 述中斷進(jìn)行響應(yīng),其中所述動(dòng)作進(jìn)一步包括以下至少一個(gè)如果所述存儲(chǔ)器訪問(wèn)的源是程序中的有效存儲(chǔ)器位置,則對(duì)所述硬件 進(jìn)行重新配置,以允許所述存儲(chǔ)器訪問(wèn);如果所述存儲(chǔ)器訪問(wèn)的源不是程序中的有效入口點(diǎn),則拒絕所述訪問(wèn);和執(zhí)行通知?jiǎng)幼鳌?br>
3、 如權(quán)利要求l所述的方法,進(jìn)一步包括識(shí)別一個(gè)或多個(gè)寄存器中的 存儲(chǔ)器位置范圍;并且指定對(duì)所述一個(gè)或多個(gè)寄存器中的存儲(chǔ)器位置范圍 的訪問(wèn)類型。
4、 如權(quán)利要求3所述的方法,其中所述訪問(wèn)類型進(jìn)一步包括無(wú)訪問(wèn)類 型、只讀訪問(wèn)類型和無(wú)保護(hù)訪問(wèn)類型中的一種。
5、 如權(quán)利要求l所述的方法,進(jìn)一步包括對(duì)存儲(chǔ)器控制器進(jìn)行配置, 所述配置步驟進(jìn)一步包括識(shí)別所述存儲(chǔ)器控制器的存儲(chǔ)器位置范圍;并且 指定對(duì)所述存儲(chǔ)器控制器的存儲(chǔ)器位置范圍的訪問(wèn)類型。
6、 如權(quán)利要求5所述的方法,其中所述訪問(wèn)類型進(jìn)一步包括無(wú)訪問(wèn)類 型、只讀訪問(wèn)類型和無(wú)保護(hù)訪問(wèn)類型中的一種。
7、 如權(quán)利要求5所述的方法,其中對(duì)所述存儲(chǔ)器控制器進(jìn)行配置進(jìn)一 步包括經(jīng)由預(yù)定I/O端口訪問(wèn)所述存儲(chǔ)器控制器。
8、 如權(quán)利要求6所述的方法,其中對(duì)所述存儲(chǔ)器控制器進(jìn)行配置進(jìn)一 步包括利用APIC事務(wù)訪問(wèn)所述存儲(chǔ)器控制器。
9、 如權(quán)利要求l所述的方法,進(jìn)一步包括所述VMM指定所述硬件的 存儲(chǔ)器位置范圍以及對(duì)所述存儲(chǔ)器位置范圍的訪問(wèn)類型,所述訪問(wèn)類型至 少不允許對(duì)所述范圍的存儲(chǔ)器位置進(jìn)行修改,其中所述VMM和所述VMM 的配置區(qū)域存在于所述存儲(chǔ)器位置范圍內(nèi)。
10、 如權(quán)利要求1所述的方法,進(jìn)一步包括所述VMM指定所述硬件 的存儲(chǔ)器位置范圍以及對(duì)所述存儲(chǔ)器位置范圍的訪問(wèn)類型,所述訪問(wèn)類型 至少不允許對(duì)所述范圍的存儲(chǔ)器位置進(jìn)行修改,其中要保護(hù)的程序存在于 所述存儲(chǔ)器位置范圍內(nèi)。
11、 一種基于處理器的系統(tǒng),包括 處理器,進(jìn)一步包括虛擬化支持邏輯; 存儲(chǔ)器;和硬件邏輯,其用來(lái)檢測(cè)對(duì)存儲(chǔ)器的識(shí)別區(qū)域的存儲(chǔ)器訪問(wèn)的指定類型, 并且響應(yīng)于所述檢測(cè),為所述基于處理器的系統(tǒng)的虛擬機(jī)監(jiān)視器(VMM) 生成中斷。
12、 如權(quán)利要求ll所述的系統(tǒng),其中所述VMM進(jìn)一步至少部分地通 過(guò)識(shí)別所述存儲(chǔ)器訪問(wèn)的源并至少部分地基于所述識(shí)別釆取動(dòng)作而對(duì)所述 中斷進(jìn)行響應(yīng),其中所述動(dòng)作進(jìn)一步包括以下至少一個(gè)如果所述存儲(chǔ)器訪問(wèn)的源是程序中的有效入口點(diǎn),則對(duì)所述硬件進(jìn)行 重新配置以允許所述存儲(chǔ)器訪問(wèn);如果所述存儲(chǔ)器訪問(wèn)的源不是程序中的有效入口點(diǎn),則拒絕所述訪問(wèn);和執(zhí)行通知?jiǎng)幼鳌?br>
13、 如權(quán)利要求ll所述的系統(tǒng),其中所述硬件邏輯進(jìn)一步包括處理器 的一個(gè)或多個(gè)寄存器,以定義存儲(chǔ)器位置的范圍;和指定對(duì)所述一個(gè)或多個(gè)寄存器中的存儲(chǔ)器位置范圍的訪問(wèn)類型。
14、 如權(quán)利要求13所述的系統(tǒng),其中所述訪問(wèn)類型進(jìn)一步包括無(wú)訪問(wèn) 類型、只讀訪問(wèn)類型和無(wú)保護(hù)訪問(wèn)類型中的一種。
15、 如權(quán)利要求ll所述的系統(tǒng),其中所述硬件邏輯進(jìn)一步包括存儲(chǔ)器 控制器,其中存儲(chǔ)器的所述識(shí)別區(qū)域包括由配置過(guò)程為所述存儲(chǔ)器控制器 所識(shí)別的存儲(chǔ)器位置范圍;并且所述指定的存儲(chǔ)器訪問(wèn)類型包括對(duì)所述存 儲(chǔ)器控制器的存儲(chǔ)器位置范圍的訪問(wèn)類型,所述存儲(chǔ)器位置范圍是由所述 配置過(guò)程為所述存儲(chǔ)器控制器所識(shí)別的。
16、 如權(quán)利要求16所述的系統(tǒng),其中所述訪問(wèn)類型進(jìn)一步包括無(wú)訪問(wèn) 類型、只讀訪問(wèn)類型和無(wú)保護(hù)訪問(wèn)類型中的一種。
17、 如權(quán)利要求16所述的系統(tǒng),其中所述配置過(guò)程進(jìn)一步包括經(jīng)由預(yù) 定I/O端口訪問(wèn)所述存儲(chǔ)器控制器。
18、 如權(quán)利要求17所述的系統(tǒng),其中所述配置過(guò)程進(jìn)一步包括利用 APIC事務(wù)訪問(wèn)所述存儲(chǔ)器控制器。
19、 如權(quán)利要求ll所述的系統(tǒng),其中所述VMM進(jìn)一步指定所述硬件 邏輯的存儲(chǔ)器位置范圍以及對(duì)所述存儲(chǔ)器位置范圍的訪問(wèn)類型,所述訪問(wèn) 類型至少不允許對(duì)所述范圍的存儲(chǔ)器位置進(jìn)行修改,其中所述VMM和所 述VMM的配置區(qū)域存在于所述存儲(chǔ)器位置范圍內(nèi)。
20、如權(quán)利要求ll所述的系統(tǒng),其中所述VMM進(jìn)一步指定所述硬件 邏輯的存儲(chǔ)器位置范圍以及對(duì)所述存儲(chǔ)器位置范圍的訪問(wèn)類型,所述訪問(wèn) 類型至少不允許對(duì)所述范圍的存儲(chǔ)器位置進(jìn)行修改,其中要保護(hù)的程序存 在于所述存儲(chǔ)器位置范圍內(nèi)。
全文摘要
基于虛擬處理器的系統(tǒng)的硬件檢測(cè)對(duì)存儲(chǔ)器的識(shí)別區(qū)域的存儲(chǔ)器訪問(wèn)的指定類型,并且響應(yīng)于所述檢測(cè)而生成用于所述基于虛擬處理器的系統(tǒng)的虛擬機(jī)監(jiān)視器(VMM)的中斷。
文檔編號(hào)G06F9/455GK101266635SQ200710303580
公開(kāi)日2008年9月17日 申請(qǐng)日期2007年12月27日 優(yōu)先權(quán)日2006年12月27日
發(fā)明者D·M·德拉姆, G·納加布尚, H·M·科斯拉維, R·L·薩希塔, T·施魯斯勒, U·R·薩瓦岡卡爾 申請(qǐng)人:英特爾公司