專利名稱:解決虛擬機監(jiān)控器和客戶操作系統(tǒng)間地址空間沖突的方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及虛擬機,更具體地說涉及解決在一個虛擬機監(jiān)控器和一個客戶操 作系統(tǒng)之間的地址空間沖突。
背景技術(shù):
傳統(tǒng)的虛擬機監(jiān)控器(VMM)通常運行在一臺計算機上并且向其它軟件給出一個 或多個虛擬機抽象。每個虛擬機可以起一個自給平臺的作用,其運行它自己的“客戶操作 系統(tǒng)”(即,一個由VMM作主的操作系統(tǒng))??蛻舨僮飨到y(tǒng)期望就好像它正運行在一臺專用 計算機而不是一個虛擬機上那樣進行操作。即,客戶操作系統(tǒng)期望控制各種計算機操作并 且在這些操作期間對計算機物理存儲器和存儲器映射的I/O設(shè)備具有不受限制的訪問。然 而,在一個虛擬機環(huán)境中,VMM應(yīng)當(dāng)能夠具有對計算機資源的最終控制以提供對虛擬機以及 在虛擬機之間的保護。為了實現(xiàn)這個,VMM —般截取和判優(yōu)所有由客戶操作系統(tǒng)進行的、對 計算機資源的訪問。利用現(xiàn)有的處理器(例如,IA-32微處理器),VMM不能截取客戶操作系統(tǒng)對硬件 資源的訪問,除非該VMM代碼和/或數(shù)據(jù)結(jié)構(gòu)的一部分位于和客戶操作系統(tǒng)相同的虛擬地 址空間中。然而,客戶操作系統(tǒng)不期望VMM代碼和/或數(shù)據(jù)結(jié)構(gòu)駐留在客戶操作系統(tǒng)的地 址空間中并且能夠試圖訪問由該VMM在這個地址空間中占有的一個區(qū)域,這會導(dǎo)致在該客 戶操作系統(tǒng)和VMM之間的地址空間沖突。這個沖突可能導(dǎo)致由VMM或者客戶操作系統(tǒng)執(zhí)行 的操作的異常終結(jié)。因此,需要一種將檢測和解決在一個VMM和一個客戶操作系統(tǒng)之間的地址空間沖 突的機制。
本發(fā)明在附圖的圖表中通過示例進行說明但不局限于此,其中類似的參考數(shù)字涉 及類似的單元,附圖包含圖1說明了一個虛擬機環(huán)境的一個實施例;圖2是依據(jù)本發(fā)明的一個實施例、一個用于解決在一個虛擬機監(jiān)控器和一個客戶 操作系統(tǒng)之間地址空間沖突的系統(tǒng)的一個框圖;圖3是依據(jù)本發(fā)明的一個實施例、一種用于解決在一個虛擬機監(jiān)控器和一個客戶 操作方法之間的地址空間沖突的方法的一個流程圖;圖4是依據(jù)本發(fā)明的一個實施例、一種用于重定位在一個虛擬機地址空間內(nèi)的虛 擬機內(nèi)核的方法的一個流程圖5說明了依據(jù)本發(fā)明的一個實施例、一個支持客戶去特權(quán)的虛擬機內(nèi)核的操 作;圖6是依據(jù)本發(fā)明的一個實施例、一種用于處理由一個客戶操作系統(tǒng)產(chǎn)生的虛擬 化陷阱的方法的一個流程圖;以及圖7是一個處理系統(tǒng)實施例的一個框圖。實施例描述描述了一種用于分解地址空間沖突的方法和裝置。在下面的描述中,闡述了許多 細(xì)節(jié),諸如在組件之間距離、制模類型、等等。然而,對于在本領(lǐng)域的技術(shù)人員來說,顯然可 以實踐本發(fā)明而不用這些具體的細(xì)節(jié)。在其它實例中,以框圖形式而不是詳細(xì)地顯示了眾 所周知的結(jié)構(gòu)和設(shè)備,以避免弄模糊本發(fā)明。在下面描述中,為了說明起見,闡述了許多具體的細(xì)節(jié)以便提供對本發(fā)明的一個 徹底了解。然而,對于在本領(lǐng)域的技術(shù)人員來說,顯然能夠?qū)嵺`本發(fā)明而不用這些具體的細(xì) 節(jié)。隨后的某些部分詳細(xì)說明依據(jù)在一個計算機存儲器中的數(shù)據(jù)位上的操作的算法 和符號表示給出。這些算法描述和表示是由在數(shù)據(jù)處理領(lǐng)域的哪些技術(shù)人員使用來最有效 地把他們的工作實質(zhì)傳達給在本領(lǐng)域其它人員的裝置。在這兒的一個算法,通常被認(rèn)為是 一個導(dǎo)致一個期望結(jié)果的、有條理的步驟序列(self-consistent sequence ofst印s)。這 些步驟是那些需要物理量的物理操作的步驟。通常,雖然不是必要的,這些量采取電的或者 磁的、能夠被存儲、傳送、組合、比較、以及否則被操作的信號的形式。有時已經(jīng)便利地證明, 主要是由于公共用途的原因,把這些信號稱為位、值、元素、符號、字符、項、數(shù)字、等等。然而應(yīng)當(dāng)意識到所有這些和類似的項與適當(dāng)?shù)奈锢砹坑嘘P(guān)而且僅僅是應(yīng)用于這 些量的適當(dāng)標(biāo)記。除非另有具體地如從下面討論中那樣明顯的說明要理解在整個本發(fā)明 中,使用諸如“處理”或者“計算”或者“計算”或者“確定”或者“顯示”等等的術(shù)語的討論 可能涉及一個計算機系統(tǒng)、或者類似電子計算設(shè)備的動作和處理過程,這些計算機系統(tǒng)或 者計算設(shè)備把被表示為在該計算機系統(tǒng)的寄存器和存儲器中的物理(電子)量的數(shù)據(jù)操作 和轉(zhuǎn)換成為被類似地表示為在計算機系統(tǒng)存儲器或者寄存器或者其他這樣的信息存儲器、 傳輸或者顯示設(shè)備中的物理量的其它數(shù)據(jù)。本發(fā)明還涉及用于執(zhí)行在此的操作的裝置。這個裝置可以為所要求的目的特別構(gòu) 造,或者它可以包含一臺有選擇地由保存在計算機中的一個計算機程序激活或者重新配置 的通用計算機。這樣的一個計算機程序可能保存在一個計算機可讀存儲介質(zhì)中、這些存儲 介質(zhì)諸如,但不局限于,包含軟盤、光盤、CD-ROM、和磁性光盤的任何類型磁盤、只讀存儲器 (ROM)、隨機訪問存儲器(RAM)、EPROM、EEPR0M、磁或者光卡、或者任何類型適合于存儲電子 指令的介質(zhì),這些中的每一個都和一條計算機系統(tǒng)總線耦合。指令可使用一個或多個處理 設(shè)備(例如,處理器、中央處理單元、等等)執(zhí)行。在此給出的算法和顯示不是內(nèi)在地與任何特定的計算機或者其它裝置相關(guān)??梢?和依據(jù)在此的示教的程序一起使用各種通用的機器,或者它可以證明構(gòu)造一個更專用的裝 置以執(zhí)行所要求的方法步驟是方便的。將從在下面的描述中發(fā)現(xiàn)用于各種這些機器的所需 要的結(jié)構(gòu)。此外,本發(fā)明不參考任何特定編程語言加以描述。將要理解各種編程語言可以 用來實現(xiàn)在此描述的本發(fā)明示教。
在下面實施例的詳細(xì)說明中參考附圖,附圖通過例子說明了可以實施本發(fā)明的具體實施例。在附圖中,遍及幾個視圖,類似的數(shù)字實質(zhì)上描述了類似的組件。足夠詳細(xì)地描 述了這些實施例,以便本領(lǐng)域的那些技術(shù)人員能實施本發(fā)明??梢允褂闷渌膶嵤├约?可以進行結(jié)構(gòu)、邏輯、和電的變化而沒有背離本發(fā)明的范圍。此外,將要理解本發(fā)明的各種 實施例,雖然是不同的,但不是必須是互斥的。例如,在一個實施例中描述的一個特定屬性、 結(jié)構(gòu)、或者特征可以包含在其它實施例中。以下詳細(xì)說明,因此,不以一個有限的觀念被采 用,而且本發(fā)明的范圍僅僅由附加權(quán)利要求以及這樣的權(quán)利要求的等同物的全部范圍所定 義。本發(fā)明中的方法和裝置提供了 一種用于解決在一個客戶操作系統(tǒng)和一個虛擬機 監(jiān)控器(VMM)之間的地址空間沖突的機制。圖1說明了一個其中本發(fā)明可以進行操作的虛 擬機環(huán)境100的一個實施例。在這個實施例中,裸平臺硬件116包含一個計算平臺,其可 以能夠,例如,執(zhí)行一個標(biāo)準(zhǔn)操作系統(tǒng)(OS)或者一個諸如VMM 112的虛擬機監(jiān)控器(VMM)。 VMM,雖然一般地以軟件形式實現(xiàn),可以向一個高層軟件導(dǎo)出一個諸如一個模擬的裸機接 口。這樣的高層軟件可能包含一個標(biāo)準(zhǔn)或者實時0S,雖然本發(fā)明在這方面不局限于這個范 圍,而且,例如做為選擇,一個VMM可以在另一個VMM中,或者在另一個VMM之上運行。VMM 和它們的典型特征和功能對于在本領(lǐng)域的那樣技術(shù)人員是眾所周知的,而且可以例如以軟 件、固件或者各種技術(shù)的一個組合的形式實現(xiàn)。如上所述,VMM向其它軟件(即,“客戶”軟件)給出一個或多個虛擬機(VM)的抽 象。圖1中顯示了兩個VM,102和114每個VM包含一個諸如客戶OS 104或者106的客戶OS 以及各種客戶軟件應(yīng)用108-110。每一個客戶OS 104和106都期望控制對在客戶OS 104 或者106在其上運行的硬件平臺中的物理資源(例如,存儲器和存儲器映射的I/O設(shè)備) 的訪問,以及執(zhí)行其它的功能。然而,在一個虛擬機環(huán)境中,VMM 112應(yīng)當(dāng)能夠具有對物理資 源的最終控制以提供對VM 102和114以及在VM 102和114之間的保護。VMM 112通過截 取客戶OS 104和106對計算機物理資源的所有訪問來實現(xiàn)這個目的。例如,一個客戶去優(yōu) 先級技術(shù)可以用來允許VMM 112截取上述的訪問??蛻羧?yōu)先級迫使所有的客戶軟件在一 個不允許軟件訪問某些硬件資源的硬件特權(quán)級別處運行。結(jié)果,每當(dāng)客戶OS 104或者106 試圖訪問任何硬件資源時,它被“陷入”到VMM 112中,即,如果一個由客戶操作系統(tǒng)發(fā)起的 操作涉及訪問這樣的硬件資源的話,則VMM 112接收對這個操作的控制。應(yīng)當(dāng)注意到任何 在本技術(shù)領(lǐng)域中已知的其它技術(shù)可以用來把對一個類似操作的控制從該客戶OS 104或者 106 轉(zhuǎn)移到 VMM 112。當(dāng)使用允許VMM 112截取客戶OS 104和106對計算機物理資源的訪問的客戶去 特權(quán)(cbprivileging)或者其它技術(shù)時,一部分VMM代碼和/或數(shù)據(jù)結(jié)構(gòu)可以在結(jié)構(gòu)上被 要求駐留在和每一個客戶0S104和106相同的虛擬地址空間中。然而,因為客戶OS 104和 106不知道VMM的存在,它們可以試圖訪問在與該客戶OS 104或者106有關(guān)的虛擬地址空 間中、由VMM代碼和/或數(shù)據(jù)結(jié)構(gòu)占據(jù)的一個區(qū)域。這樣一個嘗試可能導(dǎo)致在客戶OS中的 代碼和數(shù)據(jù)結(jié)構(gòu)和在該虛擬地址空間中的VMM代碼和數(shù)據(jù)結(jié)構(gòu)之間的沖突,這導(dǎo)致由客戶 0S104或者106、或者VMM 112執(zhí)行的一個操作的異常終結(jié)。本發(fā)明提供了一個用于解決這 樣的地址空間沖突的機制。圖2是依據(jù)本發(fā)明的一個實施例、一個用于解決在一個VMM和一個客戶OS之間地址空間沖突的系統(tǒng)200的一個框圖。系統(tǒng)200包含裸平臺硬件214,其包含一個能夠執(zhí)行一 個客戶OS(例如,客戶OS 104或者106)、一個VMM(例如,VMM 112)、等等的計算平臺。為 客戶軟件和VMM分配兩個單獨的地址空間204和202。S卩,VM地址空間204被分配來保持 客戶OS及其它客戶軟件的代碼和數(shù)據(jù)結(jié)構(gòu),以及VMM地址空間202被分配用于VMM代碼和 數(shù)據(jù)結(jié)構(gòu)。如上所述,VMM code和/或數(shù)據(jù)結(jié)構(gòu)中的某些組件可以在結(jié)構(gòu)上被要求駐留在和 客戶OS相同的地址空間中,以允許VMM截取客戶OS對硬件資源的訪問。例如,對于IA-32 指令系統(tǒng)結(jié)構(gòu)(ISA),當(dāng)客戶去特權(quán)被用來確保VMM對客戶OS訪問硬件資源的控制時,一個 包含指向陷阱處理例程的指針的中斷描述符表(IDT)在結(jié)構(gòu)上被要駐留在和客戶OS相同 的地址空間中。將在下面結(jié)合圖5和6更詳細(xì)地描述支持客戶去特權(quán)的本發(fā)明的一個實施 例。對于其它ISA,VMM代碼和/或數(shù)據(jù)結(jié)構(gòu)的各種其它部分可以在結(jié)構(gòu)上被要求駐留在和 客戶OS相同的空間地址中,以允許VMM控制客戶OS對硬件資源進行的訪問。在一個實施例中,VMM代碼和結(jié)構(gòu)被分成兩個部分。VMM的第一部分包含一組被要 求駐留在客戶OS的地址空間,即VM地址空間204中的代碼和/或數(shù)據(jù)結(jié)構(gòu)。VMM的第二部 分包含其余的VMM代碼和數(shù)據(jù)結(jié)構(gòu)。在一個實施例中,一個軟件程序(被稱為虛擬機內(nèi)核 210)收集被要求位于在和客戶OS相同的地址空間中的VMM代碼和/或數(shù)據(jù)結(jié)構(gòu)的一個最 小集合。其余的VMM代碼和數(shù)據(jù)結(jié)構(gòu)被編譯為一個單獨的程序并且位于VMM地址空間202 中。虛擬機內(nèi)核(VMK) 210然后把它自己映射成為VM地址空間204和VMM地址空間202。
隨后,當(dāng)客戶OS試圖訪問在VM地址空間204中、由VMM代碼和/或數(shù)據(jù)結(jié)構(gòu)占據(jù) 的一個區(qū)域時,VMK 210檢測到客戶OS的這個嘗試。在一個實施例中,如果一個由客戶OS 發(fā)起的事件可能導(dǎo)致在客戶OS和VMM之間的一個地址空間沖突的話,VMK 210接收對這個 事件的控制??蛻羧ヌ貦?quán)或者在本技術(shù)領(lǐng)域已知的任何其它硬件或者軟件機制可以用來把 對這樣一個事件的控制從客戶OS轉(zhuǎn)移到駐留在VM地址空間204中的VMM代碼和/或數(shù)據(jù) 結(jié)構(gòu)。VMK 210然后計算這個事件以確定它的原因。當(dāng)檢測到該事件是由客戶OS試圖訪 問由VMM代碼和/或數(shù)據(jù)結(jié)構(gòu)占據(jù)的區(qū)域所引起的時,該VMK 210把它自己重新映射到在 VM地址空間204中的一個不同區(qū)域以允許客戶OS訪問先前由VMK 210使用的區(qū)域。一種 用于在VM地址空間204內(nèi)重定位VMK 210的方法的一個實施例在下面結(jié)合圖4進行了更 詳細(xì)的描述。圖3是依據(jù)本發(fā)明的一個實施例、一個用于解決在一個VMM和一個客戶OS之間地 址空間沖突的方法300的一個實施例的流程圖。方法300以把VMM劃分成為第一部分和第 二部分開始(處理塊304)。如上所述,第一部分包含一組在結(jié)構(gòu)上被要求駐留在和客戶OS 相同的地址空間中的VMM代碼和/或數(shù)據(jù)結(jié)構(gòu)。VMM的第二部分包含其余的VMM代碼和數(shù) 據(jù)結(jié)構(gòu)。在一個實施例(在下面更詳細(xì)描述)中,VMM的第一部分包含一組陷阱處理程序 和一個中斷描述符表(IDT)。在替換的實施例中,第一部分包含必須駐留在和客戶OS相同 的地址空間中的、VMM的各種其它數(shù)據(jù)結(jié)構(gòu)和代碼。接下來,創(chuàng)建一個第一地址空間(即,VM地址空間204)來保持客戶OS及其它客 戶軟件的代碼和數(shù)據(jù)結(jié)構(gòu)(處理塊306),以及創(chuàng)建用于VMM代碼和數(shù)據(jù)結(jié)構(gòu)的一個第二地 址空間(即,VMM地址空間202)(處理塊308)。在一個實施例中,在引導(dǎo)處理過程期間創(chuàng)建這些地址空間。此外,VMM的第一部分被映射到VM地址空間和VMM地址空間中(處理塊310),以 及VMM的第二部分被載入到VMM地址空間中(處理塊312)。在處理塊314處,檢測到客戶OS試圖訪問由VMM的第一部分占據(jù)的一個區(qū)域。在 一個實施例中,如果由客戶OS發(fā)起的一個事件可能導(dǎo)致在客戶操作系統(tǒng)和VMM之間的一 個地址空間沖突的話,通過把對這個事件的控制轉(zhuǎn)移到VMM的第一部分來檢測這樣一個試 圖。在下面結(jié)合圖5和6更詳細(xì)地描述檢測一個可能的地址空間沖突的一個實施例。此后,在處理塊316處,VMM的第一部分被重定位到在該VM地址空間中的另一個 區(qū)域,以允許客戶OS對先前由VMM第一部分占據(jù)的區(qū)域的訪問。任何后續(xù)的試圖對由VMM 第一部分占據(jù)的新區(qū)域的訪問將再次導(dǎo)致它在VM地址空間內(nèi)的重新定位。在圖4中顯示 了一種用于重定位一個包含VMM第一部分的VMK的方法的一個實施例。參見圖4,在檢測到在客戶OS和VMM之間的一個地址空間沖突之后(處理塊404), 為一個未使用的區(qū)域搜索該VM地址空間(處理塊406)。在判定框408處,進行有關(guān)一個未 使用的區(qū)域是否存在于VM地址空間中的確定。如果該確定是肯定的,則包含VMM代碼和數(shù) 據(jù)結(jié)構(gòu)第一部分的VMK被重新映射到這個未使用的區(qū)域中,而且控制被轉(zhuǎn)移回到客戶0S, 其現(xiàn)在可以訪問先前由VMK使用的區(qū)域。做為選擇,如果在VM地址空間中不存在未使用的區(qū)域,即客戶OS已經(jīng)使用了整個 VM地址空間的話,則在該VM地址空間內(nèi)選擇一個隨機區(qū)域(處理塊412),位于被選定區(qū)域 處的存儲器內(nèi)容被復(fù)制到在VMM地址空間中的一個緩存器(處理塊414),而且VMK被重新 映射到在VM地址空間中的選定區(qū)域中(處理塊416)。由在包含新VMK區(qū)域的原有內(nèi)容的 VMM地址空間中的緩存器通過模擬的存儲器訪問來服務(wù)對這個選定區(qū)域(即,新的VMK區(qū) 域)的后續(xù)存儲器訪問。在一個實施例中,通過定期地把VMK重定位到在VM地址空間內(nèi)的 隨機區(qū)域直到發(fā)現(xiàn)一個很少被使用的區(qū)域為止,來減少這樣的模擬存儲器引用的頻率。圖5說明了依據(jù)本發(fā)明的一個實施例、一個支持客戶去特權(quán)的VMK的操作。如上 所述,客戶去特權(quán)導(dǎo)致客戶OS在一個較低特權(quán)級別處運行,以便每當(dāng)客戶OS試圖發(fā)布有關(guān) 該處理器系統(tǒng)狀態(tài)的操作的特許指令時,它被“陷入”到VMM中。在一個實施例中,支持客戶 去特權(quán)的VMM在中斷描述符表(IDT)514中安置指向陷阱處理例程(S卩,陷阱處理程序552) 的指針。某些ISA(例如,IA-32 ISA)要求IDT 514駐留在當(dāng)前活動的虛擬地址空間(即, VM地址空間504)中。在一個實施例中,在IDT 514中的入口(entry)是任務(wù)門,其提供了 一個地址空間切換。即,當(dāng)產(chǎn)生一個陷阱時,為一個指向陷阱處理例程的指針?biāo)阉鱅DT 514。 如果這個指針是一個任務(wù)門,它將允許一個到VMM地址空間的直接切換,該VMM地址空間包 含用于產(chǎn)生陷阱的一個陷阱處理例程。因此,雖然任務(wù)門它自己必須駐留在該VM地址空間 中,一個對應(yīng)于任務(wù)門的陷阱處理程序不必要駐留在VM地址空間中。在另一個實施例中, 在IDT 514中的入口是陷阱門或者中斷門,其不提供地址空間切換。因此,與這樣的IDT入 口有關(guān)的陷阱處理程序必須駐留在VM地址空間中。此外,VMM可以在VM地址空間中放置 其它數(shù)據(jù)結(jié)構(gòu)(例如,總體描述符表)的陰影版本。在一個實施例中,VMK 510收集必須位于VM地址空間中的陷阱處理程序和/或數(shù) 據(jù)結(jié)構(gòu)(例如,IDT 514)的一個最小集合在一起,把它們映射成為VM地址空間504和VMM地 址空間502,并且把保持VMK 510的頁的訪問權(quán)限設(shè)置為最特權(quán)的級別(例如,對于IA-32微處理器,具有環(huán)=O的“超級用戶”特權(quán)級別)。如上所述,客戶OS運行在去特權(quán)模式中(例如,對于IA-32微處理器,具有環(huán)=3的“用戶”模式)。結(jié)果,在一個實施例中,每當(dāng)客 戶OS試圖訪問有特權(quán)的機器資源時,客戶OS產(chǎn)生虛擬化陷阱,有特權(quán)的機器資源包括保持 用最高特權(quán)訪問權(quán)限保護的VMK 510的頁。在一個實施例中,當(dāng)產(chǎn)生一個虛擬化陷阱時,為一個指向陷阱處理程序的相應(yīng)指 針?biāo)阉鱅DT 514。在一個實施例中,陷阱可以需要由VMM駐留陷阱處理程序處理。在這個實 施例中,VMK執(zhí)行兩個地址空間切換一一個把該陷阱傳送到在VMM地址空間502中的陷 阱處理程序的切換,以及一個在該陷阱已經(jīng)由VMM駐留的陷阱處理程序服務(wù)之后轉(zhuǎn)換回到 VM地址空間504的第二切換。做為選擇,能夠在一個VMK駐留處理程序中處理一個陷阱。例如,一個陷阱可以由 客戶OS中的一條指令引起以復(fù)位在該處理器的寄存器中的一個標(biāo)記。這樣的一個陷阱能 夠完全在陷阱處理程序552中處理,而不用把控制轉(zhuǎn)移到在VMM地址空間502中的VMM,而 且這樣一個實現(xiàn)將導(dǎo)致更好的性能。一種類型的虛擬化陷阱是當(dāng)客戶OS試圖訪問當(dāng)前由VMK 510使用的VM地址空間 504中的一個區(qū)域時產(chǎn)生的一個沖突錯誤。如上面結(jié)合圖4更詳細(xì)地描述的那樣,VMK 510 通過把它自己重新映射到在該VM地址空間504中的一個新區(qū)域中來處理這些沖突錯誤。圖6是依據(jù)本發(fā)明的一個實施例、一種用于處理由一個客戶OS產(chǎn)生的虛擬化陷阱 的方法600的一個流程圖。方法600以把由VMK占據(jù)的區(qū)域的訪問權(quán)限設(shè)置為一個比和該 客戶OS有關(guān)的特權(quán)級別更高的特權(quán)級別開始(處理塊604)。例如,所有VMK頁可以用僅僅 是超級用戶的特權(quán)(環(huán)=0)進行映射,而客戶OS可以被設(shè)置為運行在一個去特權(quán)的用戶 狀態(tài)(環(huán)=3)中。在處理塊606處,由客戶OS產(chǎn)生的一個陷阱被接收了。該陷阱由客戶OS試圖訪 問特權(quán)的硬件資源引起。在判定框608處,進行有關(guān)該陷阱是否能夠由VMK內(nèi)部處理(例 如,在一個VMK駐留的陷阱處理程序中)的確定。如果該陷阱太復(fù)雜以致不能由VMK處理, 它被轉(zhuǎn)交到VMM地址空間(例如,被轉(zhuǎn)交給VMM駐留的陷阱處理程序)(處理塊610),然后 在該陷阱已經(jīng)由VMM服務(wù)之后繼續(xù)回到VM地址空間(處理塊612)。此后,對引起該陷阱的 事件的控制返回到客戶OS (處理塊620)。做為選擇,如果陷阱由VMK內(nèi)部處理,則做出有關(guān)該陷阱是否由在VMK代碼和數(shù)據(jù) 結(jié)構(gòu)和客戶OS的代碼和數(shù)據(jù)結(jié)構(gòu)之間的一個地址空間沖突引起的一個確定(判定框614)。 如果該陷阱實際上是由一個地址空間沖突所引起,則VMK代碼和數(shù)據(jù)結(jié)構(gòu)被重定位到在該 VM地址空間中的一個新區(qū)域(處理塊618)。做為選擇,在一個相應(yīng)陷阱處理程序中處理該 陷阱(處理塊616)。此后,對引起該陷阱的事件的控制返回到客戶0S(處理塊620)。圖7是一個處理系統(tǒng)實施例的一個框圖。處理系統(tǒng)700包含處理器720和存儲器 730。處理器720能夠是能夠執(zhí)行軟件的任何類型處理器,諸如微處理器、數(shù)字信號處理器、 微控制器、等等。處理系統(tǒng)700能夠是一臺個人計算機(PC)、大型機、手持設(shè)備、便攜式計算 機、機頂盒、或者任何其它包含軟件的系統(tǒng)。存儲器730能夠是一個硬盤、軟盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、閃 速存儲器、或者任何其它類別可由處理器720讀取的機器介質(zhì)。存儲器730能夠存儲用于 執(zhí)行本發(fā)明各種方法實施例實現(xiàn)的指令,諸如方法300、400和600 (圖3、4和6)。
將要理解以上描述是用于說明性的,而不是限制。依據(jù)以上描述的讀取和理解,許多其它的實施例對于本領(lǐng)域那些技術(shù)人員是顯而易見的。本發(fā)明的范圍,因此應(yīng)當(dāng)參考 附加的權(quán)利要求,以及這樣的權(quán)利要求的等同物的全部范圍,來進行確定。
權(quán)利要求
一種方法,包含檢測客戶操作系統(tǒng)試圖訪問在第一地址空間內(nèi)、由虛擬機監(jiān)控器(VMM)的第一部分占據(jù)的區(qū)域;以及在第一地址空間內(nèi)重定位VMM的第一部分以允許客戶操作系統(tǒng)訪問先前由VMM的第一部分占據(jù)的區(qū)域。
2.如權(quán)利要求1所述的方法,其特征在于VMM的第一部分包含一組在結(jié)構(gòu)上要求駐留 在第一地址空間中的VMM代碼和數(shù)據(jù)結(jié)構(gòu)。
3.如權(quán)利要求1所述的方法,其特征在于VMM的第一部分包含一組陷阱處理程序和中 斷描述符表(IDT)。
4.如權(quán)利要求1所述的方法,進一步包含 把VMM劃分成為第一部分和第二部分; 創(chuàng)建與客戶操作系統(tǒng)有關(guān)的第一地址空間; 創(chuàng)建與VMM有關(guān)的第二地址空間;在與VMM有關(guān)的第二地址空間中定位VMM的第二部分;以及 把該VMM的第一部分映射到第一地址空間和第二地址空間中。
5.如權(quán)利要求1所述的方法,進一步包含當(dāng)由客戶操作系統(tǒng)發(fā)起的事件可能引起在客戶操作系統(tǒng)和VMM之間的地址空間沖突 時,接收對該事件的控制。
6.如權(quán)利要求5所述的方法,其特征在于接收控制進一步包含把由VMM第一部分占據(jù)的部分的訪問權(quán)限設(shè)置為比與客戶操作系統(tǒng)有關(guān)的特權(quán)級別 更高的特權(quán)級別;以及接收由客戶操作系統(tǒng)試圖訪問具有比與該客戶操作系統(tǒng)有關(guān)的特權(quán)級別更高的特權(quán) 級別的硬件資源所引起的陷阱。
7.如權(quán)利要求6所述的方法,進一步包含 確定該陷阱能夠由VMM的第一部分處理; 執(zhí)行與該陷阱有關(guān)的代碼;以及返回對該事件的控制到客戶操作系統(tǒng)。
8.如權(quán)利要求6所述的方法,進一步包含 確定該陷阱應(yīng)當(dāng)由VMM的第二部分處理; 把該陷阱傳送到VMM的第二部分;在與該陷阱有關(guān)的代碼由VMM的第二部分執(zhí)行了之后把對該事件的控制傳遞到客戶 操作系統(tǒng)。
9.如權(quán)利要求1所述的方法,其特征在于重定位VMM的第一部分進一步包含 在第一地址空間內(nèi)查找未使用的區(qū)域;以及把該VMM的第一部分重新映射到該未使用的區(qū)域中。
10.如權(quán)利要求1所述的方法,其特征在于重定位VMM的第一部分進一步包含 確定在該第一地址空間中沒有未使用的區(qū)域存在;在第一地址空間內(nèi)選擇隨機區(qū)域;復(fù)制位于該隨機區(qū)域處的存儲器的內(nèi)容到第二地址空間;以及把該VMM的第一部分重新映射到該隨機區(qū)域中。
11.如權(quán)利要求10所述的方法,進一步包含接收對由客戶操作系統(tǒng)發(fā)起的事件的控制,該事件對應(yīng)于客戶操作系統(tǒng)試圖訪問先前 位于該隨機區(qū)域處的存儲器的內(nèi)容;以及訪問在第二地址空間中的、復(fù)制的存儲器內(nèi)容。
12.如權(quán)利要求11所述的方法,進一步包含周期性地把該VMM第一部分重定位到在第 一地址空間內(nèi)的隨機區(qū)域,直到找到很少被訪問的區(qū)域為止。
13.一種裝置,包含與客戶操作系統(tǒng)有關(guān)的第一地址空間;與虛擬機監(jiān)控器(VMM)有關(guān)的第二地址空間;以及虛擬機內(nèi)核,用于檢測客戶操作系統(tǒng)試圖對在第一地址空間內(nèi)、由VMM第一部分占據(jù) 的區(qū)域的訪問,以及在第一地址空間內(nèi)重定位該VMM的第一部分以允許客戶操作系統(tǒng)訪問 先前由VMM第一部分占據(jù)的區(qū)域。
14.如權(quán)利要求13所述的裝置,其特征在于VMM的第一部分包含一組在結(jié)構(gòu)上要求駐 留在第一地址空間中的VMM代碼和數(shù)據(jù)結(jié)構(gòu)。
15.如權(quán)利要求13所述的裝置,其特征在于VMM的第一部分包含一組陷阱處理程序和 中斷描述符表(IDT)。
16.如權(quán)利要求13所述的裝置,其特征在于虛擬機內(nèi)核把VMM劃分成為第一部分和 第二部分,把VMM的第二部分定位在與該VMM有關(guān)的第二地址空間中,以及把VMM的第一部 分映射到第一地址空間和第二地址空間中。
17.如權(quán)利要求13所述的裝置,其特征在于當(dāng)由客戶操作系統(tǒng)發(fā)起的事件可能引起 在客戶操作系統(tǒng)和VMM之間的地址空間沖突時,虛擬機內(nèi)核將接收對該事件的控制。
18.如權(quán)利要求13所述的裝置,其特征在于虛擬機內(nèi)核通過把由VMM第一部分占據(jù) 的部分的訪問權(quán)限設(shè)置為比與該客戶操作系統(tǒng)有關(guān)的特權(quán)級別更高的特權(quán)級別,以及通過 接收由客戶操作系統(tǒng)試圖訪問具有比與該客戶操作系統(tǒng)有關(guān)的特權(quán)級別更高的特權(quán)級別 的硬件資源所引起的陷阱,來接收控制。
19.如權(quán)利要求18所述的裝置,其特征在于虛擬機內(nèi)核將進一步?jīng)Q定該陷阱能夠由 VMM的第一部分處理,執(zhí)行與該陷阱有關(guān)的代碼,以及返回對該事件的控制到客戶操作系 統(tǒng)。
20.如權(quán)利要求18所述的裝置,其特征在于該虛擬機內(nèi)核將進一步確定該陷阱應(yīng)當(dāng) 由VMM的第二部分處理、把該陷阱傳遞到VMM的第二部分、以及在與該陷阱有關(guān)的代碼由 VMM的第二部分執(zhí)行了之后把對該事件的控制傳遞到該客戶操作系統(tǒng)。
21.如權(quán)利要求13所述的裝置,其特征在于該虛擬機內(nèi)核將通過在第一地址空間內(nèi) 查找未使用的區(qū)域以及把該VMM第一部分重新映射到未使用的區(qū)域中來重定位VMM的第一 部分。
22.如權(quán)利要求13所述的裝置,其特征在于該虛擬機內(nèi)核將通過確定在該第一地址 空間中沒有未使用的區(qū)域存在、在該第一地址空間內(nèi)選擇隨機區(qū)域、復(fù)制位于該隨機區(qū)域 處的存儲器的內(nèi)容到第二地址空間中、以及把該VMM第一部分重新映射到該隨機區(qū)域中來 重定位VMM的第一部分。
23.如權(quán)利要求13所述的裝置,其特征在于該虛擬機內(nèi)核將接收對由客戶操作系統(tǒng) 發(fā)起的事件的控制,其中該事件對應(yīng)于客戶操作系統(tǒng)試圖訪問先前位于該隨機區(qū)域處的存 儲器的內(nèi)容,以及訪問在第二地址空間中的、復(fù)制的存儲器內(nèi)容。
24.如權(quán)利要求13所述的裝置,其特征在于該虛擬機內(nèi)核將周期性地把該VMM第一 部分重定位到在第一地址空間內(nèi)的隨機區(qū)域,直到找到很少被訪問的區(qū)域為止。
25.—種系統(tǒng),包含包含與客戶操作系統(tǒng)有關(guān)的第一地址空間和與虛擬機監(jiān)控器(VMM)有關(guān)的第二地址 空間的存儲器;以及與該存儲器耦合的處理器,用于檢測客戶操作系統(tǒng)試圖對在第一地址空間內(nèi)、由VMM 第一部分占據(jù)的區(qū)域的訪問,以及在第一地址空間內(nèi)重定位該VMM的第一部分以允許客戶 操作系統(tǒng)訪問先前由VMM第一部分占據(jù)的區(qū)域。
26.如權(quán)利要求25所述的系統(tǒng),其特征在于VMM的第一部分包含一組在結(jié)構(gòu)上要求駐 留在第一地址空間中的VMM代碼和數(shù)據(jù)結(jié)構(gòu)。
27.如權(quán)利要求25所述的系統(tǒng),其特征在于VMM的第一部分包含一組陷阱處理程序和 中斷描述符表(IDT)。
28.一種提供指令的計算機可讀介質(zhì),當(dāng)這些指令在處理器上執(zhí)行時,導(dǎo)致所述處理器 執(zhí)行以下操作檢測客戶操作系統(tǒng)試圖訪問在第一地址空間內(nèi)、由虛擬機監(jiān)控器(VMM)的第一部分占 據(jù)的區(qū)域;以及在第一地址空間內(nèi)重定位VMM的第一部分以允許客戶操作系統(tǒng)訪問先前由VMM的第一 部分占據(jù)的區(qū)域。
29.如權(quán)利要求28所述的計算機可讀介質(zhì),包含進一步的指令,其導(dǎo)致處理器執(zhí)行以 下的操作在第一地址空間內(nèi)查找未使用的區(qū)域;以及把該VMM的第一部分重新映射到該未使用的區(qū)域中。
30.如權(quán)利要求28所述的計算機可讀介質(zhì),包含進一步的指令,其導(dǎo)致處理器執(zhí)行以 下的操作確定在該第一地址空間中沒有未使用的區(qū)域存在;在第一地址空間內(nèi)選擇隨機區(qū)域;復(fù)制位于該隨機區(qū)域處的存儲器內(nèi)容到第二地址空間;以及把該VMM的第一部分重新映射到該隨機區(qū)域中。
全文摘要
在一個實施例中,一種用于解決地址空間沖突的方法包含檢測一個客戶操作系統(tǒng)試圖訪問由一個虛擬機監(jiān)控器的一個第一部分占據(jù)的一個區(qū)域,以及在該第一地址空間中重新定位該虛擬機監(jiān)控器的第一部分以允許客戶操作系統(tǒng)訪問先前由該虛擬機監(jiān)控器的第一部分占據(jù)的區(qū)域。
文檔編號G06F9/40GK101826030SQ201010149539
公開日2010年9月8日 申請日期2001年12月20日 優(yōu)先權(quán)日2000年12月27日
發(fā)明者A·卡吉, E·科塔-羅布勒斯, G·奈格爾, M·科祖徹, R·烏利, S·仇, S·耶亞辛, S·舍恩博格 申請人:英特爾公司