全虛擬化
此條目需要精通或熟悉相關主題的編者參與及協助編輯。 (2017年11月11日) |
在計算機科學中,全虛擬化(英語:Full virtualization)是硬件虛擬化的一種,允許未經修改的客操作系統(英語:Guest OS)隔離運行。硬件虛擬化對客操作系統隱藏了真實的硬件,虛擬機運行在一個架設在硬件或主機操作系統(英語:Host OS)之上的虛擬機監視器(VMM)中。對於全虛擬化,硬件特徵會被映射到虛擬機上,這些特徵包括完整的指令集、I/O操作、中斷和內存管理等。在全虛擬化環境中,任何可以運行在裸機上的軟件(通常是操作系統)都可以未經修改地運行在虛擬機中。相對地,半虛擬化(英語:Paravirtualization)則要求對客操作系統做出必要的更改,以適應VMM提供的半虛擬化API。[1]
實現一個比主機操作系統優先級更高的VMM或超級操作系統(英語:Super OS)是全虛擬化與1型虛擬化(英語:Type-1 virtualization)的基礎。監視器或超級操作系統需要兩個關鍵特性來提供並保護虛擬化環境:
- 操作系統無關的儲存管理,可以為不同的虛擬環境(如Linux、Windows和嵌入式環境)提供資源,並保護這些環境不會被未經授權地訪問;
- 虛擬化環境的切換,以向虛擬機分配物理計算資源。Intel VT-x與AMD-V的x86虛擬化和IBM在20世紀60年代末到70年代初的早期虛擬機有着不同的實現。
全虛擬化僅僅在波佩克與戈德堡虛擬化需求得以滿足時才是可行的。
在大多數IBM System/360(IBM System/360-67是一個例外)和早期的IBM System/370是無法實現全虛擬化的。IBM於1972年在System/370上添加了實現虛擬化內存的硬件,從而實現了全虛擬化。
全虛擬化在早期的x86平台上也無法實現。直到2006年前後,AMD和Intel分別加入了AMD-V和Intel VT-x擴展(參見x86虛擬化)。Intel VT-x採用了保護環的實現方式,以恰當地控制虛擬機的內核模式特權。然而在此之前許多x86上的平台VMM已經非常接近於實現全虛擬化,甚至宣稱支持全虛擬化。比如 Adeos、Mac-on-Linux、Parallels Desktop for Mac、Parallels Workstation、VMware Workstation、VMware Server、VirtualBox、Win4BSD和Win4Lin Pro。以VMware為例,它使用二進制翻譯的技術,可以在運行時將x86軟件中的一些可以「穿過虛擬機」的指令自動地翻譯成對主機安全的指令。[2]
全虛擬化技術應對的關鍵挑戰是對有高特權操作的偵聽和模擬,比如I/O操作。虛擬機中所有操作的副作用一定要限制在虛擬機之內——虛擬操作不可以修改其他虛擬機的狀態、控制程序或是硬件。對於涉及對象完全受VMM管理的機器指令,可以直接在硬件上執行,例如內存地址和算數寄存器。其他一些指令可能會「穿過虛擬機」,即可以訪問或影響狀態信息或對虛擬機外產生影響,這些指令就不可以直接執行,它們必須被軟中斷之後由VMM模擬執行。
全虛擬化已被證實的成功之處有:
- 多用戶之間共享系統
- 隔離用戶(和控制程序)
- 模擬新硬件,提升可靠性、安全性和生產力
參見
參考文獻
- ^ Irfan Habib. Virtualization with KVM. Linux Journal. 2008-02,. Volume 2008 (Issue 166) [2017-11-12].
- ^ VMware. Understanding Full Virtualization, Paravirtualization, and Hardware Assist (PDF). VMware. 11 Sep 2007 [2007-12-09]. (原始內容 (PDF)存檔於2008-05-11).