當前位置:編程學習大全網 - 源碼下載 - 虛擬機監控Xen和虛擬化技術(2)

虛擬機監控Xen和虛擬化技術(2)

XEN方法及概述在傳統的VMM中,虛擬硬件的功能與底層機器上的真實硬件完全相同。這種全虛擬化的方式最明顯的優點就是操作系統可以直接在虛擬硬件上運行,不需要做任何修改,但是它也有很多缺點,尤其是對於目前廣泛使用的那些IA(或者X)架構。這種方法帶來的缺陷不容忽視。X架構的設計從來不支持完全虛擬化。如果要正確實現X架構的虛擬化,VMM必須能夠操作壹些特定的超級指令,但是如果沒有足夠的權限,執行這些超級指令就會導致靜默失敗(//fail quickly,如果權限級別不夠,就會直接導致執行失敗,而不是制造壹個方便我們使用的陷阱。另外,在X架構下有效虛擬化MMU也是非常困難的。這些問題可以解決,但與此同時,它必須付出增加操作復雜性和降低系統性能的代價。ESX服務器[]需要動態重寫那些被VMM操縱的機器碼部分,在可能有VMM介入的地方插入陷阱操作(//在程序運行之前不知道在哪裏插入陷阱操作,所以需要動態重寫相關代碼)。因為需要捕獲並操作所有那些不能引起陷阱的特權指令,所以這種轉換(//動態重寫代碼)要應用於整個guest OS內核(這就導致了轉換執行和緩存的相關開銷)。ESX服務器實現中采用的技術是構建系統結構的影子版本(比如頁表),通過為每次更新操作設置陷阱來解決虛擬頁表和物理頁表的壹致性問題(//具體細節仍取決於ESX服務器的解釋)但是在處理更新密集型操作(比如創建新的應用進程)時,這種方法會帶來很高的開銷。除了X架構的復雜性,還有其他壹些反對完全虛擬化的理由,其中* * *值得壹提。在某些情況下,受控操作系統需要暴露於真實資源,例如提供真實時間和虛擬時間以允許客戶OS更好地支持時間敏感的任務,以及正確地操作TCP超時和RTT估計以給出真實機器地址以允許客戶OS通過使用諸如超級頁面或頁面著色的方法來改進。我們提出的虛擬機抽象可以避免完全虛擬化帶來的各種缺陷。這種虛擬機抽象類似於底層硬件,但又不完全相同,所以稱為準虛擬化(//paravirtualization或翻譯為paravirtualization?雖然這種方法需要對客戶操作系統進行壹些更改,但它可以提高性能。還特別需要註意的是,準虛擬化方法不會修改應用程序二進制接口(ABI),因此用戶不需要修改在客戶操作系統上執行的應用程序。我們對準虛擬化方法的討論應該遵循以下規則。本文的目的是支持執行不變的應用二進制文件,即用戶不需要將應用轉換為Xen,因此我們必須虛擬化現有標準ABI所需的所有架構特性。支持壹個完整的多應用操作系統是非常重要的,這就需要在單個guest OS實例中虛擬化復雜的服務器配置(/)例如,如果在guest OS上配置了ftp服務,那麽虛擬硬件應該打開相應的端口。)準虛擬化必須有高性能。另外對於不合作的人(//這裏不合作是指硬件架構不支持* * *架構準虛擬化等機器架構也需要能夠提供很強的資源隔離能力。在協同機器架構上,準虛擬化方法應該能夠完全隱藏資源虛擬化的影響,降低來賓OS在正確性和性能上面臨的風險。請註意,我們這裏提出的準虛擬化X-abstraction方法與最近的類似。德納裏項目中提出的方法完全不同。Denali是為了支持成千上萬個運行網絡服務的虛擬機而設計的,大部分都是小規模的冷門(//應用的不流行意味著運行應用的環境很少,我們只需要針對這些特定的環境進行特殊的虛擬化。)相反,Xen的設計最終將支持近100臺運行行業標準應用和服務的虛擬機。由於設計目標的巨大差異,我們不妨就Denali的設計選擇和我們自己的設計規則進行壹次有益的討論。首先,德納裏不需要。註意現有的ABI,所以他們的VM接口忽略了相關的架構特性。比如Denali並不完全支持X的分段機制,但是這壹點在NetBSD Linux和Windows XP的ABI中提出並被廣泛使用。例如,分段機制通常用於處理線程庫中的線程本地數據。其次,Denali的實現不是在。在單個客戶操作系統中支持多個應用程序的問題並沒有解決多個地址空間的問題。應用程序被顯式鏈接到Ilwaco guest OS的實例,這在某種意義上類似於Exokernel中的libOS[]。所以每個虛擬機在沒有保護措施的情況下,只能控制壹個單用戶單應用的所謂操作系統。而在Xen中,恰恰相反,每個虛擬機可以控制壹個真正的操作系統,這個操作系統可以安全地執行成千上萬個不變的用戶級進程。雖然Denali聲稱開發虛擬MMU原型可以在這壹領域為其提供幫助,但我們並沒有看到公開的技術細節和評估。據悉,再次在Denali架構中,VMM執行內存和磁盤之間的所有頁面調度,這可能與虛擬層缺乏存儲管理支持有關。VMM完成頁面調度與我們的性能隔離目標相反。那些惡意的虛擬機可能會故意產生抖動行為,造成其他虛擬機CPU時間和磁盤帶寬的不公平剝奪(// VMM監控很多虛擬機,然後在每個虛擬機上運行操作系統,所以很多事情如果在VMM做,必然會影響到每個虛擬機,所以我們要在操作系統上放壹些東西,實現隔離。)在Xen中,我們希望每個guest OS在自己分配的內存空間和磁盤區域中執行自己的頁面調度(之前已經提出了自我分頁的方法)。Denali為機器所有資源虛擬命名空間後,如果壹個VM不能命名另壹個VM管轄下的資源,那麽這個VM就不能訪問這些資源(比如Denali中的VM不知道硬件地址,只能看到Denali創建的虛擬地址)。相比之下,我們認為hypervisor中的安全訪問控制足以保證安全性。此外,如前所述,關於來賓操作系統是否應該能夠直接看到物理資源的正確性和性能,存在激烈的爭論。在接下來的章節中,我們將描述Xen提出的虛擬機抽象,然後討論如何對客戶操作系統進行必要的更改以適應Xen。在本文中,我們定義了壹些術語來提醒大家,比如gue這個術語。St OS是指Xen可以控制的操作系統之壹。術語“域”是指運行中的虛擬機,其上有壹個來賓操作系統。程序和過程的區別類似於傳統系統中的區別。我們稱Xen為hypervisor,因為在它控制的客戶操作系統中,它運行在比supervisor co更高的特權級別。De運行更高特權級別的虛擬機接口。壹個準虛擬化的X接口在系統中主要包括三大方面:存儲管理CPU和設備I/ O下面我們將依次介紹各個機器子系統的情況,並討論如何體現在我們的準虛擬化架構中。雖然我們的實現有相當壹部分,比如存儲管理,是專門針對X的,但實際上有很多方面(比如我們的虛擬CPU和I/ O設備)可以很容易地應用到其他機器架構上。再者,在很多實現不同於RISC架構的地方,X往往表現出這方面最差的情況。例如,有效虛擬化硬件頁表比虛擬化軟件管理的TLB更困難。許多存儲管理段不能使用具有完全特權級別的段描述符,並且它們不能匹配最線性的地址空間。Top Overlapping(//因為top是Xen)分頁guest OS直接訪問硬件頁表但是更新(//正在寫)是批量進行的,必須經過hypervisor確認可以在不連續的頁面上分配壹個域。CPU保護來賓操作系統必須在比Xen更低的權限級別上運行。異常客戶操作系統必須在Xen中記錄異常句柄的描述符表。除了page fault,其他句柄和真正的X架構壹樣。系統調用guest OS is系統調用提供了壹個快速句柄,允許應用程序直接調用它所在的guest OS,而不必通過Xen間接完成每個調用。硬件中斷被壹個輕量級的事件系統所取代。每個來賓操作系統都有壹個計時器接口,用於獲取真實和虛擬時間設備I/ O網絡磁盤...虛擬設備易於訪問,異步I/ O-ring用事件機制來發布通知,從而取代了硬件中斷。存儲管理虛擬化存儲無疑是架構準虛擬化中最困難的部分,包括hypervisor所需的機制和移植每個來賓操作系統所需的更改。如果在架構中提供軟件管理的TLB,這個任務將變得更容易,並且它們可以以相對簡單的方式有效地實現。標記TLB的虛擬化是大多數RISC架構(這些RISC架構主要用於構建Alpha MIPS和SPARC等服務器)支持的另壹個有用的功能,其中每個TLB條目都有壹個與地址空間標識符相關的標記,這使得虛擬機管理程序和每個來賓操作系統能夠有效地* * *在隔離的地址空間中。此時不需要刷新整個TLB(//當//轉移執行在進程間切換時,從壹個進程到另壹個進程執行的指令序列稱為執行轉移)。不幸的是,X架構不是由TLB軟件公司管理的。相反,當TLB失敗時,處理器將自動遍歷硬件頁表結構。因此,為了獲得盡可能好的性能,應該在硬件可訪問頁表中給出當前地址空間中所有有效的頁傳輸(//最好的情況應該是像Lishi Xin zhi/article/program/Java/JSP/201311/19726。
  • 上一篇:vb抽取壹等獎二等獎
  • 下一篇:古代歌手全集
  • copyright 2024編程學習大全網