全虛擬化

在計算機科學中 ， 全虛擬化  是硬件虛擬化的一種 ， 允許未經修改的客操作系統  隔離運行 。 硬件虛擬化對客操作系統隱藏了真實的硬件 ， 虛擬機運行在一個架設在硬件或主機操作系統  之上的虛擬機監視器 ( VMM ) 中 。 對於全虛擬化 ， 硬件特徵會被映射到虛擬機上 ， 這些特徵包括完整的指令集 、 I / O操作 、 中斷和內存管理等 。 在全虛擬化環境中 ， 任何可以運行在裸機上的軟件 （ 通常是操作系統 ） 都可以未經修改地運行在虛擬機中 。 相對地 ， 半虛擬化  則要求對客操作系統做出必要的更改 ， 以適應VMM提供的半虛擬化API 。 實現一個比主機操作系統優先級更高的VMM或超級操作系統  是全虛擬化與1型虛擬化  的基礎 。 監視器或超級操作系統需要兩個關鍵特性來提供並保護虛擬化環境 ： 操作系統無關的儲存管理 ， 可以爲不同的虛擬環境 （ 如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軟件中的一些可以 “ 穿過虛擬機 ” 的指令自動地翻譯成對主機安全的指令 。 全虛擬化技術應對的關鍵挑戰是對有高特權操作的偵聽和模擬 ， 比如I / O操作 。 虛擬機中所有操作的副作用一定要限制在虛擬機之內 — — 虛擬操作不可以修改其他虛擬機的狀態 、 控制程序或是硬件 。 對於涉及對象完全受VMM管理的機器指令 ， 可以直接在硬件上執行 ， 例如內存地址和算數寄存器 。 其他一些指令可能會 “ 穿過虛擬機 ” ， 即可以訪問或影響狀態信息或對虛擬機外產生影響 ， 這些指令就不可以直接執行 ， 它們必須被軟中斷之後由VMM模擬執行 。 全虛擬化已被證實的成功之處有 ： 多用戶之間共享系統 隔離用戶 （ 和控制程序 ） 模擬新硬件 ， 提升可靠性 、 安全性和生產力