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

虛擬機(jī)環(huán)境中的客機(jī)物理地址虛擬化方法和系統(tǒng)的制作方法

文檔序號(hào):6554291閱讀:262來源:國知局
專利名稱:虛擬機(jī)環(huán)境中的客機(jī)物理地址虛擬化方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)編程領(lǐng)域,尤其涉及在虛擬機(jī)環(huán)境中由第二虛擬機(jī)訪問對(duì)第一虛擬機(jī)可用的主機(jī)資源。
背景技術(shù)
虛擬計(jì)算允許每一個(gè)具有其自己的操作系統(tǒng)的多個(gè)虛擬機(jī)運(yùn)行在主計(jì)算機(jī)上。主計(jì)算機(jī)具有允許主計(jì)算機(jī)執(zhí)行虛擬機(jī)程序的指令的虛擬化器程序,虛擬機(jī)程序可具有與主計(jì)算機(jī)不同的CPU模型。主計(jì)算機(jī)虛擬化器程序也可虛擬化主機(jī)的硬件資源以供虛擬機(jī)使用。相對(duì)于主計(jì)算機(jī),把請(qǐng)求諸如CPU、存儲(chǔ)器、I/O和磁盤空間等硬件資源的虛擬機(jī)稱為客機(jī)。
在虛擬機(jī)中,客計(jì)算機(jī)系統(tǒng)僅作為一個(gè)特定硬件體系結(jié)構(gòu)的操作的純軟件表示存在于主計(jì)算機(jī)系統(tǒng)中。術(shù)語虛擬化器、仿真器、虛擬機(jī)和處理器仿真有時(shí)候互換地使用,以表示使用本領(lǐng)域的技術(shù)人員已知和理解的若干方法之一來模擬或仿真整個(gè)計(jì)算機(jī)系統(tǒng)的硬件體系結(jié)構(gòu)的能力。在主計(jì)算機(jī)的操作系統(tǒng)軟件和硬件體系結(jié)構(gòu)上執(zhí)行的虛擬化器程序模擬了整個(gè)客計(jì)算機(jī)系統(tǒng)的操作。
虛擬化器程序擔(dān)當(dāng)主機(jī)的硬件體系結(jié)構(gòu)和由運(yùn)行在仿真的客虛擬機(jī)環(huán)境中的軟件(例如,操作系統(tǒng)、應(yīng)用程序等)發(fā)送的指令之間的交換點(diǎn)。在一個(gè)虛擬機(jī)環(huán)境實(shí)施例中,仿真的環(huán)境可包括虛擬機(jī)監(jiān)控程序(VMM),它是直接運(yùn)行在主機(jī)硬件之上,可能與主機(jī)操作系統(tǒng)并排運(yùn)行并結(jié)合主機(jī)操作系統(tǒng)工作的軟件層,且可通過暴露與VMM正在虛擬化的硬件相同的接口來虛擬化主機(jī)的所有資源(以及某些虛擬資源)。該虛擬化使得虛擬化器(以及主計(jì)算機(jī)系統(tǒng)本身)能夠不被運(yùn)行在其上的操作系統(tǒng)層注意到。在虛擬機(jī)環(huán)境中,多個(gè)虛擬機(jī)對(duì)主機(jī)的硬件資源施加性能要求。期望保持虛擬機(jī)彼此分離以及與主機(jī)分離。一個(gè)虛擬機(jī)與另一個(gè)虛擬機(jī)的分離或隔離對(duì)于隔離錯(cuò)誤和故障來說是有用的,使得一個(gè)虛擬機(jī)故障不會(huì)影響另一虛擬機(jī)。
然而,在某些配置中,期望使得一個(gè)虛擬機(jī)訪問對(duì)第二虛擬機(jī)可用的主機(jī)資源。圖1描繪了一個(gè)虛擬計(jì)算機(jī)系統(tǒng)100。系統(tǒng)100包括第一虛擬機(jī)110、第二虛擬機(jī)115以及駐留在主計(jì)算機(jī)系統(tǒng)105中的虛擬化軟件120。虛擬化軟件有助于例如通過將虛擬機(jī)地址與主機(jī)系統(tǒng)地址分離來維持虛擬機(jī)之間的受控隔離。第一虛擬機(jī)110是包括運(yùn)行在具有訪問數(shù)據(jù)庫145的驅(qū)動(dòng)程序150的操作系統(tǒng)130上的虛擬機(jī)應(yīng)用程序125的軟件程序。第二虛擬機(jī)115是包括運(yùn)行在具有虛擬驅(qū)動(dòng)器155的操作系統(tǒng)140上的虛擬機(jī)應(yīng)用程序135的軟件程序。主計(jì)算機(jī)系統(tǒng)105具有諸如輸入輸出通道、存儲(chǔ)器、處理器和軟件等可被分配給虛擬機(jī)110、115中的任一個(gè)的主機(jī)資源。在圖1的特定示例中,主機(jī)資源是訪問數(shù)據(jù)庫145的I/O通道165。圖1的配置指示第二虛擬機(jī)115可通過使用虛擬驅(qū)動(dòng)器155,經(jīng)由虛擬化軟件120利用連接至I/O路徑165的驅(qū)動(dòng)器150與數(shù)據(jù)庫145通信,來訪問數(shù)據(jù)庫145。
在虛擬機(jī)環(huán)境中,向客機(jī)分配諸如存儲(chǔ)器等主機(jī)系統(tǒng)資源。客虛擬機(jī)的應(yīng)用程序生成虛擬地址來為了客機(jī)的目的而訪問存儲(chǔ)器。該虛擬地址被翻譯成與客機(jī)有關(guān)的物理地址。然而,虛擬機(jī)環(huán)境中的每一虛擬機(jī)維護(hù)單獨(dú)的物理地址空間概念。從虛擬機(jī)的觀點(diǎn)來看,其物理地址可表現(xiàn)為以物理地址零或任何其它的頁對(duì)齊的物理地址為開始,且可跨越如由虛擬化軟件所支持的那樣大的區(qū)域,虛擬化軟件保持著對(duì)主機(jī)系統(tǒng)的各種虛擬機(jī)中的存儲(chǔ)器分配的注解。陰影頁(shadow page)表通常用作虛擬化軟件的一部分以向每一虛擬機(jī)提供單獨(dú)的物理地址空間。
客機(jī)物理地址空間,即GPA空間,指的是虛擬機(jī)的物理地址空間。因此,客機(jī)物理地址,即GPA,指的是GPA空間內(nèi)的地址。對(duì)客機(jī)物理地址空間的使用支持插入、移除和查詢的操作,以支持客虛擬機(jī)。客機(jī)虛擬地址,即GVA,是對(duì)特定的虛擬機(jī)專用的虛擬地址。通常,客機(jī)虛擬地址(GVA)被翻譯成客機(jī)物理地址(GPA)。然而,GPA不能用于訪問主機(jī)物理存儲(chǔ)器。因此,GPA被翻譯成主機(jī)或系統(tǒng)物理地址(SPA)。為減少地址翻譯的開銷,虛擬化器程序維護(hù)著將GVA映射到SPA的陰影頁表。虛擬化器也維護(hù)著儲(chǔ)存GPA-SPA映射的內(nèi)部數(shù)據(jù)結(jié)構(gòu)。圖2示出了客機(jī)物理頁到系統(tǒng)物理頁的示例映射。注意,可以存在可映射到單個(gè)系統(tǒng)物理地址的多個(gè)客機(jī)物理地址。例如,客機(jī)物理地址空間頁框號(hào)PFN 202和PFN203映射到系統(tǒng)物理頁號(hào)PFN 102。
虛擬機(jī)的操作和客機(jī)物理地址空間的管理可帶來若干令人感興趣的問題。例如,當(dāng)移除客機(jī)物理地址空間的一個(gè)區(qū)域時(shí),有必要清除映射到客機(jī)物理地址空間的該移除段內(nèi)的區(qū)域的客機(jī)虛擬地址。該清除導(dǎo)致到GPA的移除段內(nèi)的區(qū)域的任何未完成的映射無效。由此,如果GPA的一段被移除,則使用所移除的區(qū)域內(nèi)的GPA來構(gòu)造的任何虛擬地址都需要被無效。在一個(gè)示例體系結(jié)構(gòu)中,有兩個(gè)位置維護(hù)著GVA-SPA映射,因此存在必須移除這些GVA-SPA映射的兩個(gè)地方。維護(hù)著虛擬-物理映射的兩個(gè)區(qū)域是在陰影頁表內(nèi)和在硬件翻譯后備(look-aside)緩沖器(TLB)內(nèi)。這些高速緩存(cache)的每一個(gè)必須被清除以維持虛擬化的正確性以及防止虛擬機(jī)之間的安全性缺口。圖3示出了GVA-SPA映射。注意,多個(gè)客機(jī)虛擬地址可映射到同一系統(tǒng)物理地址頁。例如,客機(jī)虛擬地址VA C000:1000和VA C000:2000映射到系統(tǒng)物理頁號(hào)PFN 102。這一映射在陰影頁表中對(duì)于加速客機(jī)虛擬地址到系統(tǒng)地址翻譯的轉(zhuǎn)換顯然是有用的。
不幸的是,由于陰影頁表數(shù)據(jù)結(jié)構(gòu)維護(hù)從GVA到SPA的映射,因此不可能通過查詢?nèi)鐖D3所示的陰影頁表來查詢映射到特定GPA的所有GVA。然而,還維護(hù)著如圖2所示的GPA-SPA映射。確定使用特定GPA創(chuàng)建的所有客機(jī)虛擬地址的一種技術(shù)是對(duì)映射到特定GPA的所有SPA查詢GPA-SPA(圖2)映射,然后從GVA-SPA(圖3的陰影頁表)映射中移除映射到SPA的所有條目。不幸的是,該方法可能是非常慢的,因?yàn)槊恳徊襟E涉及分別對(duì)GPA-SPA和GVA-SPA映射的線性搜索。作為一種替換,可以維護(hù)GPA-GVA的逆映射,以顯式地處理這一情形。不幸的是,后一方法消耗了大量的額外存儲(chǔ)器。
由于計(jì)算機(jī)系統(tǒng)地址系統(tǒng)存儲(chǔ)器中的物理設(shè)備使用物理地址而非虛擬地址,會(huì)出現(xiàn)附加的復(fù)雜性。由此,從陰影頁表(SPT)和翻譯后備緩沖器(TLB)中清除虛擬-物理映射不會(huì)防止物理設(shè)備物理地訪問系統(tǒng)存儲(chǔ)器(如果該設(shè)備被設(shè)置成執(zhí)行直接存儲(chǔ)器存取(DMA)操作)。DMA操作可在其中存在DMA控制器硬件和軟件的虛擬機(jī)環(huán)境中執(zhí)行。
當(dāng)移除客機(jī)物理地址空間時(shí),重要的是確認(rèn)該空間當(dāng)前不涉及在DMA操作中。防止移除客機(jī)地址空間頁(一般是4K字節(jié)或更多),而同時(shí)未完成的DMA事務(wù)仍在進(jìn)行中的一種技術(shù)是為每一頁維護(hù)指定該頁是否正被用于DMA操作的單個(gè)標(biāo)志。不幸的是,不同的物理設(shè)備可能被映射到同一物理地址空間,且由此,同一地址空間可能涉及在兩個(gè)不同的、可能未完成的DMA操作中。由此,單個(gè)標(biāo)志不足以知道兩個(gè)DMA事務(wù)何時(shí)都已完成。期望一種更高級(jí)的機(jī)制。
對(duì)多個(gè)未完成的DMA操作的一種可能的解決方案是提供防止對(duì)系統(tǒng)物理存儲(chǔ)器的特定區(qū)域的DMA請(qǐng)求的機(jī)制。一般而言,提供了允許操作系統(tǒng)控制是否可通過非CPU代理讀寫特定頁(諸如發(fā)生在DMA事務(wù)過程中)的表。該表對(duì)物理存儲(chǔ)器的每一頁具有指定該頁是否可通過DMA操作來被讀寫的一個(gè)或多個(gè)標(biāo)志。該表被稱為DMA排除(exclusion)向量(DEV)。使用DMA排除向量機(jī)制,且仍避免以應(yīng)當(dāng)從GPA表被清除或修改的物理地址空間為目標(biāo)的多個(gè)DMA事務(wù)的問題是合乎需要的。
由此,需要這樣一種方法和系統(tǒng),它準(zhǔn)許從客機(jī)-主機(jī)物理地址映射中使用的引用表中清除或修改物理地址空間,而同時(shí)允許對(duì)物理地址的某些訪問,諸如虛擬機(jī)之間的DMA和其它I/O操作。本發(fā)明以此處所表達(dá)的其它優(yōu)點(diǎn)著眼于上述需求且解決了這些問題。

發(fā)明內(nèi)容
本發(fā)明的一方面包括允許虛擬機(jī)之間的訪問的方法和系統(tǒng),其中一個(gè)虛擬機(jī)請(qǐng)求對(duì)另一虛擬機(jī)的已分配資源的訪問。本發(fā)明的一個(gè)實(shí)施例包括接收使用第一虛擬機(jī)客機(jī)物理地址中的臨時(shí)區(qū)域在兩個(gè)虛擬機(jī)之間作出諸如DMA訪問等訪問的請(qǐng)求。被訪問的頁被映射到該臨時(shí)地址空間,且使用引用計(jì)數(shù)器來跟蹤未完成訪問的數(shù)目。在訪問完成之后,遞減該引用計(jì)數(shù)器。如果引用計(jì)數(shù)為零,指示沒有對(duì)所關(guān)注的頁的其它訪問未完成,則該映射可被丟棄。在一個(gè)實(shí)施例中,本發(fā)明作為一種在期望更新客機(jī)物理地址位置且有必要修改或清除對(duì)應(yīng)于仍經(jīng)受訪問請(qǐng)求的期望頁的地址的虛擬機(jī)環(huán)境中的方法被認(rèn)為是實(shí)用的。對(duì)要被修改的頁的引用可在臨時(shí)客機(jī)物理地址位置、翻譯后備緩沖器或陰影頁表中找到。


當(dāng)結(jié)合附圖閱讀時(shí),可以更好地理解以上概述以及以下示例性實(shí)施例的詳細(xì)描述。為說明本發(fā)明的各實(shí)施例起見,附圖中示出了本發(fā)明的示例性構(gòu)造;然而,本發(fā)明不限于所揭示的特定方法和工具。附圖中圖1是其中可實(shí)現(xiàn)本發(fā)明的各方面的示例性虛擬機(jī)環(huán)境;圖2是用于虛擬機(jī)的客機(jī)物理地址-系統(tǒng)物理地址映射;圖3是用于虛擬機(jī)的客機(jī)虛擬地址-系統(tǒng)物理地址映射;圖4是用于虛擬機(jī)的客機(jī)虛擬地址-客機(jī)物理地址映射;圖5是結(jié)合了本發(fā)明的各方面的方法的流程圖;以及圖6是示出其中可實(shí)現(xiàn)本發(fā)明的各方面的示例性計(jì)算環(huán)境的框圖。
具體實(shí)施例方式
本發(fā)明的示例性實(shí)施例在本發(fā)明的一方面,創(chuàng)建GPA空間的過渡或臨時(shí)區(qū)域以確定GPA空間的哪些段需要將客機(jī)物理地址映射到客機(jī)虛擬地址的附加數(shù)據(jù)結(jié)構(gòu),以允許對(duì)客機(jī)物理地址空間的快速移除或修改。該特征對(duì)于支持虛擬機(jī)環(huán)境中分區(qū)或虛擬機(jī)之間的I/O事務(wù)所需的GPA空間的快速插入和移除是有用的。作為一個(gè)示例,對(duì)虛擬機(jī)間的DMA事務(wù)的支持可通過對(duì)臨時(shí)GPA空間的使用來促進(jìn)。在一個(gè)實(shí)施例中,由客機(jī)或虛擬化軟件定義GPA空間的過渡或臨時(shí)區(qū)域,作為GPA空間內(nèi)的空間,但是它位于為客機(jī)操作系統(tǒng)的正常應(yīng)用程序操作所分配的空間外部。這一正??蜋C(jī)操作系統(tǒng)使用外部的位置避免了客機(jī)操作系統(tǒng)或客機(jī)應(yīng)用程序在正常的客虛擬機(jī)操作中意外地使用過渡或臨時(shí)空間的問題。
對(duì)客機(jī)物理地址的過渡或臨時(shí)區(qū)域的引入是基于以下觀察在GPA修改或清除期間,某些地址區(qū)域必須被快速移除,而其它地址區(qū)域在虛擬機(jī)的生存期中很少或從不改變。由此,如果實(shí)現(xiàn)單獨(dú)且臨時(shí)的SPA-GVA逆映射表,則它不會(huì)被大量使用,且存儲(chǔ)器資源中的花費(fèi)是不合理的。結(jié)果,依照本發(fā)明的一方面,識(shí)別應(yīng)當(dāng)被改變的特定GVA的SPA-GVA映射僅維護(hù)在過渡區(qū)域上。當(dāng)在GPA-SPA映射中修改非過渡區(qū)域時(shí),則執(zhí)行從GVA-SPA映射中對(duì)GVA的較慢清除。
在本發(fā)明的一方面,對(duì)于客機(jī)物理地址空間中被標(biāo)記為過渡的那些部分,維護(hù)了一附加的GPA-GVA映射,它允許從GPA中快速地的標(biāo)識(shí)GVA。圖4描繪了GPA-GVA映射的一個(gè)示例。注意,可能存在可映射到單個(gè)GPA的多個(gè)GVA。例如,在圖4中,GPA 100可映射到GVA 8000:000、8000:1000、8000:2000和8000:3000。
在本發(fā)明的另一方面,所標(biāo)識(shí)的頁可對(duì)諸如DMA操作等I/O事務(wù)“鎖定”,當(dāng)需要清除客機(jī)物理地址范圍且移除對(duì)那些地址的相應(yīng)引用時(shí),如果該頁未涉及在當(dāng)前或未完成的I/O或其它DMA事務(wù)中,則較佳地不執(zhí)行修改。依照本發(fā)明的一方面,對(duì)于對(duì)應(yīng)于客機(jī)物理地址的“鎖定”狀態(tài)的維護(hù)允許諸如DMA等I/O訪問或其它操作在GPA空間的清除或修改未完成時(shí)繼續(xù)。
如上所述,單個(gè)頁可涉及在諸如I/O或DMA事務(wù)等多個(gè)未完成的操作中。較佳的是當(dāng)對(duì)于正被修改的一部分區(qū)域有未完成的DMA請(qǐng)求時(shí)禁止對(duì)GPA-SPA映射的修改。在本發(fā)明的一方面,使用引用計(jì)數(shù)器來對(duì)諸如DMA等對(duì)給定頁未完成的I/O或其它事務(wù)的數(shù)目進(jìn)行計(jì)數(shù)。在一個(gè)實(shí)現(xiàn)中,使用未完成事務(wù)的引用計(jì)數(shù)來允許或禁止對(duì)涉及具有未完成的諸如DMA操作等I/O或其它事務(wù)的頁的客機(jī)物理地址空間的修改。對(duì)引用計(jì)數(shù)的使用解決了以下的雙重問題避免在未完成事務(wù)正在進(jìn)行時(shí)對(duì)客機(jī)物理地址空間的修改,以及在對(duì)單個(gè)頁有多個(gè)未完成的DMA請(qǐng)求時(shí)在DMA排除向量中維護(hù)單個(gè)標(biāo)志。
對(duì)于引用計(jì)數(shù),當(dāng)引用計(jì)數(shù)非零時(shí),較佳地不修改GPA-SPA映射。此外,當(dāng)接收到修改GPA-SPA映射的請(qǐng)求時(shí),且如果引用計(jì)數(shù)非零,則可將新的DMA請(qǐng)求推遲處理,直到處理了修改客機(jī)物理地址空間的請(qǐng)求為止。
I/O事務(wù)可以保持被阻塞,以避免以下情況特定頁被鎖定在存儲(chǔ)器中,且修改或清除客機(jī)物理地址空間的請(qǐng)求被掛起達(dá)任意長的時(shí)間段。當(dāng)客機(jī)物理地址處于關(guān)閉狀態(tài)時(shí),對(duì)事務(wù)鎖定該區(qū)域內(nèi)的頁的新請(qǐng)求,如DMA請(qǐng)求,要么會(huì)失敗,要么會(huì)等待直到發(fā)生了對(duì)客機(jī)物理地址空間的修改。該狀態(tài)防止任意長的等待阻止修改GPA空間。上述用于保護(hù)GPA-SPA映射的修改的方法也可用于保護(hù)DMA排除向量。具體地,為對(duì)特定頁所存在的未完成DMA事務(wù)的數(shù)目維護(hù)引用計(jì)數(shù),且當(dāng)該計(jì)數(shù)到達(dá)零時(shí),可修改地址。因此,當(dāng)引用計(jì)數(shù)到達(dá)零且沒有其它的對(duì)該頁的I/O訪問立即待決時(shí),則該頁被標(biāo)記為不可通過DMA來訪問。
在本發(fā)明的另一方面,使用平衡二叉樹用于客機(jī)物理地址空間的快速查詢和修改??苫趤碜钥蜋C(jī)應(yīng)用程序的請(qǐng)求而插入、移除和查詢客機(jī)物理地址空間映射中的條目。為實(shí)現(xiàn)客機(jī)物理地址空間數(shù)據(jù)結(jié)構(gòu)的快速插入、移除和查詢,平衡二叉樹數(shù)據(jù)結(jié)構(gòu)是較佳的。該平衡二叉樹對(duì)于客機(jī)物理地址空間的所有操作,提供了O(log2n)的最壞情況性能。
圖5描述了依照本發(fā)明的各方面的示例性方法500。假定其中執(zhí)行所述方法的計(jì)算機(jī)環(huán)境是類似于圖1的虛擬機(jī)環(huán)境,其中主計(jì)算機(jī)為兩個(gè)或多個(gè)虛擬機(jī)提供資源。在其中虛擬機(jī)作出對(duì)主機(jī)資源的請(qǐng)求的環(huán)境中,客機(jī)虛擬地址被翻譯成客機(jī)物理地址,然后被翻譯成系統(tǒng)物理地址。一旦被執(zhí)行,在陰影頁表和翻譯后備緩沖器兩者中同時(shí)使用地址轉(zhuǎn)換以加速虛擬機(jī)操作。然而,當(dāng)需要對(duì)客機(jī)物理地址空間的改變時(shí),陰影頁表和翻譯后備緩沖器需要更新,用以防止對(duì)未映射的地址的不必要訪問,以及用以重映射到地址空間中的更多適當(dāng)區(qū)域。圖5的示例性方法500在該環(huán)境中操作,且可用作地址改變和更新機(jī)制的一部分,同時(shí)允許從一個(gè)分區(qū)或虛擬機(jī)中對(duì)另一分區(qū)或虛擬機(jī)進(jìn)行訪問。
方法500的開始可在標(biāo)識(shí)了第一虛擬機(jī)內(nèi)用于在虛擬機(jī)之間共享頁的臨時(shí)客機(jī)物理地址空間的分配(步驟510)時(shí)建立。該臨時(shí)或過渡空間較佳地位于客機(jī)物理地址范圍內(nèi),但在使用該虛擬機(jī)中的客機(jī)物理地址范圍的應(yīng)用程序的操作范圍之外。這種過渡區(qū)域最初可由虛擬機(jī)中的虛擬化軟件來分配。或者,該過渡或臨時(shí)區(qū)域可由客機(jī)操作系統(tǒng)來分配。注意,客機(jī)物理地址空間中的臨時(shí)區(qū)域的分配可以在虛擬機(jī)到虛擬機(jī)事務(wù)之前的任一時(shí)刻完成,且無需在每次需要事務(wù)時(shí)完成。
接收從第二虛擬機(jī)到第一虛擬機(jī)的執(zhí)行操作的請(qǐng)求(步驟520),該操作諸如存儲(chǔ)器的輸入/輸出訪問或直接存儲(chǔ)器存取。訪問通過虛擬機(jī)環(huán)境中的主計(jì)算機(jī)上的虛擬化軟件來路由。響應(yīng)于該請(qǐng)求,遞增與請(qǐng)求中的地址頁相關(guān)聯(lián)的引用計(jì)數(shù)器(步驟530)。這具有鎖定所關(guān)注的頁的效果,且可以為共享指定的頁做好準(zhǔn)備。如果所請(qǐng)求的事務(wù)是DMA操作,且如果引用計(jì)數(shù)器從零遞增到一,則檢查DMA排除向量,以驗(yàn)證DMA操作是否被允許。還檢查所關(guān)注的頁以確保它們存在且是有效的GPA-SPA映射。
所關(guān)注的頁然后被映射到先前所定義的臨時(shí)地址范圍內(nèi)的第一虛擬機(jī)的客機(jī)物理地址空間(步驟540)。在頁被映射到第一虛擬機(jī)的客機(jī)物理地址之后,可啟動(dòng)計(jì)劃中的事務(wù)(步驟550)。如果訪問是DMA請(qǐng)求,則啟動(dòng)事務(wù)涉及發(fā)送諸如讀和寫命令等命令、諸如對(duì)如視頻顏色等特定數(shù)據(jù)類型的事務(wù)等的參數(shù)、以及從第二虛擬機(jī)到第一虛擬機(jī)用于建立和進(jìn)行DMA傳輸?shù)奶囟ㄔ春湍繕?biāo)地址。
在第二虛擬機(jī)和第一虛擬機(jī)之間交換了數(shù)據(jù)之后,事務(wù)完成(步驟560)。如果事務(wù)是DMA操作,則第一虛擬機(jī)發(fā)信號(hào)通知第二虛擬機(jī),數(shù)據(jù)已被傳輸。在完成之后,第二虛擬機(jī)向虛擬化軟件發(fā)送指示,以解鎖和解除共享事務(wù)中所涉及的頁。遞減在步驟530中遞增的引用計(jì)數(shù)器(步驟570)。如果事務(wù)是DMA操作,且引用計(jì)數(shù)從一到零,則可設(shè)置DMA排除向量以禁止進(jìn)一步的DMA事務(wù)。在本發(fā)明的一方面,這一動(dòng)作允許系統(tǒng)在完成DMA事務(wù)之后修改或清除涉及所關(guān)注的頁的客機(jī)物理地址范圍。
在遞減了引用計(jì)數(shù)器之后,如果仍有未完成的事務(wù),則可執(zhí)行那些事務(wù)。一旦被執(zhí)行且引用計(jì)數(shù)器到達(dá)零,則系統(tǒng)能夠如所需地自由地修改所關(guān)注的頁或映射。映射可以在引用計(jì)數(shù)器遞減到零之后按需被修改(步驟580)。該重映射機(jī)會(huì)允許系統(tǒng)更新要修改的陰影頁表和翻譯后備緩沖器,以改變或清除與應(yīng)當(dāng)被改變的地址有關(guān)的映射,來適應(yīng)客機(jī)物理地址空間中的改變。
示例性計(jì)算設(shè)備圖6和以下討論旨在提供其中可實(shí)現(xiàn)本發(fā)明的各實(shí)施例的合適的計(jì)算環(huán)境的簡要概括描述。盡管下文描述了通用計(jì)算機(jī),然而這僅是一個(gè)單處理器示例,且可用諸如具有網(wǎng)絡(luò)/總線互操作性和交互的客戶機(jī)等其它計(jì)算設(shè)備來實(shí)現(xiàn)具有多個(gè)處理器的本發(fā)明的實(shí)施例。由此,本發(fā)明的實(shí)施例可以在其中蘊(yùn)含了極少或最少客戶機(jī)資源的網(wǎng)絡(luò)化主控的服務(wù)的環(huán)境中實(shí)現(xiàn),例如,其中客戶機(jī)設(shè)備僅擔(dān)當(dāng)?shù)骄W(wǎng)絡(luò)/總線的接口(諸如安置在電器中的對(duì)象或其它計(jì)算設(shè)備或?qū)ο?的聯(lián)網(wǎng)環(huán)境。本質(zhì)上,可儲(chǔ)存數(shù)據(jù)或可從中檢索數(shù)據(jù)的任何地方都是用于操作的期望的或合適的環(huán)境。
盡管并非所需,但本發(fā)明的實(shí)施例也可通過操作系統(tǒng)來實(shí)現(xiàn),以供設(shè)備或?qū)ο蟮姆?wù)開發(fā)者使用,和/或包括在應(yīng)用程序軟件中。軟件可在諸如程序模塊等由如客戶機(jī)工作站、服務(wù)器或其它設(shè)備等一個(gè)或多個(gè)計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。通常,程序模塊的功能可以如各實(shí)施例中所期望的組合或分布。此外,本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明的各實(shí)施例可以用其它計(jì)算機(jī)配置來實(shí)施。其它適用于本發(fā)明的公知的計(jì)算系統(tǒng)、環(huán)境和/或配置包括但不限于,個(gè)人計(jì)算機(jī)(PC)、自動(dòng)售貨機(jī)、服務(wù)器計(jì)算機(jī)、手持式或膝上型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程消費(fèi)者電子產(chǎn)品、網(wǎng)絡(luò)PC、電器、燈、環(huán)境控制元件、小型機(jī)、大型計(jì)算機(jī)等等。本發(fā)明的實(shí)施例也可以在分布式計(jì)算環(huán)境中實(shí)踐,其中,任務(wù)由通過通信網(wǎng)絡(luò)/總線或其它數(shù)據(jù)傳輸介質(zhì)連接的遠(yuǎn)程處理設(shè)備來執(zhí)行。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中,而客戶機(jī)節(jié)點(diǎn)進(jìn)而可作為服務(wù)器節(jié)點(diǎn)來運(yùn)作。
由此,圖6示出了其中可實(shí)現(xiàn)本發(fā)明的各實(shí)施例的合適的計(jì)算系統(tǒng)環(huán)境600的示例,盡管如可從上文中清楚的,計(jì)算系統(tǒng)環(huán)境600僅為合適的計(jì)算環(huán)境的一個(gè)示例,并非對(duì)本發(fā)明的使用范圍或功能提出任何局限。也不應(yīng)將計(jì)算環(huán)境600解釋為對(duì)示例性操作環(huán)境600中示出的任一組件或其組合具有任何依賴或需求。
參考圖6,用于實(shí)現(xiàn)本發(fā)明的示例系統(tǒng)包括計(jì)算機(jī)系統(tǒng)610形式的通用計(jì)算設(shè)備。計(jì)算機(jī)系統(tǒng)610的組件可包括,但不限于,處理單元620、系統(tǒng)存儲(chǔ)器630以及將包括系統(tǒng)存儲(chǔ)器的各類系統(tǒng)組件耦合至處理單元420的系統(tǒng)總線621。系統(tǒng)總線621可以是若干種總線結(jié)構(gòu)類型的任一種,包括存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線以及使用各類總線體系結(jié)構(gòu)的局部總線。作為示例而非局限,這類體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)ISA(EISA)總線、視頻電子技術(shù)標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線以及外圍部件互連(PCI)總線(也稱為Mezzanine總線)。
計(jì)算機(jī)系統(tǒng)610通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算機(jī)系統(tǒng)610訪問的任一可用介質(zhì),包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例而非局限,計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于儲(chǔ)存諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)等信息的任一方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性,可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,RAM、ROM、EEPROM、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲(chǔ)、磁盒、磁帶、磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè)備、或可以用來儲(chǔ)存所期望的信息并可由計(jì)算機(jī)系統(tǒng)610訪問的任一其它介質(zhì)。通信介質(zhì)通常具體化為諸如載波或其它傳輸機(jī)制的已調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù),并包括任一信息傳送介質(zhì)。術(shù)語“已調(diào)制數(shù)據(jù)信號(hào)”指以對(duì)信號(hào)中的信息進(jìn)行編碼的方式設(shè)置或改變其一個(gè)或多個(gè)特征的信號(hào)。作為示例而非局限,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接連線連接,以及無線介質(zhì),如聲學(xué)、RF、紅外和其它無線介質(zhì)。上述任一的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
系統(tǒng)存儲(chǔ)器630包括以易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),如只讀存儲(chǔ)器(ROM)631和隨機(jī)存取存儲(chǔ)器(RAM)632?;据斎?輸出系統(tǒng)633(BIOS)包括如在啟動(dòng)時(shí)幫助在計(jì)算機(jī)610內(nèi)的元件之間傳輸信息的基本例程,通常儲(chǔ)存在ROM 631中。RAM 632通常包含處理單元620立即可訪問和/或當(dāng)前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖6示出了操作系統(tǒng)634、應(yīng)用程序635、其它程序模塊636和程序數(shù)據(jù)637。
計(jì)算機(jī)系統(tǒng)610也可包括其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。僅作示例,圖6示出了對(duì)不可移動(dòng)、非易失性磁介質(zhì)進(jìn)行讀寫的硬盤驅(qū)動(dòng)器641、對(duì)可移動(dòng)、非易失性磁盤652進(jìn)行讀寫的磁盤驅(qū)動(dòng)器651以及對(duì)可移動(dòng)、非易失性光盤656,如CD ROM或其它光介質(zhì)進(jìn)行讀寫的光盤驅(qū)動(dòng)器655??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等等。硬盤驅(qū)動(dòng)器641通常通過不可移動(dòng)存儲(chǔ)器接口,如接口640連接到系統(tǒng)總線621,磁盤驅(qū)動(dòng)器651和光盤驅(qū)動(dòng)器655通常通過可移動(dòng)存儲(chǔ)器接口,如接口650連接到系統(tǒng)總線621。
上文討論并在圖6示出的驅(qū)動(dòng)器及其關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)系統(tǒng)610提供了計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它數(shù)據(jù)的存儲(chǔ)。例如,在圖6中,示出硬盤驅(qū)動(dòng)器641儲(chǔ)存操作系統(tǒng)644、應(yīng)用程序645、其它程序模塊646和程序數(shù)據(jù)647。注意,這些組件可以與操作系統(tǒng)634、應(yīng)用程序635、其它程序模塊636和程序數(shù)據(jù)637相同,也可以與它們不同。這里對(duì)操作系統(tǒng)644、應(yīng)用程序645、其它程序模塊646和程序數(shù)據(jù)647給予不同的標(biāo)號(hào)來說明至少它們是不同的副本。用戶可以通過輸入設(shè)備,如鍵盤662和定位設(shè)備661(通常指鼠標(biāo)、跟蹤球或觸摸板)向計(jì)算機(jī)610輸入命令和信息。其它輸入設(shè)備(未示出)可包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星天線、掃描儀等等。這些和其它輸入設(shè)備通常通過耦合至系統(tǒng)總線的用戶輸入接口660連接至處理單元620,但是也可以通過其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器691或其它類型的顯示設(shè)備也通過接口,如視頻接口690連接至系統(tǒng)總線621。除監(jiān)視器之外,計(jì)算機(jī)也可包括其它外圍輸出設(shè)備,如揚(yáng)聲器697和打印機(jī)696,它們通過輸出外圍接口695連接。
計(jì)算機(jī)系統(tǒng)610可以使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī),如遠(yuǎn)程計(jì)算機(jī)680的邏輯連接在網(wǎng)絡(luò)化環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)680可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其它常見的網(wǎng)絡(luò)節(jié)點(diǎn),并通常包括許多或所有相對(duì)于計(jì)算機(jī)系統(tǒng)610所描述的元件,盡管在圖6中僅示出了存儲(chǔ)器存儲(chǔ)設(shè)備681。圖6描述的邏輯連接包括局域網(wǎng)(LAN)671和廣域網(wǎng)(WAN)673,但也可包括其它網(wǎng)絡(luò)/總線。這類網(wǎng)絡(luò)環(huán)境常見于家庭、辦公室、企業(yè)范圍計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)以及因特網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)610通過網(wǎng)絡(luò)接口或適配器670連接至LAN 671。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時(shí),計(jì)算機(jī)610通常包括調(diào)制解調(diào)器672或用于通過WAN 673,如因特網(wǎng)建立通信的其它裝置。調(diào)制解調(diào)器672可以是內(nèi)置或外置的,它通過用戶輸入接口660或其它適當(dāng)?shù)臋C(jī)制連接至系統(tǒng)總線621。在網(wǎng)絡(luò)化環(huán)境中,相對(duì)于計(jì)算機(jī)610所描述的程序模塊或其部分可儲(chǔ)存在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。作為示例,而非局限,圖6示出遠(yuǎn)程應(yīng)用程序685駐留在存儲(chǔ)器設(shè)備681上??梢岳斫猓境龅木W(wǎng)絡(luò)連接是示例性的,也可以使用在計(jì)算機(jī)之間建立通信鏈路的其它裝置。
鑒于個(gè)人計(jì)算與因特網(wǎng)的交匯,已經(jīng)開發(fā)并且正在開發(fā)各種分布式計(jì)算框架。個(gè)人和商業(yè)用戶同樣地?fù)碛杏糜趹?yīng)用程序和計(jì)算設(shè)備的無縫的互操作和啟用web的接口,使得計(jì)算活動(dòng)越來越面向web瀏覽器和網(wǎng)絡(luò)。
例如,可從微軟公司獲得的MICROSOFT的.NET平臺(tái)包括服務(wù)器、諸如基于web的數(shù)據(jù)存儲(chǔ)等構(gòu)件塊服務(wù)、以及可下載設(shè)備軟件。盡管此處的示例性實(shí)施例是結(jié)合駐留在計(jì)算設(shè)備上的軟件來描述的,但本發(fā)明的實(shí)施例的一個(gè)或多個(gè)部分也可以通過操作系統(tǒng)、應(yīng)用程序編程接口(API)或協(xié)處理器、顯示設(shè)備和請(qǐng)求對(duì)象的任一個(gè)之間的“中間人”對(duì)象來實(shí)現(xiàn),使操作可以由所有.NETTM的語言和服務(wù),以及在其它分布式計(jì)算框架中執(zhí)行、支持或訪問。
如上所述,盡管本發(fā)明的示例性實(shí)施例是結(jié)合各種計(jì)算設(shè)備和網(wǎng)絡(luò)體系結(jié)構(gòu)來描述的,但基本概念可應(yīng)用于其中期望實(shí)現(xiàn)用于嵌入式系統(tǒng)的軟件程序剖視器的任何計(jì)算設(shè)備或系統(tǒng)。由此,結(jié)合本發(fā)明的實(shí)施例所描述的方法和系統(tǒng)可應(yīng)用于各種應(yīng)用程序和設(shè)備。盡管此處選擇示例性編程語言、名稱和示例作為各種選擇的代表,然而這些語言、名稱和示例并不旨在是限制的。本領(lǐng)域的普通技術(shù)人員可以理解,存在許多提供目標(biāo)代碼的方法,它們實(shí)現(xiàn)本發(fā)明的實(shí)施例所實(shí)現(xiàn)的相同、相似或等效的系統(tǒng)和方法。
此處所描述的各種技術(shù)可結(jié)合硬件或軟件來實(shí)現(xiàn),或在適當(dāng)時(shí)以兩者的組合來實(shí)現(xiàn)。由此,本發(fā)明的系統(tǒng)和方法或其某些方面或部分,可采用包含在諸如軟盤、CD-ROM、硬盤或任何其它機(jī)器可讀存儲(chǔ)介質(zhì)等有形介質(zhì)中的程序代碼(即,指令)的形式,其中,當(dāng)程序代碼被加載到諸如計(jì)算機(jī)等機(jī)器中并由其執(zhí)行時(shí),該機(jī)器變?yōu)橛糜趯?shí)施本發(fā)明的裝置。在可編程計(jì)算機(jī)上的程序代碼執(zhí)行的情況下,計(jì)算設(shè)備一般包括處理器、處理器可讀的存儲(chǔ)介質(zhì)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備以及至少一個(gè)輸出設(shè)備??衫缤ㄟ^使用數(shù)據(jù)處理API等來利用本發(fā)明的實(shí)施例的信號(hào)處理服務(wù)的一個(gè)或多個(gè)程序較佳地用高級(jí)過程語言或面向?qū)ο蟮木幊陶Z言來實(shí)現(xiàn),以與計(jì)算機(jī)通信。然而,如有需要,程序可以用匯編語言或機(jī)器語言來實(shí)現(xiàn)。在任何情況下,語言可以是已編譯或已解釋語言,并與硬件實(shí)現(xiàn)相組合。
盡管本發(fā)明是結(jié)合各附圖的較佳實(shí)施例來描述的,但是可以理解,可使用其它類似的實(shí)施例或可對(duì)所描述的實(shí)施例進(jìn)行修改和添加,以執(zhí)行本發(fā)明的相同功能而不偏離本發(fā)明。此外,應(yīng)當(dāng)強(qiáng)調(diào),構(gòu)想了各種計(jì)算機(jī)平臺(tái),包括手持式設(shè)備操作系統(tǒng)和其它應(yīng)用專用操作系統(tǒng),尤其是當(dāng)無線聯(lián)網(wǎng)設(shè)備的數(shù)目持續(xù)增長的時(shí)候。因此,所要求保護(hù)的本發(fā)明不應(yīng)限于任何單個(gè)實(shí)施例,而是相反,應(yīng)當(dāng)在依照所附權(quán)利要求書的寬度和范圍內(nèi)解釋。
權(quán)利要求
1.一種在虛擬機(jī)之間共享頁的方法,所述虛擬機(jī)使用來自主計(jì)算機(jī)的資源來操作,所述方法包括分配第一虛擬機(jī)的臨時(shí)客機(jī)物理地址范圍,用于在虛擬機(jī)之間共享頁;接收來自第二虛擬機(jī)的、訪問對(duì)所述第一虛擬機(jī)可用的頁的請(qǐng)求,所述請(qǐng)求是由所述主計(jì)算機(jī)上的虛擬化軟件接收的;遞增對(duì)所述頁的未完成的訪問的引用計(jì)數(shù);所述引用計(jì)數(shù)指示未完成訪問的數(shù)目;將所述頁映射到所述第一虛擬機(jī)的臨時(shí)客機(jī)物理地址范圍的一部分;允許對(duì)所述第一虛擬機(jī)可用的頁被所述第二虛擬機(jī)訪問;由所述第二虛擬機(jī)完成對(duì)所述頁的訪問,并向所述虛擬化軟件通知訪問完成;遞減對(duì)所述頁的未完成的訪問的引用計(jì)數(shù);以及如果所述引用計(jì)數(shù)為零,則從所述臨時(shí)客機(jī)物理地址范圍中移除所述頁的映射。
2.如權(quán)利要求1所述的方法,其特征在于,接收來自第二虛擬機(jī)的、訪問對(duì)所述第一虛擬機(jī)可用的頁的請(qǐng)求包括接收來自第二虛擬機(jī)的、訪問被映射到第一虛擬機(jī)的頁的直接存儲(chǔ)器地址(DMA)請(qǐng)求。
3.如權(quán)利要求1所述的方法,其特征在于,遞增對(duì)所述頁的未完成的訪問的引用計(jì)數(shù)包括遞增對(duì)DMA傳輸?shù)囊糜?jì)數(shù),且所述方法還包括驗(yàn)證所述頁的客機(jī)物理地址-主機(jī)物理地址映射有效,且DMA排除向量允許訪問所述頁。
4.如權(quán)利要求1所述的方法,其特征在于,允許對(duì)所述第一虛擬機(jī)可用的頁被所述第二虛擬機(jī)訪問包括在所述第二虛擬機(jī)和某一范圍的主機(jī)物理地址之間建立DMA傳輸。
5.如權(quán)利要求1所述的方法,其特征在于,由所述第二虛擬機(jī)完成對(duì)所述頁的訪問并向所述虛擬化軟件通知訪問完成包括接收來自主機(jī)硬件的、關(guān)于DMA操作完成的指示,以及將完成消息從所述第一虛擬機(jī)發(fā)送到所述第二虛擬機(jī),其中,所述第二虛擬機(jī)向所述虛擬化軟件通知完成。
6.如權(quán)利要求1所述的方法,其特征在于,遞減對(duì)所述頁的未完成的訪問的引用計(jì)數(shù)包括設(shè)置DMA排除向量,以在所述引用計(jì)數(shù)遞減到零時(shí)排除對(duì)所述頁的后續(xù)DMA操作。
7.如權(quán)利要求1所述的方法,其特征在于,從所述臨時(shí)客機(jī)物理地址范圍內(nèi)移除所述頁的映射還包括從陰影頁表和翻譯后備緩沖器的一個(gè)或多個(gè)中去除對(duì)所述頁的條目的映射。
8.一種用于在虛擬機(jī)之間共享頁的計(jì)算機(jī)系統(tǒng),所述系統(tǒng)包括主計(jì)算機(jī),所述主計(jì)算機(jī)具有對(duì)多個(gè)虛擬機(jī)可用的硬件資源;虛擬化軟件,所述虛擬化軟件包括所述主計(jì)算機(jī)和所述多個(gè)虛擬機(jī)的任一個(gè)之間的接口;第一虛擬機(jī)和第二虛擬機(jī),所述第一虛擬機(jī)具有對(duì)至少一個(gè)頁資源的訪問;所述第一虛擬機(jī)的臨時(shí)客機(jī)物理地址范圍,用于在虛擬機(jī)之間共享頁;具有對(duì)主計(jì)算機(jī)的存儲(chǔ)器的訪問的主機(jī)處理器,所述存儲(chǔ)器具有指令,當(dāng)所述指令被執(zhí)行時(shí),執(zhí)行一種方法,該方法包括接收來自所述第二虛擬機(jī)的、訪問對(duì)所述第一虛擬機(jī)可用的頁的請(qǐng)求,所述請(qǐng)求是由所述虛擬化軟件接收的;遞增對(duì)所述頁的未完成的訪問的引用計(jì)數(shù);所述引用計(jì)數(shù)指示未完成的訪問的數(shù)目;將所述頁映射到所述臨時(shí)客機(jī)物理地址范圍的一部分;允許對(duì)所述第一虛擬機(jī)可用的頁被所述第二虛擬機(jī)訪問;向所述虛擬化軟件通知訪問完成;遞減對(duì)所述頁的未完成的訪問的引用計(jì)數(shù);以及如果所述引用計(jì)數(shù)為零,則從所述臨時(shí)客機(jī)物理地址范圍中移除所述頁的映射。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,還包括翻譯后備緩沖器和陰影頁表中的至少一個(gè),所述翻譯后備緩沖器和陰影頁表中的至少一個(gè)作為移除所述頁的映射的方法步驟的結(jié)果被更新。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,從所述臨時(shí)客機(jī)物理地址范圍中移除所述頁的映射的方法步驟還包括從所述陰影頁表和所述翻譯后備緩沖器的一個(gè)或多個(gè)中解除對(duì)所述頁的條目的映射。
11.如權(quán)利要求8所述的系統(tǒng),其特征在于,還包括DMA控制器,其中,允許對(duì)所述第一虛擬機(jī)可用的頁被所述第二虛擬機(jī)訪問的方法步驟包括設(shè)置所述DMA控制器以在所述第二虛擬機(jī)和某一范圍的主機(jī)物理地址之間傳輸信息。
12.如權(quán)利要求11所述的系統(tǒng),其特征在于,還包括引用計(jì)數(shù)器,其中,遞增對(duì)所述頁的未完成的訪問的引用計(jì)數(shù)的步驟包括遞增所述引用計(jì)數(shù)器以指示未完成的DMA傳輸,且還包括驗(yàn)證所述頁的客機(jī)物理地址-主機(jī)物理地址映射有效且DMA排除向量允許訪問頁。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于,遞減對(duì)所述頁的未完成的訪問的引用計(jì)數(shù)包括設(shè)置DMA排除向量,以在所述引用計(jì)數(shù)器遞減到零時(shí)排除所述頁上的DMA控制器操作。
14.如權(quán)利要求11所述的系統(tǒng),其特征在于,由所述第二虛擬機(jī)完成所述頁的訪問以及向所述虛擬化軟件通知訪問完成的方法步驟包括接收來自所述DMA控制器的、關(guān)于信息傳輸完成的指示,以及將完成消息從所述第一虛擬機(jī)發(fā)送到所述第二虛擬機(jī),其中,所述第二虛擬機(jī)向所述虛擬化軟件通知完成。
15.一種具有用于執(zhí)行在虛擬機(jī)之間共享頁的方法的計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì),所述虛擬機(jī)使用來自主計(jì)算機(jī)的資源來操作,所述方法包括分配第一虛擬機(jī)的臨時(shí)客機(jī)物理地址范圍,用于在虛擬機(jī)之間共享頁;接收來自第二虛擬機(jī)的、訪問對(duì)所述第一虛擬機(jī)可用的頁的請(qǐng)求,所述請(qǐng)求是由所述主計(jì)算機(jī)上的虛擬化軟件接收的;遞增對(duì)所述頁的未完成的訪問的引用計(jì)數(shù);其中,所述引用計(jì)數(shù)用于封鎖對(duì)所述頁的其它訪問;將所述頁映射到所述第一虛擬機(jī)的臨時(shí)客機(jī)物理地址范圍的一部分;允許對(duì)所述第一虛擬機(jī)可用的頁被所述第二虛擬機(jī)訪問;由所述第二虛擬機(jī)完成所述頁的訪問,并向所述虛擬化軟件通知訪問完成;遞減對(duì)所述頁的未完成的訪問的引用計(jì)數(shù);以及如果所述引用計(jì)數(shù)為零,則從所述臨時(shí)客機(jī)物理地址范圍內(nèi)移除所述頁的映射。
16.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,接收來自第二虛擬機(jī)的、訪問對(duì)所述第一虛擬機(jī)可用的頁的請(qǐng)求的步驟包括接收來自所述第二虛擬機(jī)的、訪問映射到所述第一虛擬機(jī)的頁的直接存儲(chǔ)器地址(DMA)請(qǐng)求。
17.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,遞增對(duì)所述頁的未完成的訪問的引用計(jì)數(shù)的步驟包括遞增對(duì)DMA傳輸?shù)囊糜?jì)數(shù),且還包括驗(yàn)證所述頁的客機(jī)物理地址-主機(jī)物理地址映射有效且DMA排除向量允許訪問所述頁。
18.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,允許對(duì)所述第一虛擬機(jī)可用的頁被所述第二虛擬機(jī)訪問的步驟包括在所述第二虛擬機(jī)和某一范圍的主機(jī)物理地址之間設(shè)置DMA傳輸。
19.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,由所述第二虛擬機(jī)完成訪問以及向所述虛擬化軟件通知訪問完成的步驟包括接收來自主機(jī)硬件的、關(guān)于DMA操作完成的指示,以及將完成消息從所述第一虛擬機(jī)發(fā)送到所述第二虛擬機(jī),其中,所述第二虛擬機(jī)向所述虛擬化軟件通知完成。
20.如權(quán)利要求15所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,遞減對(duì)所述頁的未完成的訪問的引用計(jì)數(shù)包括設(shè)置DMA排除向量以在所述引用計(jì)數(shù)遞減到零時(shí)排除對(duì)所述頁的后續(xù)DMA操作。
全文摘要
一種在多個(gè)虛擬機(jī)環(huán)境中在虛擬機(jī)之間共享頁的方法包括最初分配第一虛擬機(jī)的臨時(shí)客機(jī)物理地址范圍,用于與第二虛擬機(jī)共享頁。該臨時(shí)范圍在第一虛擬機(jī)的客機(jī)物理地址空間內(nèi)。接收來自第二虛擬機(jī)的、諸如利用DMA請(qǐng)求等的對(duì)第一虛擬機(jī)可用的頁的訪問請(qǐng)求。遞增對(duì)所述頁的未完成的訪問的引用計(jì)數(shù)以指示未完成的訪問,且所述頁被映射到臨時(shí)客機(jī)物理地址范圍。訪問所述頁且遞減引用計(jì)數(shù)。如果引用計(jì)數(shù)為零,則移除臨時(shí)客機(jī)物理地址范圍內(nèi)的映射。
文檔編號(hào)G06F9/455GK1831790SQ200610003798
公開日2006年9月13日 申請(qǐng)日期2006年2月10日 優(yōu)先權(quán)日2005年3月8日
發(fā)明者E·特勞特, M·D·亨德爾 申請(qǐng)人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
富蕴县| 工布江达县| 凤凰县| 湖州市| 于田县| 东辽县| 莒南县| 广宁县| 奈曼旗| 保山市| 马公市| 奈曼旗| 临邑县| 息烽县| 遵化市| 白银市| 永平县| 遵化市| 阳信县| 镇安县| 广河县| 岳池县| 蓬安县| 河北省| 宝山区| 郎溪县| 安宁市| 南涧| 安西县| 甘泉县| 红河县| 苍梧县| 临江市| 鹿邑县| 两当县| 天祝| 商洛市| 浑源县| 大化| 漯河市| 利津县|