两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

虛擬機(jī)快速仿真輔助的制作方法

文檔序號(hào):6357712閱讀:193來源:國知局
專利名稱:虛擬機(jī)快速仿真輔助的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及虛擬機(jī)技術(shù),尤其涉及虛擬機(jī)快速仿真。
背景技術(shù)
虛擬機(jī)體系結(jié)構(gòu)多年來已經(jīng)演變?yōu)榘ǖ轿锢碛?jì)算機(jī)系統(tǒng)的輸入/輸出(IO)硬件的不同IO路徑。例如,系統(tǒng)管理程序(hypervisor)可包括仿真的IO路徑。IO控制器仿真器——例如硬件設(shè)備的軟件模塊,其是與硬件設(shè)備足夠相似地做出響應(yīng)以使得該設(shè)備的設(shè)備驅(qū)動(dòng)程序正常地工作——能夠在系統(tǒng)管理程序中執(zhí)行,且用于該IO控制器的驅(qū)動(dòng)程序能夠在虛擬機(jī)中運(yùn)行。在該體系結(jié)構(gòu)中,IO控制器仿真器從集中位置運(yùn)行,且用于服務(wù)所有的虛擬機(jī)。選擇該體系結(jié)構(gòu)是因?yàn)樗鼫p少了每一虛擬機(jī)的存儲(chǔ)器占用量(footprint),并提供了更新一個(gè)仿真器且更新系統(tǒng)中的所有仿真器的方式。系統(tǒng)管理程序中的仿真器可以在驅(qū)動(dòng)程序接觸資源時(shí)運(yùn)行,例如,映射到控制器的存儲(chǔ)器或該控制器的端口和系統(tǒng)管理程序能捕捉請(qǐng)求。系統(tǒng)管理程序可以掛起運(yùn)行該驅(qū)動(dòng)程序的虛擬處理器,并將控制連同驅(qū)動(dòng)程序?qū)懭氲闹狄黄饌鬟f給IO控制器仿真器。IO控制器能夠執(zhí)行并確定驅(qū)動(dòng)程序發(fā)出了什么操作,并代表該驅(qū)動(dòng)程序來執(zhí)行該操作。然而,該體系結(jié)構(gòu)在計(jì)算上是昂貴的,因?yàn)樗枰獙?duì)寫入IO寄存器或存儲(chǔ)器映射的IO空間的每一字節(jié)的上下文切換,并且在完成IO請(qǐng)求之前它可能需要對(duì)數(shù)百個(gè)寄存器的數(shù)百次寫入。除了計(jì)算上昂貴之外,由于仿真器在系統(tǒng)管理程序內(nèi)執(zhí)行,因此它呈現(xiàn)了很大的攻擊面,該攻擊面可能會(huì)被惡意利用來獲取對(duì)物理計(jì)算機(jī)系統(tǒng)的控制。例如,仿真器正在仿真復(fù)雜的硬件狀態(tài)機(jī),并且對(duì)于軟件開發(fā)者而言,確保每一仿真器對(duì)該仿真器能被置于其中的狀態(tài)的每一可能的組合都能工作是相對(duì)困難的。用戶可能生成非法操作的流,這些非法操作會(huì)導(dǎo)致系統(tǒng)管理程序例如允許用戶訪問虛擬機(jī)外部的存儲(chǔ)器或使系統(tǒng)管理程序崩潰。虛擬化系統(tǒng)還包括另一 IO路徑,該另一 IO路徑更容易從安全觀點(diǎn)來分析并需要較少的處理器周期來運(yùn)行,因?yàn)樗粚?duì)IO設(shè)備進(jìn)行仿真。在該路徑中,類虛擬化 (paravirtualization)驅(qū)動(dòng)程序,例如被專門設(shè)計(jì)成在虛擬化環(huán)境中操作的驅(qū)動(dòng)程序,能夠使用諸如SCSI等高級(jí)通信協(xié)議來將IO請(qǐng)求發(fā)送到虛擬化服務(wù)提供者,虛擬化服務(wù)提供者能夠解析該協(xié)議并代表其自身來執(zhí)行IO作業(yè)。該路徑更為安全,因?yàn)樗尸F(xiàn)了較小的攻擊面,并且可使用安全協(xié)議來確定發(fā)送了什么通信。然而,該路徑并不總是可用的。例如, 由于未對(duì)IO設(shè)備創(chuàng)建類虛擬化驅(qū)動(dòng)程序或者用戶尚未安裝類虛擬化驅(qū)動(dòng)程序,該路徑將是不可用的。該路徑還通常依賴于客操作系統(tǒng)提供的服務(wù),并且在引導(dǎo)期間可能是不可用的。因此,仿真路徑不能被簡(jiǎn)單地消除,因?yàn)榇嬖诳赡苄枰摲抡媛窂降那闆r。因此,虛擬機(jī)體系結(jié)構(gòu)已經(jīng)演變到存在用于完成相同的事情的兩條路徑的程度。 一條路徑在計(jì)算上是昂貴的,且呈現(xiàn)大攻擊面;另一條路徑在計(jì)算上要廉價(jià)得多,且呈現(xiàn)較小的攻擊面。由于仿真路徑不能被簡(jiǎn)單地消除,因此需要用于使得仿真路徑在計(jì)算上較不昂貴、更安全、并且更類似于類虛擬化路徑的技術(shù)。

發(fā)明內(nèi)容
本發(fā)明的一示例實(shí)施例描述了一種方法。在該示例中,該方法包括但不限于,將輸入/輸出控制器仿真器配置成在虛擬機(jī)中執(zhí)行;以及將IO消息傳遞信道配置成將輸入/輸出控制器仿真器生成的輸入/輸出請(qǐng)求發(fā)送到虛擬化服務(wù)提供者。除了上述方面,構(gòu)成本發(fā)明一部分的權(quán)利要求、附圖、以及文本中描述了其他方面本發(fā)明的一示例實(shí)施例描述了一種方法。在該示例中,該方法包括但不限于,響應(yīng)于確定映射到輸入/輸出控制器仿真器的寄存器被訪問,執(zhí)行上下文切換來執(zhí)行輸入/輸出控制器仿真器,其中該輸入/輸出控制器仿真器被配置成在虛擬機(jī)內(nèi)執(zhí)行;以及經(jīng)由IO 消息傳遞信道將輸入/輸出控制器仿真器生成的輸入/輸出請(qǐng)求發(fā)送到虛擬化服務(wù)提供者。除了上述方面,構(gòu)成本發(fā)明一部分的權(quán)利要求、附圖、以及文本中描述了其他方面本發(fā)明的一示例實(shí)施例描述了一種方法。在該示例中,該方法包括但不限于,由虛擬處理器執(zhí)行客操作系統(tǒng),其中該客操作系統(tǒng)被配置成在虛擬機(jī)內(nèi)執(zhí)行;經(jīng)由IO消息傳遞信道從虛擬化服務(wù)提供者接收與輸入/輸出作業(yè)有關(guān)的信號(hào);加載將虛擬地址映射到虛擬客物理地址的頁表;以及在虛擬機(jī)內(nèi)執(zhí)行輸入/輸出控制器仿真器。除了上述方面,構(gòu)成本發(fā)明一部分的權(quán)利要求、附圖、以及文本中描述了其他方面本領(lǐng)域技術(shù)人員將理解,本發(fā)明的一個(gè)或多個(gè)方面可包括但不限于用于實(shí)現(xiàn)本發(fā)明的本文所述方面的電路和/或編程;該電路和/或編程實(shí)質(zhì)上可以是被配置成實(shí)現(xiàn)本文所述方面的硬件、軟件和/或固件的任何組合,這取決于系統(tǒng)設(shè)計(jì)者的設(shè)計(jì)選擇。以上是概述,并且因此必然包含細(xì)節(jié)的簡(jiǎn)化、一般化及省略。本領(lǐng)域技術(shù)人員將明白,本概述只是說明性的并且決不旨在是限制性的。


圖1描繪其中可實(shí)現(xiàn)本發(fā)明的各方面的示例計(jì)算機(jī)系統(tǒng)。圖2描繪了用于實(shí)施本發(fā)明的各方面的操作環(huán)境。圖3描繪了用于實(shí)施本發(fā)明的各方面的操作環(huán)境。圖4示出了用于描繪本發(fā)明的各方面的操作環(huán)境。圖5描繪了用于實(shí)施本發(fā)明的各方面的操作過程。圖6描繪了圖5的操作過程的替換實(shí)施例。圖7描繪了用于實(shí)施本發(fā)明的各方面的操作過程。圖8描繪了圖7的操作過程的替換實(shí)施例。圖9描繪了用于實(shí)施本發(fā)明的各方面的操作過程。圖10描繪了圖9的操作過程的替換實(shí)施例。
具體實(shí)施例方式各實(shí)施例可在一個(gè)或多個(gè)計(jì)算機(jī)系統(tǒng)上執(zhí)行。圖1和下面的討論旨在提供其中可實(shí)現(xiàn)本發(fā)明的合適計(jì)算環(huán)境的簡(jiǎn)要概括描述。貫穿本發(fā)明使用的術(shù)語電路可包括諸如硬件中斷控制器、硬盤驅(qū)動(dòng)器、網(wǎng)絡(luò)適配器、圖形處理器、基于硬件的視頻/音頻編解碼器等硬件組件,以及用于操作這些硬件的固件。術(shù)語“電路”還可包括微處理器、專用集成電路、和/或一個(gè)或多個(gè)邏輯處理器,例如由固件和/或軟件配置的多核通用處理單元的一個(gè)或多個(gè)核。邏輯處理器可由指令來配置, 指令具體化可用于執(zhí)行從例如RAM、ROM、固件和/或大容量存儲(chǔ)等存儲(chǔ)器加載的功能的邏輯。在其中電路包括硬件和軟件的組合的示例實(shí)施例中,實(shí)現(xiàn)者可以編寫具體化邏輯的源代碼,該源代碼隨后被編譯成可由邏輯處理器執(zhí)行的機(jī)器可讀代碼。因?yàn)楸绢I(lǐng)域技術(shù)人員可以明白現(xiàn)有技術(shù)已經(jīng)進(jìn)化到硬件實(shí)現(xiàn)的功能或軟件實(shí)現(xiàn)的功能之間幾乎沒有差別的地步,因而選擇硬件還是軟件來實(shí)現(xiàn)此處描述的功能只是一個(gè)設(shè)計(jì)選擇。換言之,由于本領(lǐng)域的技術(shù)人員可以理解軟件進(jìn)程可被變換成等效的硬件結(jié)構(gòu),且硬件結(jié)構(gòu)本身可被變換成等效的軟件進(jìn)程,因此選擇硬件實(shí)現(xiàn)或是軟件實(shí)現(xiàn)留給了實(shí)現(xiàn)者?,F(xiàn)在參考圖1,描繪了示例性計(jì)算系統(tǒng)100。計(jì)算機(jī)系統(tǒng)100可包括邏輯處理器 102,如執(zhí)行核。盡管示出了一個(gè)邏輯處理器102,但在其他實(shí)施例中,計(jì)算機(jī)系統(tǒng)100可具有多個(gè)邏輯處理器,例如每一處理器基板有多個(gè)執(zhí)行核,和/或各自可具有多個(gè)執(zhí)行核的多個(gè)處理器基板。如圖所示,各種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)110可由一個(gè)或多個(gè)系統(tǒng)總線互聯(lián), 系統(tǒng)總線將各種系統(tǒng)組件耦合到邏輯處理器102。系統(tǒng)總線可以是幾種類型的總線結(jié)構(gòu)中的任何一種,包括存儲(chǔ)器總線或存儲(chǔ)控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任一種的局部總線。在示例實(shí)施例中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)110可以包括例如隨機(jī)存取存儲(chǔ)器(RAM) 104、存儲(chǔ)設(shè)備106 (例如電機(jī)硬盤驅(qū)動(dòng)器、固態(tài)硬盤驅(qū)動(dòng)器等)、固件108 (例如閃存或ROM)、以及可移動(dòng)存儲(chǔ)設(shè)備118 (例如⑶-ROM、軟盤、DVD、閃速驅(qū)動(dòng)器、外部存儲(chǔ)設(shè)備等)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可使用其他類型的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),如磁帶盒、閃存卡、數(shù)字視頻盤和柏努利盒式磁帶。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)110可以為計(jì)算機(jī)100提供對(duì)處理器可執(zhí)行指令122、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的非易失性和易失性存儲(chǔ),實(shí)現(xiàn)管理器250的可執(zhí)行指令在以下附圖中描述?;据斎?輸出系統(tǒng)(BIOS) 120可被存儲(chǔ)在固件108中,它包含幫助在諸如啟動(dòng)期間在計(jì)算機(jī)系統(tǒng)100內(nèi)的各元件之間傳遞信息的基本例程。包括操作系統(tǒng)和/或應(yīng)用程序的多個(gè)程序可被存儲(chǔ)在固件108、存儲(chǔ)設(shè)備106、RAM 104和/或可移動(dòng)存儲(chǔ)設(shè)備118 上,并且可由邏輯處理器102來執(zhí)行。命令和信息可由計(jì)算機(jī)100通過輸入設(shè)備116來接收,輸入設(shè)備可包括但不限于鍵盤和定點(diǎn)設(shè)備。其它輸入設(shè)備可以包括話筒、操縱桿、游戲手柄、掃描儀等等。這些和其它輸入設(shè)備常通過耦合到系統(tǒng)總線的串行端口接口連接到邏輯處理器102,但也可通過其它接口連接,如并行端口、游戲端口或通用串行總線(USB)。顯示器或其他類型的顯示設(shè)備也可經(jīng)由諸如視頻適配器等可以是圖形處理器112的一部分或可連接到圖形處理器112的接口來連接到系統(tǒng)總線。除了顯示器之外,計(jì)算機(jī)通常包括其他外圍輸出設(shè)備(未示出), 如揚(yáng)聲器和打印機(jī)。圖1的示例性系統(tǒng)還包括主適配器、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)總線和連接到SCSI總線的外部存儲(chǔ)設(shè)備。計(jì)算機(jī)系統(tǒng)100可使用至一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)可以是另一計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它常見的網(wǎng)絡(luò)節(jié)點(diǎn),并且通常包括上面關(guān)于計(jì)算機(jī)系統(tǒng)100所述的許多或全部元件。當(dāng)在LAN或WAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)系統(tǒng)100可通過網(wǎng)絡(luò)接口卡114連接至LAN或WAN。NIC 114可以是內(nèi)置或外置的,其可以連接到系統(tǒng)總線。在聯(lián)網(wǎng)環(huán)境中,相對(duì)于計(jì)算機(jī)系統(tǒng)100所描述的程序模塊或其部分可被儲(chǔ)存在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中??梢岳斫?,所描述的網(wǎng)絡(luò)連接是示例性的,且可以使用在計(jì)算機(jī)之間建立通信鏈路的其他手段。 雖然可構(gòu)想本發(fā)明的許多實(shí)施例尤其適用于計(jì)算機(jī)化的系統(tǒng),然而在本說明中不意味著將本發(fā)明限于那些實(shí)施例?,F(xiàn)在參考圖2和3,描繪了被配置成實(shí)現(xiàn)虛擬機(jī)的計(jì)算機(jī)系統(tǒng)200和300的高級(jí)框圖。在本發(fā)明的示例實(shí)施例中,計(jì)算機(jī)系統(tǒng)200和300可包括圖以及下文中描述的元件。 如圖所示,可存在不同的體系結(jié)構(gòu);然而,它們一般具有相似的組件。例如,圖2示出了一操作環(huán)境,其中本領(lǐng)域中也可被稱為虛擬機(jī)監(jiān)控程序的系統(tǒng)管理程序被拆分成微內(nèi)核202和父分區(qū)204,而圖3示出系統(tǒng)管理程序304包括圖2的父分區(qū)204中找到的元素。轉(zhuǎn)向圖2,系統(tǒng)管理程序微內(nèi)核202可被配置成控制并仲裁對(duì)計(jì)算機(jī)系統(tǒng)200的硬件的訪問。廣泛而言,系統(tǒng)管理程序微內(nèi)核202可以生成稱為分區(qū)的執(zhí)行環(huán)境,如子分區(qū)1 到子分區(qū)N(其中N是大于1的整數(shù))。在各實(shí)施例中,子分區(qū)是系統(tǒng)管理程序微內(nèi)核202 支持的基本隔離單元。即,每一子分區(qū)可被映射到一組在系統(tǒng)管理程序微內(nèi)核202的控制下的硬件資源,例如存儲(chǔ)器、設(shè)備、邏輯處理器周期等,并且系統(tǒng)管理程序微內(nèi)核202可隔離一個(gè)分區(qū)中的進(jìn)程不使其訪問另一分區(qū)的資源,例如,一個(gè)分區(qū)中的客操作系統(tǒng)可與另一分區(qū)的存儲(chǔ)器隔離,且因此不能檢測(cè)到其分區(qū)外部的存儲(chǔ)器地址。在各實(shí)施例中,系統(tǒng)管理程序微內(nèi)核202可以是獨(dú)立的軟件產(chǎn)品、操作系統(tǒng)的一部分、嵌入在主板的固件中、專用集成電路、或其組合。在所描繪的示例中,父分區(qū)組件204也可被認(rèn)為是類似于Xen的開源系統(tǒng)管理程序的域0。該操作環(huán)境中的父分區(qū)204可被配置成通過使用虛擬化服務(wù)提供者228 (VSP)來向在子分區(qū)I-N中執(zhí)行的客操作系統(tǒng)提供資源,虛擬化服務(wù)提供者在開源社區(qū)中通常被稱為后端驅(qū)動(dòng)程序。廣泛而言,VSP 2 可用于通過虛擬化服務(wù)客戶端(VSC)(開源社區(qū)中通常稱為前端驅(qū)動(dòng)程序)復(fù)用到硬件資源的接口,并經(jīng)由通信協(xié)議與虛擬化服務(wù)客戶端進(jìn)行通信。如圖所示,虛擬化服務(wù)客戶端可以在客操作系統(tǒng)的上下文中執(zhí)行。這些驅(qū)動(dòng)程序不同于客機(jī)中的其余驅(qū)動(dòng)程序,因?yàn)榭上蛩鼈兲峁┫到y(tǒng)管理程序而非客機(jī)。微內(nèi)核202可以通過限制客操作系統(tǒng)的系統(tǒng)存儲(chǔ)器視圖來實(shí)施分區(qū)。客存儲(chǔ)器是由系統(tǒng)管理程序控制的分區(qū)的存儲(chǔ)器視圖。客物理地址能由系統(tǒng)物理地址(SPA)來支持, 即,由系統(tǒng)管理程序管理的、物理計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器。附圖所示,在一實(shí)施例中,GPA和 SPA可被安排成存儲(chǔ)器塊,S卩,一個(gè)或多個(gè)存儲(chǔ)器頁。當(dāng)客機(jī)使用其頁表向一個(gè)塊寫入時(shí),數(shù)據(jù)實(shí)際被存儲(chǔ)在根據(jù)系統(tǒng)管理程序使用的系統(tǒng)級(jí)頁表而具有不同系統(tǒng)地址的塊中。如圖所示,在本發(fā)明的各實(shí)施例中,IO仿真器034和236),例如虛擬化IDE設(shè)備、 虛擬化視頻適配器、虛擬化NIC等,能被配置成在其各自的子分區(qū)中運(yùn)行。如以下更詳細(xì)描述的,通過將仿真器配置為在子分區(qū)內(nèi)運(yùn)行,減小了系統(tǒng)管理程序的攻擊面以及計(jì)算開銷。每一子分區(qū)可包括一個(gè)或多個(gè)虛擬處理器Q30和23 ,客操作系統(tǒng)Q20和222) 可管理并調(diào)度線程以便在這些虛擬處理器上執(zhí)行。一般而言,虛擬處理器是提供具有特定架構(gòu)的物理處理器的表示的可執(zhí)行指令以及相關(guān)聯(lián)的狀態(tài)信息。例如,一個(gè)虛擬機(jī)可具有帶有英特爾x86處理器特性的虛擬處理器,而另一虛擬處理器可具有PowerPC處理器的特性。本例中的虛擬處理器可被映射到計(jì)算機(jī)系統(tǒng)的邏輯處理器,使得實(shí)現(xiàn)虛擬處理器的指令將受到邏輯處理器的支持。由此,在包括多個(gè)邏輯處理器的實(shí)施例中,虛擬處理器可以由邏輯處理器同時(shí)執(zhí)行,同時(shí)例如其他邏輯處理器執(zhí)行系統(tǒng)管理程序指令。分區(qū)中虛擬處理器和存儲(chǔ)器的組合可被認(rèn)為是虛擬機(jī)??筒僮飨到y(tǒng)可包括任何操作系統(tǒng),如來自微軟 、蘋果 、開源社區(qū)等的操作系統(tǒng)。 客操作系統(tǒng)可包括用戶/內(nèi)核操作模式,并且可具有能包括調(diào)度器、存儲(chǔ)器管理器等的內(nèi)核。一般而言,內(nèi)核模式可包括邏輯處理器中的執(zhí)行模式,該執(zhí)行模式授予對(duì)至少特權(quán)處理器指令的訪問。每一客操作系統(tǒng)可具有相關(guān)聯(lián)的文件系統(tǒng),該文件系統(tǒng)上存儲(chǔ)有諸如終端服務(wù)器、電子商務(wù)服務(wù)器、電子郵件服務(wù)器等應(yīng)用以及客操作系統(tǒng)本身??筒僮飨到y(tǒng)可調(diào)度線程來在虛擬處理器上執(zhí)行,并且可實(shí)現(xiàn)此類應(yīng)用的實(shí)例?,F(xiàn)在參考圖3,示出了對(duì)上述圖2的替換體系結(jié)構(gòu)。圖3描繪了與圖2的組件相類似的組件;然而,在該示例實(shí)施例中,系統(tǒng)管理程序304可包括微內(nèi)核組件和來自圖2的父分區(qū)204的組件,如虛擬化服務(wù)提供者2 和設(shè)備驅(qū)動(dòng)程序224,而管理操作系統(tǒng)302可包含例如用于配置系統(tǒng)管理程序304的配置實(shí)用程序。在該體系結(jié)構(gòu)中,系統(tǒng)管理程序304 可以執(zhí)行與圖2的系統(tǒng)管理程序微內(nèi)核202相同或相似的功能;然而,在該體系結(jié)構(gòu)中,系統(tǒng)管理程序304可被配置成向在子分區(qū)中執(zhí)行的客操作系統(tǒng)提供資源。圖3的系統(tǒng)管理程序304可以是獨(dú)立的軟件產(chǎn)品、操作系統(tǒng)的一部分、嵌入在主板的固件內(nèi),或者系統(tǒng)管理程序304的一部分可以由專用集成電路來實(shí)現(xiàn)?,F(xiàn)在轉(zhuǎn)向圖4,示出了用于實(shí)施本發(fā)明的各方面的示例環(huán)境。如圖所示,IO控制器仿真器406能被注入到虛擬機(jī)410中,例如,被配置成從分配給虛擬機(jī)410的客物理存儲(chǔ)器運(yùn)行。當(dāng)IO控制器仿真器406由虛擬處理器執(zhí)行時(shí),指示仿真器的指令可配置虛擬處理器來仿真硬件IO控制器。IO控制器仿真器406可被附連到多個(gè)寄存器和存儲(chǔ)器映射的IO空間,使得對(duì)這些資源的訪問被俘獲并被重定向到IO控制器仿真器406。例如,諸如端口等寄存器可被用來標(biāo)識(shí)IDE仿真器是主要還是次要IDE信道、對(duì)中斷加掩碼、啟動(dòng)事務(wù)等。在本發(fā)明的各實(shí)施例中,系統(tǒng)管理程序400可對(duì)這些端口設(shè)置俘獲,并且如果驅(qū)動(dòng)程序412試圖寫入像硬件端口一樣工作的組件,則系統(tǒng)管理程序400可對(duì)寄存器訪問進(jìn)行俘獲,例如,截取寄存器訪問、停止運(yùn)行驅(qū)動(dòng)程序412的虛擬處理器,以及將被寫入寄存器的內(nèi)容傳遞給IO控制器仿真器406。IO控制器仿真器406然后可被執(zhí)行并采取動(dòng)作。例如,IO控制器仿真器406可向VSP 402發(fā)送取得數(shù)據(jù)塊的請(qǐng)求,它可將數(shù)據(jù)移至客物理存儲(chǔ)器中,返回它所具有的某些信息,等等。本領(lǐng)域的技術(shù)人員可以理解,多個(gè)IO仿真器可被映射到虛擬機(jī)410中的存儲(chǔ)器,或者可存在系統(tǒng)管理程序400或虛擬機(jī)410中的仿真器的組合。此外,本領(lǐng)域的技術(shù)人員可以理解,例如寄存器和IO存儲(chǔ)器等某些IO資源可使得對(duì)它們?cè)O(shè)置系統(tǒng)管理程序俘獲,而其他IO資源則不能。繼續(xù)圖4的描述,IO控制器仿真器406可經(jīng)由IO消息傳遞信道408與系統(tǒng)管理程序400交互。系統(tǒng)管理程序400可包括能對(duì)到諸如盤等IO設(shè)備404的接口復(fù)用的虛擬化服務(wù)提供者402。IO消息傳遞信道408例如可包括映射到系統(tǒng)管理程序400和虛擬機(jī)410 的存儲(chǔ)器。在共享存儲(chǔ)器內(nèi),可實(shí)現(xiàn)環(huán)形緩沖區(qū),該環(huán)形緩沖區(qū)允許在VSP 402和IO控制器仿真器406之間傳遞消息和數(shù)據(jù)。在一示例存儲(chǔ)實(shí)施例中,IO控制器仿真器406可使用像SCSI這樣的高級(jí)通信協(xié)議來與VSP 402進(jìn)行通信。通過使用高級(jí)協(xié)議,可顯著減少執(zhí)行真實(shí)IO作業(yè)所需的請(qǐng)求量。例如,用于生成從盤取得塊的IO請(qǐng)求的硬件上的數(shù)百個(gè)動(dòng)作可通過IO消息傳遞信道408使用的通信協(xié)議由單個(gè)命令來表達(dá)。在一示例實(shí)施例中,IO消息傳遞信道408是啟用分區(qū)到分區(qū)(或系統(tǒng)管理程序)通信的邏輯信道。在本發(fā)明的一實(shí)施例中,IO消息傳遞信道可包括與題為“Partition Bus (分區(qū)總線)”的美國專利申請(qǐng)第 11/U8647號(hào)中描述的那些相似的特征,該申請(qǐng)的內(nèi)容通過整體引用合并于此。在一具體示例實(shí)施例中,虛擬化服務(wù)提供者402可以是被配置成代表子分區(qū)與諸如由SAN提供的邏輯單元號(hào)(LUN)等物理存儲(chǔ)設(shè)備進(jìn)行通信的存儲(chǔ)服務(wù),該物理存儲(chǔ)設(shè)備例如可能已經(jīng)通過其他存儲(chǔ)虛擬化技術(shù)被虛擬化的盤。在一個(gè)實(shí)例中,虛擬化服務(wù)提供者 402可以從虛擬機(jī)接收I/O請(qǐng)求并將他它們路由到LUN。在其中LUN是子分配的另一實(shí)例中,虛擬化服務(wù)提供者402可被配置成生成虛擬硬盤;將它們展示給虛擬機(jī);以及將它們作為虛擬硬盤驅(qū)動(dòng)器(VHD)文件存儲(chǔ)在LUN或物理驅(qū)動(dòng)器上。VHD文件表示可被封裝在單個(gè)文件內(nèi)的虛擬機(jī)硬盤。虛擬化服務(wù)提供者402可解析該文件,并實(shí)現(xiàn)被展示給客操作系統(tǒng) 220的盤,就好像該盤是物理存儲(chǔ)一樣。由虛擬化服務(wù)提供者402生成的虛擬硬盤可按照表現(xiàn)為像本地一樣的方式來表示給客操作系統(tǒng)可訪問的總線。除了上述之外,虛擬化服務(wù)提供者402可以是擔(dān)當(dāng)對(duì)網(wǎng)絡(luò)訪問的仲裁者的網(wǎng)絡(luò)適配器服務(wù)、擔(dān)當(dāng)對(duì)視頻卡訪問請(qǐng)求的仲裁者的圖形適配器服務(wù)。如圖所示,在一示例實(shí)施例中,可向虛擬機(jī)410中運(yùn)行的虛擬處理器給予另一操作模式。例如,當(dāng)虛擬處理器正在運(yùn)行客機(jī)代碼,例如客操作系統(tǒng)220或IO控制器驅(qū)動(dòng)程序412時(shí),它在客機(jī)上下文416中運(yùn)行,并且例如正在使用客操作系統(tǒng)的頁表。在本發(fā)明的各實(shí)施例中,仿真上下文414可被添加到虛擬處理器來運(yùn)行IO控制器仿真器406。仿真器模式414中的虛擬處理器可包括附加的每虛擬處理器狀態(tài)塊、頁表、以及該虛擬處理器能夠執(zhí)行的一組專門的操作。例如,該仿真上下文414中的虛擬處理器可以只能執(zhí)行超級(jí)調(diào)用(hypercall),例如發(fā)送給系統(tǒng)管理程序400的退出該模式的請(qǐng)求。例如,如果惡意用戶攻擊IO控制器仿真器406,則虛擬機(jī)410可以簡(jiǎn)單地不工作,例如,惡意用戶最終使其自己的虛擬機(jī)崩潰。在另一實(shí)施例中,如果系統(tǒng)管理程序400檢測(cè)到IO控制器406已經(jīng)被篡改,則系統(tǒng)管理程序400可根據(jù)策略來采取行動(dòng)。例如,如果檢測(cè)到非法操作,則系統(tǒng)管理程序400可將該操作關(guān)閉、讓該操作運(yùn)行、停止該操作直到管理員授權(quán)進(jìn)一步執(zhí)行、將該操作復(fù)位、等等。以下是描繪操作過程的一系列流程圖。為便于理解,流程圖被組織成使得初始流程圖經(jīng)由總體“大圖”觀點(diǎn)來呈現(xiàn)各實(shí)現(xiàn),且后續(xù)的流程圖提供進(jìn)一步的附加和/或細(xì)節(jié)。 此外,本領(lǐng)域的技術(shù)人員可以理解,虛線所描繪的操作過程被認(rèn)為是任選的?,F(xiàn)在參考圖5,示出了用于實(shí)施本發(fā)明的各方面的操作過程。如圖所示,操作500 開始該操作過程,并且操作502示出將輸入/輸出控制器仿真器配置成在虛擬機(jī)中執(zhí)行。例如,轉(zhuǎn)向圖4,在本發(fā)明的一實(shí)施例中,可將指示IO控制器仿真器406的指令存儲(chǔ)在與虛擬機(jī)410相關(guān)聯(lián)的客物理地址中。諸如虛擬處理器230等虛擬處理器可被配置成在IO控制器驅(qū)動(dòng)程序試圖執(zhí)行IO操作時(shí),例如它接觸映射到該仿真器的存儲(chǔ)器或與IO仿真器406 相關(guān)聯(lián)的寄存器,執(zhí)行仿真器指令。在一示例實(shí)施例中,指示IO仿真器406的指令可被存儲(chǔ)在客物理地址中,且客操作系統(tǒng)220可被配置成忽略該地址。例如,在引導(dǎo)客操作系統(tǒng)220之前,可執(zhí)行將IO仿真器406加載到虛擬機(jī)的存儲(chǔ)器地址中并將該存儲(chǔ)器標(biāo)記為保留的固件。通過將存儲(chǔ)器標(biāo)記為保留,客操作系統(tǒng)220在被加載時(shí)將不使用該存儲(chǔ)器,從而不會(huì)蓋寫IO仿真器406。IO仿真器406可被配置成在IO驅(qū)動(dòng)程序412試圖訪問與該仿真器正在仿真的設(shè)備相關(guān)聯(lián)的IO端口或IO映射的存儲(chǔ)器時(shí)執(zhí)行。例如,系統(tǒng)管理程序400可被配置成用系統(tǒng)管理程序截取來標(biāo)記IO端口和存儲(chǔ)器,并且如果IO驅(qū)動(dòng)程序412接觸到該資源,則系統(tǒng)管理程序400可截取訪問并執(zhí)行。系統(tǒng)管理程序400可檢查標(biāo)識(shí)了導(dǎo)致進(jìn)入仿真上下文 414的端口的表;保存虛擬處理器的狀態(tài);切換到仿真上下文414 ;以及將IO控制器驅(qū)動(dòng)程序412試圖寫入的信息傳遞到分配給IO控制器仿真器406的資源。傳遞給IO控制器仿真器406的信息可引起各種結(jié)果。例如,并非所有俘獲都會(huì)導(dǎo)致消息通過IO信道來發(fā)送。相反,某些請(qǐng)求可在仿真器內(nèi)被處理,并且不需要被發(fā)送到虛擬化服務(wù)提供者402。繼續(xù)圖5的描述,操作504示出將IO消息傳遞信道配置成將輸入/輸出控制器仿真器生成的輸入/輸出請(qǐng)求發(fā)送到虛擬化服務(wù)提供者。繼續(xù)上述示例,在引導(dǎo)客操作系統(tǒng) 220之前,可執(zhí)行將IO消息傳遞信道408的副本加載到存儲(chǔ)器中并將該存儲(chǔ)器標(biāo)記為保留的固件。IO消息傳遞信道408可具有為在虛擬機(jī)410中運(yùn)行的每一類型的IO仿真器設(shè)置的協(xié)議,例如,聯(lián)網(wǎng)棧、存儲(chǔ)棧、串行端口棧、視頻棧、鼠標(biāo)棧等,并使用這些棧來生成可被傳遞給控制計(jì)算機(jī)系統(tǒng)的硬件的虛擬化服務(wù)提供者?,F(xiàn)在轉(zhuǎn)向圖6,其示出圖5的操作過程的替換實(shí)施例,包括操作606-624。轉(zhuǎn)向操作606,其示出了響應(yīng)于從虛擬化服務(wù)提供者接收到輸入/輸出作業(yè)完成信號(hào)來執(zhí)行輸入/ 輸出控制器仿真器。例如,在本發(fā)明的一實(shí)施例中,輸入/輸出控制器仿真器406可被異步地執(zhí)行。即,輸入/輸出控制器仿真器406可由虛擬處理器在虛擬機(jī)410外部發(fā)生了某件事情時(shí)運(yùn)行。例如,IO控制器仿真器406可響應(yīng)于從虛擬化服務(wù)提供者402接收到信號(hào)來執(zhí)行。響應(yīng)于接收到該信號(hào),系統(tǒng)管理程序400可切換到仿真上下文414并處理該信號(hào)。在一具體示例中,IO控制器驅(qū)動(dòng)程序412可發(fā)出將數(shù)據(jù)從存儲(chǔ)上的位置讀入客物理地址的指令,并將IO控制器仿真器406配置成在完成時(shí)將例如中斷等信號(hào)發(fā)送到IO控制器驅(qū)動(dòng)程序412。當(dāng)完成該作業(yè)且虛擬化服務(wù)提供者402向IO控制器仿真器406發(fā)送了完成信號(hào)時(shí),系統(tǒng)管理程序400可接收該信號(hào),并將虛擬處理器切換到仿真上下文414, 并運(yùn)行輸入/輸出控制器仿真器406。輸入/輸出控制器仿真器406然后可處理虛擬化服務(wù)提供者402所取得的數(shù)據(jù),并將其插入到IO控制器驅(qū)動(dòng)程序412所請(qǐng)求的客物理存儲(chǔ)器中。輸入/輸出控制器仿真器406然后可向客操作系統(tǒng)220發(fā)送中斷,使得下一次其執(zhí)行時(shí),客操作系統(tǒng)可處理該中斷并且確定數(shù)據(jù)已被寫入存儲(chǔ)器。在一具體示例中,IO控制器仿真器406可被連接到中斷線。當(dāng)IO控制器仿真器406運(yùn)行時(shí),它可設(shè)置虛擬處理器的狀態(tài)來反映中斷線正示出待決中斷。當(dāng)虛擬處理器被切換到客OS上下文416并運(yùn)行客操作系統(tǒng)220時(shí),客機(jī)將檢測(cè)到該中斷并通過例如運(yùn)行IO控制器驅(qū)動(dòng)程序412來服務(wù)該中斷。繼續(xù)圖6的描述,操作608示出用高速緩存在虛擬機(jī)中的數(shù)據(jù)來響應(yīng)來自被配置成在虛擬機(jī)中執(zhí)行的客操作系統(tǒng)的輸入/輸出請(qǐng)求。例如,在本發(fā)明的一實(shí)施例中,輸入/ 輸出控制器仿真器406可將它預(yù)期客操作系統(tǒng)220將請(qǐng)求的數(shù)據(jù)存儲(chǔ)在虛擬機(jī)410的保留存儲(chǔ)器中。在一示例實(shí)施例中,客操作系統(tǒng)220可接觸與IO控制器仿真器406相關(guān)聯(lián)的寄存器。這可導(dǎo)致系統(tǒng)管理程序400中的俘獲,可將上下文切換到仿真上下文414。在客操作系統(tǒng)220請(qǐng)求數(shù)據(jù)的情況下,數(shù)據(jù)可從輸入/輸出控制器仿真器406控制的存儲(chǔ)器返回, 而不必向虛擬化服務(wù)提供者402發(fā)送請(qǐng)求。在一示例實(shí)施例中,虛擬化服務(wù)提供者402可使用描述在虛擬機(jī)410中有多少保留存儲(chǔ)器可用于緩存數(shù)據(jù)、它正在服務(wù)來自物理計(jì)算機(jī)上的所有虛擬機(jī)的多少請(qǐng)求、與虛擬機(jī)410相關(guān)聯(lián)的優(yōu)先級(jí)等的信息,來確定要發(fā)回多少數(shù)據(jù)。在另一示例實(shí)施例中,該數(shù)據(jù)可被緩存在存儲(chǔ)器中可由系統(tǒng)管理程序400訪問的別處。在緩存的數(shù)據(jù)被請(qǐng)求的情況下,該數(shù)據(jù)可被發(fā)送到仿真器,或者包含該存儲(chǔ)器的頁可被重新映射,使得輸入/輸出控制器仿真器406可訪問包含該數(shù)據(jù)的系統(tǒng)物理地址。在IO控制器仿真器406是存儲(chǔ)仿真器的具體示例中,當(dāng)IO控制器仿真器406發(fā)送對(duì)“塊78”存儲(chǔ)的請(qǐng)求時(shí),虛擬化服務(wù)提供者402可確定讀取20個(gè)塊或包含塊78的整個(gè)磁道,并將該數(shù)據(jù)發(fā)送到輸入/輸出控制器仿真器406。IO控制器仿真器406可被配置成在它接收到讀取數(shù)據(jù)的請(qǐng)求時(shí)在向虛擬化服務(wù)提供者402發(fā)送另一請(qǐng)求之前檢查緩沖區(qū)。轉(zhuǎn)向操作610,其示出了在執(zhí)行輸入/輸出控制器仿真器之前將虛擬地址映射到客物理地址。例如,在本發(fā)明的一實(shí)施例中,當(dāng)虛擬處理器進(jìn)入仿真上下文414時(shí),可將客操作系統(tǒng)220使用的頁表存儲(chǔ)在存儲(chǔ)器中,并且可加載將客虛擬地址映射到客物理地址的頁表。在該操作模式中,虛擬處理器(仿真在物理地址上操作的硬件設(shè)備)可被配置成在用于存儲(chǔ)器的虛擬地址總是等于物理地址的模式中運(yùn)行。即,在該模式中,可打開分頁,但是頁表以一對(duì)一方式映射到物理地址。這允許對(duì)直接存儲(chǔ)器地址操作的仿真。在相同的或另一示例實(shí)施例中,可以使客操作系統(tǒng)220使用的頁表對(duì)輸入/輸出控制器仿真器406可用,使得客虛擬地址中發(fā)出的指令可被轉(zhuǎn)換到客物理地址中。繼續(xù)圖6的描述,操作612示出將系統(tǒng)管理程序配置成俘獲對(duì)與輸入/輸出控制器仿真器相關(guān)聯(lián)的存儲(chǔ)器映射的IO空間的訪問。例如,在本發(fā)明的一實(shí)施例中,系統(tǒng)管理程序400可被配置成截取對(duì)為IO控制器仿真器406保留的存儲(chǔ)器的訪問。在該示例實(shí)施例中,當(dāng)客操作系統(tǒng)220接觸到該存儲(chǔ)器時(shí),系統(tǒng)管理程序400可以截取該訪問并切換到仿真上下文414 ;將客操作系統(tǒng)220試圖寫入的值傳遞到存儲(chǔ)器;以及執(zhí)行IO控制器仿真器 406。操作614示出將執(zhí)行輸入/輸出控制器仿真器所花費(fèi)的處理器時(shí)間自動(dòng)歸于虛擬機(jī)。例如,在本發(fā)明的一實(shí)施例中,虛擬處理器運(yùn)行輸入/輸出控制器仿真器406所花費(fèi)的時(shí)間量可被記錄并向虛擬機(jī)410記賬。通常,虛擬機(jī)環(huán)境中可被記錄的唯一的記賬機(jī)制是虛擬處理器在虛擬機(jī)中運(yùn)行的時(shí)間量。在該實(shí)施例中,由于輸入/輸出控制器仿真器406 正在虛擬機(jī)410中運(yùn)行,因此它運(yùn)行所花費(fèi)的時(shí)間自然被歸于子分區(qū),并允許生成準(zhǔn)確的記賬記錄。在IO控制器在管理分區(qū)或系統(tǒng)管理程序中運(yùn)行的體系結(jié)構(gòu)中,難以確定虛擬機(jī)實(shí)際使用了多少處理器時(shí)間,因?yàn)樘摂M化體系結(jié)構(gòu)中的每一進(jìn)程不一定能夠記錄它對(duì)不同虛擬機(jī)運(yùn)行的時(shí)間量。為了獲得虛擬機(jī)使用了多少處理器時(shí)間的準(zhǔn)確概念,用于實(shí)現(xiàn)虛擬機(jī)的每一進(jìn)程將不得不被重新設(shè)計(jì)來對(duì)在具體的虛擬機(jī)請(qǐng)求上工作所花費(fèi)的時(shí)間進(jìn)行記賬。操作616示出根據(jù)安全策略來確定經(jīng)由IO消息傳遞信道發(fā)送的通信。例如,一進(jìn)程可以執(zhí)行來監(jiān)視分區(qū)間通信總線上移動(dòng)的通信,來確定該通信是否違背了安全策略。例如,系統(tǒng)管理程序400可包括類似于可監(jiān)視在總線上移動(dòng)的通信的網(wǎng)絡(luò)安全程序的安全程序。如果該通信違背了安全策略,則系統(tǒng)管理程序400可被配置成將虛擬機(jī)關(guān)閉?,F(xiàn)在轉(zhuǎn)向操作618,其示出了保存與虛擬機(jī)相關(guān)聯(lián)的狀態(tài)。例如,在本發(fā)明的一實(shí)施例中,可保存虛擬機(jī)的狀態(tài),該狀態(tài)可包括IO控制器仿真器406的狀態(tài)。例如,虛擬機(jī)的狀態(tài)可包括基于文件的狀態(tài)快照、盤數(shù)據(jù)、以及在特定時(shí)間點(diǎn)虛擬機(jī)的配置。稍后,用戶可將虛擬機(jī)實(shí)例化到該狀態(tài)。當(dāng)在虛擬機(jī)的上下文中執(zhí)行輸入/輸出仿真器406時(shí),即,輸入 /輸出仿真器406在客物理地址中運(yùn)行時(shí),快照操作自然地獲得輸入/輸出仿真器406的狀態(tài),并允許用戶保存/還原該狀態(tài)而不必獲得存儲(chǔ)在管理分區(qū)或系統(tǒng)管理程序的存儲(chǔ)器中的數(shù)據(jù)。現(xiàn)在轉(zhuǎn)向操作620,其示出了將指令完成引擎配置成在虛擬機(jī)中執(zhí)行。例如,在本發(fā)明的一實(shí)施例中,指令完成引擎418可在虛擬機(jī)410中執(zhí)行。例如,在一實(shí)施例中,指令完成引擎418可配置與客OS上下文416和/或客物理存儲(chǔ)器相關(guān)聯(lián)的狀態(tài)來反映輸入/輸出仿真器406已經(jīng)完成了一個(gè)操作。例如,當(dāng)IO驅(qū)動(dòng)程序412將指令寫入IO控制器仿真器406時(shí),執(zhí)行停止且該仿真器運(yùn)行。除了運(yùn)行仿真器之外,在客OS上下文416中發(fā)出指令對(duì)虛擬處理器的影響也需要被仿真。在一具體示例中,輸入/輸出仿真器406可執(zhí)行并獲得某些數(shù)據(jù)。指令完成引擎418可執(zhí)行并確定仿真器所執(zhí)行的操作類型,并確定當(dāng)在客 OS上下文416中時(shí),數(shù)據(jù)需要從輸入/輸出仿真器406移至虛擬處理器上的EAX寄存器。 在該示例中,指令完成引擎418可操縱在進(jìn)入客OS上下文416時(shí)用于配置虛擬處理器的狀態(tài)信息,使得當(dāng)虛擬處理器運(yùn)行時(shí),它具有EAX寄存器中的數(shù)據(jù),并且所指向的指令已前進(jìn)到下一指令?,F(xiàn)在轉(zhuǎn)向操作622,其示出將與輸入/輸出控制器仿真器生成的指令相關(guān)聯(lián)的信息發(fā)送到輸入/輸出控制器仿真器。例如,在本發(fā)明的一實(shí)施例中,系統(tǒng)管理程序400可在發(fā)生截取時(shí)執(zhí)行。在該示例實(shí)施例中,系統(tǒng)管理程序400可被配置成分析該指令來確定如何處理該指令。通過這樣做,系統(tǒng)管理程序400能夠獲得將對(duì)IO控制器仿真器406有用的信息,如截取在何處發(fā)生、被截取的指令有多大、它是什么類型的操作、操作數(shù)、等等。系統(tǒng)管理程序可以將該信息存儲(chǔ)在記錄中,并將其置于與IO控制器仿真器406相關(guān)聯(lián)的存儲(chǔ)器中。當(dāng)IO控制器仿真器406運(yùn)行時(shí),它能夠檢測(cè)該記錄,并且附加信息可能加速IO控制器仿真器406的執(zhí)行。圖7示出了用于實(shí)施本發(fā)明的各方面的操作過程,包括操作700、702和704。操作700開始該操作過程,且操作702示出響應(yīng)于確定映射到輸入/輸出控制器仿真器的寄存器被訪問來執(zhí)行上下文切換以執(zhí)行輸入/輸出控制器仿真器,其中該輸入/輸出控制器仿真器被配置成在虛擬機(jī)內(nèi)執(zhí)行。例如,轉(zhuǎn)向圖4,虛擬處理器可響應(yīng)于客操作系統(tǒng)220接觸到IO控制器仿真器406的寄存器,將上下文切換到仿真上下文414來運(yùn)行存儲(chǔ)在分配給虛擬機(jī)410的客物理地址中的輸入/輸出控制器仿真器406。在一示例實(shí)施例中,當(dāng)切換發(fā)生時(shí),系統(tǒng)管理程序400可將與客OS上下文416中的虛擬處理器相關(guān)聯(lián)的處理器狀態(tài),例如,處理器上的各個(gè)寄存器的內(nèi)容,保存到存儲(chǔ)器中并改變頁表。例如,在本發(fā)明的一實(shí)施例中,系統(tǒng)管理程序400可響應(yīng)于接收到指示IO控制器驅(qū)動(dòng)程序412接觸了分配給IO控制器仿真器406的資源,例如該仿真器的存儲(chǔ)器映射的IO或一個(gè)或多個(gè)IO端口,從在客OS 上下文416中運(yùn)行虛擬處理器切換到仿真上下文414。繼續(xù)圖7的描述,操作704示出經(jīng)由IO消息傳遞信道將輸入/輸出控制器仿真器生成的輸入/輸出請(qǐng)求發(fā)送到虛擬化服務(wù)提供者。例如,在本發(fā)明的一實(shí)施例中,IO控制器驅(qū)動(dòng)程序412可試圖寫入IO控制器仿真器406的寄存器,并且虛擬處理器可執(zhí)行IO控制器仿真器406。IO控制器仿真器406可確定驅(qū)動(dòng)程序412想要什么類型的IO操作,并且可生成發(fā)送到虛擬化服務(wù)提供者402的高級(jí)協(xié)議請(qǐng)求。在一具體示例中,IO控制器仿真器406可能正在仿真IDE控制器。在該示例中, IO驅(qū)動(dòng)程序412可能想要將數(shù)據(jù)寫入盤,并且可試圖將各種信號(hào)發(fā)送到與IO控制器仿真器 406相關(guān)聯(lián)的端口。系統(tǒng)管理程序400可俘獲對(duì)端口的訪問,并切換上下文來運(yùn)行IO控制器仿真器406??蓤?zhí)行仿真器,且該仿真器可確定IO驅(qū)動(dòng)程序412曾試圖將數(shù)據(jù)寫入盤。 IO控制器仿真器406然后可生成例如指示將數(shù)據(jù)寫入盤的請(qǐng)求的SCSI請(qǐng)求,并將該請(qǐng)求存儲(chǔ)在IO消息傳遞信道408中。虛擬化服務(wù)提供者402,在本示例中是處理存儲(chǔ),可訪問IO 消息傳遞信道408并獲得SCSI請(qǐng)求。虛擬化服務(wù)提供者402然后可執(zhí)行并向IO設(shè)備404 發(fā)送請(qǐng)求。在另一具體示例實(shí)施例中,IO控制器仿真器406可以是網(wǎng)絡(luò)卡仿真器。類似于前一示例,當(dāng)系統(tǒng)管理程序400檢測(cè)到IO驅(qū)動(dòng)程序412試圖接觸寄存器來向MAC地址發(fā)送一個(gè)或多個(gè)信息分組時(shí),仿真器406可運(yùn)行,并生成可被發(fā)送到虛擬化服務(wù)提供者402的高級(jí)請(qǐng)求,該示例中虛擬化服務(wù)提供者在處理聯(lián)網(wǎng)。現(xiàn)在轉(zhuǎn)向圖8,其示出圖7的操作過程的替換實(shí)施例,包括操作806-812。操作806 示出對(duì)輸入/輸出控制器驅(qū)動(dòng)程序發(fā)出的指令的至少一部分進(jìn)行解碼,并將該指令的經(jīng)解碼的部分發(fā)送到輸入/輸出控制器仿真器。例如,在本發(fā)明的一實(shí)施例中,系統(tǒng)管理程序 400可在發(fā)生截取時(shí)執(zhí)行。在該示例實(shí)施例中,系統(tǒng)管理程序400可被配置成分析該指令來確定如何處理該指令。通過這樣做,系統(tǒng)管理程序400能夠獲得將對(duì)IO控制器仿真器 406有用的信息,如截取在何處發(fā)生、被截取的指令有多大、它是什么類型的操作、操作數(shù)、 等等。系統(tǒng)管理程序可以將該信息存儲(chǔ)在記錄中,并將其置于與IO控制器仿真器406相關(guān)聯(lián)的存儲(chǔ)器中。當(dāng)IO控制器仿真器406運(yùn)行時(shí),它能夠檢測(cè)該記錄,并且附加信息可能加速IO控制器仿真器406的執(zhí)行。繼續(xù)圖8的描述,操作808示出保存與虛擬機(jī)相關(guān)聯(lián)的狀態(tài)。例如,在本發(fā)明的一實(shí)施例中,可保存虛擬機(jī)的狀態(tài),該狀態(tài)可包括IO控制器仿真器406的狀態(tài)。例如,虛擬機(jī)的狀態(tài)可包括基于文件的狀態(tài)快照、盤數(shù)據(jù)、以及在特定時(shí)間點(diǎn)虛擬機(jī)的配置。稍后,用戶可將虛擬機(jī)實(shí)例化到該狀態(tài)。當(dāng)在虛擬機(jī)的上下文中執(zhí)行輸入/輸出仿真器406時(shí),S卩,輸入/輸出仿真器406在客物理地址中運(yùn)行時(shí),快照操作自然地獲得輸入/輸出仿真器406 的狀態(tài),并允許用戶保存/還原該狀態(tài)而不必獲得存儲(chǔ)在管理分區(qū)或系統(tǒng)管理程序的存儲(chǔ)器中的數(shù)據(jù)。繼續(xù)圖8的示例,操作810示出將執(zhí)行輸入/輸出控制器仿真器所花費(fèi)的處理器時(shí)間自動(dòng)歸于虛擬機(jī)。例如,在本發(fā)明的一實(shí)施例中,虛擬處理器運(yùn)行輸入/輸出控制器仿真器406所花費(fèi)的時(shí)間量可被記錄并對(duì)虛擬機(jī)410記賬。通常,虛擬機(jī)環(huán)境中可被記錄的唯一的記賬機(jī)制是虛擬處理器在虛擬機(jī)中運(yùn)行的時(shí)間量。在該實(shí)施例中,由于輸入/輸出控制器仿真器406正在虛擬機(jī)410中運(yùn)行,因此它運(yùn)行所花費(fèi)的時(shí)間自然被歸于子分區(qū),并允許生成準(zhǔn)確的記賬記錄。繼續(xù)圖8的描述,操作812示出響應(yīng)于確定客操作系統(tǒng)曾試圖訪問與輸入/輸出控制器仿真器相關(guān)聯(lián)的存儲(chǔ)器映射的IO空間來執(zhí)行上下文切換以執(zhí)行輸入/輸出控制器仿真器。例如,在本發(fā)明的一實(shí)施例中,系統(tǒng)管理程序400可被配置成截取對(duì)為IO控制器仿真器406保留的存儲(chǔ)器的訪問。在該示例實(shí)施例中,當(dāng)客操作系統(tǒng)220接觸到該存儲(chǔ)器時(shí),系統(tǒng)管理程序400可以截取該訪問并切換到仿真上下文414 ;將客操作系統(tǒng)220試圖寫入的值傳遞到存儲(chǔ)器;以及執(zhí)行IO控制器仿真器406?,F(xiàn)在轉(zhuǎn)向圖9,其示出了用于實(shí)施本發(fā)明的各方面的操作過程,包括操作900、 902,904,906和908。如圖所示,操作900開始該操作過程,并且操作902示出虛擬處理器執(zhí)行客操作系統(tǒng),其中客操作系統(tǒng)被配置成在虛擬機(jī)內(nèi)執(zhí)行。例如,在一實(shí)施例中,客操作系統(tǒng)220可由虛擬機(jī)410中的虛擬處理器執(zhí)行。如上所述,例如由狀態(tài)信息配置的邏輯處理器等虛擬處理器可在客OS上下文416中運(yùn)行客操作系統(tǒng)220。在該示例中,客操作系統(tǒng)可被存儲(chǔ)在分配給客分區(qū)的RAM中,且虛擬處理器可被配置成訪問分配給客機(jī)的RAM。繼續(xù)圖9的描述,操作904示出經(jīng)由IO消息傳遞信道從虛擬化服務(wù)提供者接收與輸入/輸出作業(yè)相關(guān)的信號(hào)。例如,在一實(shí)施例中,可經(jīng)由IO消息傳遞信道408接收異步事件,例如來自虛擬化服務(wù)提供者402的信號(hào)。例如,IO控制器仿真器406可響應(yīng)于從虛擬化服務(wù)提供者402接收到信號(hào)來執(zhí)行。響應(yīng)于接收到該信號(hào),系統(tǒng)管理程序400可切換到仿真上下文414并處理該信號(hào)。轉(zhuǎn)向操作906,其示出加載將虛擬地址映射到虛擬客物理地址的頁表。例如,在本發(fā)明的一實(shí)施例中,當(dāng)虛擬處理器進(jìn)入仿真上下文414時(shí),可將客操作系統(tǒng)220使用的頁表存儲(chǔ)在存儲(chǔ)器中,并且可加載將客虛擬地址映射到客物理地址的頁表。在該操作模式中,虛擬處理器(仿真在物理地址上操作的硬件設(shè)備)可被配置成在用于存儲(chǔ)器的虛擬地址總是等于物理地址的模式中運(yùn)行。即,在該模式中,可打開分頁,但是頁表以一對(duì)一方式映射到物理地址。這允許對(duì)直接存儲(chǔ)器地址操作的仿真。在相同的或另一示例實(shí)施例中,可以使客操作系統(tǒng)220使用的頁表對(duì)輸入/輸出控制器仿真器406可用,使得客虛擬地址中發(fā)出的指令可被轉(zhuǎn)換到客物理地址中。轉(zhuǎn)向操作908,其示出在虛擬機(jī)中執(zhí)行輸入/輸出控制器仿真器。例如,轉(zhuǎn)向圖4, 指示IO控制器仿真器406的指令可被存儲(chǔ)在與虛擬機(jī)410相關(guān)聯(lián)的客物理地址中,并由在仿真上下文414中運(yùn)行的虛擬處理器來執(zhí)行。繼續(xù)以上示例,當(dāng)完成該作業(yè)且虛擬化服務(wù)提供者402向IO控制器仿真器406發(fā)送了完成信號(hào)時(shí),系統(tǒng)管理程序400可接收該信號(hào), 并將虛擬處理器切換到仿真上下文414,并運(yùn)行輸入/輸出控制器仿真器406。輸入/輸出控制器仿真器406然后可處理虛擬化服務(wù)提供者402所取得的數(shù)據(jù),并將其插入到IO控制器驅(qū)動(dòng)程序412所請(qǐng)求的客物理存儲(chǔ)器中。輸入/輸出控制器仿真器406然后可向客操作系統(tǒng)220發(fā)送中斷,使得下一次其執(zhí)行時(shí),客操作系統(tǒng)可處理該中斷并且確定數(shù)據(jù)已被寫入存儲(chǔ)器。在該示例中,IO控制器仿真器406可被連接到中斷線。當(dāng)IO控制器仿真器406 運(yùn)行時(shí),它可設(shè)置虛擬處理器的狀態(tài)來反映中斷線正示出待決中斷。當(dāng)虛擬處理器被切換到客OS上下文416并運(yùn)行客操作系統(tǒng)220時(shí),客機(jī)將檢測(cè)到該中斷并通過例如運(yùn)行IO控制器驅(qū)動(dòng)程序412來服務(wù)該中斷。現(xiàn)在轉(zhuǎn)向圖10,其示出圖9的操作過程的替換實(shí)施例,包括操作1010-1016。操作 1010示出輸入/輸出控制器仿真器用高速緩存的數(shù)據(jù)來響應(yīng)來自客操作系統(tǒng)的輸入/輸出請(qǐng)求。例如,在本發(fā)明的一實(shí)施例中,輸入/輸出控制器仿真器406可將它預(yù)期客操作系統(tǒng)220將請(qǐng)求的數(shù)據(jù)存儲(chǔ)在虛擬機(jī)410的保留存儲(chǔ)器中。在客操作系統(tǒng)220請(qǐng)求數(shù)據(jù)的情況下,數(shù)據(jù)可從輸入/輸出控制器仿真器406控制的存儲(chǔ)器返回,而不必向虛擬化服務(wù)提供者402發(fā)送請(qǐng)求。在一示例實(shí)施例中,虛擬化服務(wù)提供者402可使用描述在虛擬機(jī)410中有多少保留存儲(chǔ)器可用于緩存數(shù)據(jù)、它正在服務(wù)來自物理計(jì)算機(jī)上的所有虛擬機(jī)的多少請(qǐng)求、與子分區(qū)相關(guān)聯(lián)的優(yōu)先級(jí)等的信息,來確定要發(fā)回多少數(shù)據(jù)。在另一示例實(shí)施例中,該數(shù)據(jù)可被緩存在存儲(chǔ)器中可由系統(tǒng)管理程序訪問的別處。在緩存的數(shù)據(jù)被請(qǐng)求的情況下, 該數(shù)據(jù)可被發(fā)送到仿真器,或者包含該存儲(chǔ)器的頁可被重新映射,使得輸入/輸出控制器仿真器可訪問包含該數(shù)據(jù)的系統(tǒng)物理地址。繼續(xù)圖10的描述,操作1012示出響應(yīng)于檢測(cè)到對(duì)映射到輸入/輸出控制器仿真器的寄存器的訪問來執(zhí)行輸入/輸出控制器仿真器。例如,IO仿真器406可被配置成在IO 驅(qū)動(dòng)程序412試圖訪問與該仿真器正在仿真的設(shè)備相關(guān)聯(lián)的IO端口或IO映射的存儲(chǔ)器時(shí)執(zhí)行。例如,系統(tǒng)管理程序400可被配置成用系統(tǒng)管理程序截取來標(biāo)記IO端口和存儲(chǔ)器, 并且如果IO驅(qū)動(dòng)程序412接觸到該資源,則系統(tǒng)管理程序400可截取訪問并執(zhí)行。系統(tǒng)管理程序400可檢查標(biāo)識(shí)了導(dǎo)致進(jìn)入仿真上下文414的端口的表;保存虛擬處理器的狀態(tài); 切換到仿真上下文414;以及將IO控制器驅(qū)動(dòng)程序412試圖寫入的信息傳遞到分配給IO控制器仿真器406的資源。繼續(xù)圖10的描述,操作1014示出響應(yīng)于檢測(cè)到對(duì)與輸入/輸出控制器仿真器相關(guān)聯(lián)的存儲(chǔ)器映射的IO空間的訪問來執(zhí)行輸入/輸出控制器仿真器。例如,在本發(fā)明的一實(shí)施例中,系統(tǒng)管理程序400可被配置成截取對(duì)為IO控制器仿真器406保留的存儲(chǔ)器的訪問。在該示例實(shí)施例中,當(dāng)客操作系統(tǒng)220接觸到該存儲(chǔ)器時(shí),系統(tǒng)管理程序400可以截取該訪問并切換到仿真上下文414 ;將客操作系統(tǒng)220試圖寫入的值傳遞到存儲(chǔ)器;以及執(zhí)行 IO控制器仿真器406。繼續(xù)圖10的示例,操作1016示出將執(zhí)行輸入/輸出控制器仿真器所花費(fèi)的處理器時(shí)間自動(dòng)歸于虛擬機(jī)。例如,在本發(fā)明的一實(shí)施例中,虛擬處理器運(yùn)行輸入/輸出控制器仿真器406所花費(fèi)的時(shí)間量可被記錄并對(duì)虛擬機(jī)410記賬。通常,虛擬機(jī)環(huán)境中可被記錄的唯一的記賬機(jī)制是虛擬處理器在虛擬機(jī)中運(yùn)行的時(shí)間量。在該實(shí)施例中,由于輸入/輸出控制器仿真器406正在虛擬機(jī)410中運(yùn)行,因此它運(yùn)行所花費(fèi)的時(shí)間自然被歸于子分區(qū), 并允許生成準(zhǔn)確的記賬記錄。上述詳細(xì)描述通過示例和/或操作圖闡明了系統(tǒng)和/或過程的各種實(shí)施例。就這些框圖和/或示例包含一個(gè)或多個(gè)功能和/或操作而言,本領(lǐng)域技術(shù)人員將理解,這些框圖或示例中的每一功能和/或操作都可由各種各樣的硬件、軟件、固件、或?qū)嶋H上其任意組合來單獨(dú)地和/或共同地實(shí)現(xiàn)。雖然已示出和描述了本文中描述的主題內(nèi)容的特定方面,但是本領(lǐng)域技術(shù)人員將明白,基于本文中的教導(dǎo),可作出改變和修改而不脫離本文中描述的主題內(nèi)容,并且其更廣方面以及因此所附權(quán)利要求的范圍旨在涵蓋落在本文中描述的主題內(nèi)容的真實(shí)精神和范圍內(nèi)的所有此類改變和修改。
權(quán)利要求
1.一種計(jì)算機(jī)系統(tǒng),包括用于將輸入/輸出控制器仿真器(406)配置成在虛擬機(jī)G10)中執(zhí)行的電路;以及用于將IO消息傳遞信道(408)配置成將所述輸入/輸出控制器仿真器(406)生成的輸入/輸出請(qǐng)求發(fā)送到虛擬化服務(wù)提供者G02)的電路。
2.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,還包括用于響應(yīng)于從所述虛擬化服務(wù)提供者接收到輸入/輸出作業(yè)完成信號(hào)來執(zhí)行所述輸入/輸出控制器仿真器的電路。
3.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,還包括用于用高速緩存在所述虛擬機(jī)中的數(shù)據(jù)來響應(yīng)來自被配置成在所述虛擬機(jī)中執(zhí)行的客操作系統(tǒng)的輸入/輸出請(qǐng)求的電路。
4.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,還包括用于在執(zhí)行所述輸入/輸出控制器仿真器之前將虛擬地址映射到客物理地址的電路。
5.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,還包括用于將系統(tǒng)管理程序配置成俘獲對(duì)與所述輸入/輸出控制器仿真器相關(guān)聯(lián)的存儲(chǔ)器映射的IO空間的訪問的電路。
6.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,還包括用于將執(zhí)行所述輸入/輸出控制器仿真器所花費(fèi)的處理器時(shí)間自動(dòng)歸于所述虛擬機(jī)的電路。
7.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,還包括用于根據(jù)安全策略來確定經(jīng)由所述IO消息傳遞信道發(fā)送的通信的電路。
8.如權(quán)利要求1所述的計(jì)算機(jī)系統(tǒng),其特征在于,還包括用于保存與所述虛擬機(jī)相關(guān)聯(lián)的狀態(tài)的電路。
9.一種包括可執(zhí)行指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括用于響應(yīng)于確定映射到輸入/輸出控制器仿真器G06)的寄存器被訪問來執(zhí)行上下文切換以執(zhí)行輸入/輸出控制器仿真器G06)的指令,其中所述輸入/輸出控制器仿真器 (406)被配置成在虛擬機(jī)G10)內(nèi)執(zhí)行;以及用于經(jīng)由IO消息傳遞信道(408)將所述輸入/輸出控制器仿真器(406)生成的輸入 /輸出請(qǐng)求發(fā)送到虛擬化服務(wù)提供者G02)的指令。
10.如權(quán)利要求9所述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,還包括用于響應(yīng)于確定客操作系統(tǒng)曾試圖訪問與輸入/輸出控制器仿真器相關(guān)聯(lián)的存儲(chǔ)器映射的IO空間來執(zhí)行上下文切換以執(zhí)行所述輸入/輸出控制器仿真器的指令。
全文摘要
本發(fā)明公開了一種虛擬機(jī)快速仿真輔助方法和系統(tǒng)。公開了用于減少虛擬機(jī)輸入/輸出仿真開銷并減小虛擬機(jī)體系結(jié)構(gòu)的攻擊面的技術(shù)。
文檔編號(hào)G06F9/455GK102207886SQ20111008701
公開日2011年10月5日 申請(qǐng)日期2011年3月30日 優(yōu)先權(quán)日2010年3月31日
發(fā)明者A·尼克勞斯, A·沃肯汀, J·A·斯塔克斯, J·奧辛斯, L·R·克力頓, R·A·維加 申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
团风县| 洮南市| 灵台县| 思南县| 城口县| 吴旗县| 霍林郭勒市| 承德市| 新竹市| 金寨县| 平谷区| 响水县| 新津县| 光泽县| 武功县| 英德市| 三亚市| 平顶山市| 桑植县| 陕西省| 花莲市| 宜春市| 吉林省| 同仁县| 怀柔区| 莱芜市| 客服| 宜章县| 和顺县| 浦县| 华容县| 韶关市| 平原县| 静乐县| 巴南区| 开平市| 中阳县| 洱源县| 泾源县| 眉山市| 两当县|