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