全虛擬化

全虛擬化

在計算機科學中,全虛擬化(Full virtualization)是硬體虛擬化的一種,允許未經修改的客作業系統隔離運行。

簡介

硬體虛擬化對客作業系統隱藏了真實的硬體,虛擬機運行在一個架設在硬體或主機作業系統(英語:Host OS)之上的虛擬機監視器(VMM)中。對於全虛擬化,硬體特徵會被映射到虛擬機上,這些特徵包括完整的指令集、I/O操作、中斷和記憶體管理等。在全虛擬化環境中,任何可以運行在裸機上的軟體(通常是作業系統)都可以未經修改地運行在虛擬機中。相對地,半虛擬化(英語:Paravirtualization)則要求對客作業系統做出必要的更改,以適應VMM提供的半虛擬化API 。

全虛擬化基礎

實現一個比主機作業系統優先權更高的VMM或超級作業系統(英語:Super OS)是全虛擬化與1型虛擬化(英語:Type-1 virtualization)的基礎。監視器或超級作業系統需要兩個關鍵特性來提供並保護虛擬化環境:

作業系統無關的儲存管理,可以為不同的虛擬環境(如Linux、Windows和嵌入式環境)提供資源,並保護這些環境不會被未經授權地訪問;

虛擬化環境的切換,以向虛擬機分配物理計算資源。Intel VT-x與AMD-V的x86虛擬化和IBM在20世紀60年代末到70年代初的早期虛擬機有著不同的實現。

1.

作業系統無關的儲存管理,可以為不同的虛擬環境(如Linux、Windows和嵌入式環境)提供資源,並保護這些環境不會被未經授權地訪問;

2.

虛擬化環境的切換,以向虛擬機分配物理計算資源。Intel VT-x與AMD-V的x86虛擬化和IBM在20世紀60年代末到70年代初的早期虛擬機有著不同的實現。

全虛擬化僅僅在波佩克與戈德堡虛擬化需求得以滿足時才是可行的。

歷史

在大多數IBMSystem/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軟體中的一些可以“穿過虛擬機”的指令自動地翻譯成對主機安全的指令。

關鍵技術

全虛擬化技術應對的關鍵挑戰是對有高特權操作的偵聽和模擬,比如I/O操作。虛擬機中所有操作的副作用一定要限制在虛擬機之內——虛擬操作不可以修改其他虛擬機的狀態、控制程式或是硬體。對於涉及對象完全受VMM管理的機器指令,可以直接在硬體上執行,例如記憶體地址和算數暫存器。其他一些指令可能會“穿過虛擬機”,即可以訪問或影響狀態信息或對虛擬機外產生影響,這些指令就不可以直接執行,它們必須被軟中斷之後由VMM模擬執行。

全虛擬化已被證實的成功之處有:

•多用戶之間共享系統

•隔離用戶(和控制程式)

•模擬新硬體,提升可靠性、安全性和生產力

相關詞條

熱門詞條

聯絡我們