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