設為首頁收藏本站

艾歐踢論壇

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

搜索
熱搜: 活動 交友 discuz
查看: 694|回復: 0
打印 上一主題 下一主題

虛擬化技術簡介

[複製鏈接]
跳轉到指定樓層
樓主
發表於 2015-1-16 21:48:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
什麼是虛擬化
虛擬化(Virtualization)技術最早出現在 20 世紀 60 年代的 IBM 大型機系統,在70年代的 System 370 系列中逐漸流行起來,
這些機器通過一種叫虛擬機器監控器(VirtualMachine Monitor,VMM)的程式在物理硬體之上生成許多可以運行獨立作業系統軟體的虛擬機器(Virtual Machine)實例。
隨著近年多核系統、集群、網格甚至雲計算的廣泛部署,虛擬化技術在商業應用上的優勢日益體現,不僅降低了 IT 成本,而且還增強了系統安全性和可靠性,
虛擬化的概念也逐漸深入到人們日常的工作與生活中。
虛擬化是一個廣義的術語,對於不同的人來說可能意味著不同的東西,這要取決他們所處的環境。
在電腦科學領域中,虛擬化代表著對計算資源的抽象,而不僅僅局限於虛擬機器的概念。
例如對實體記憶體的抽象,產生了虛擬記憶體技術,使得應用程式認為其自身擁有連續可用的位址空間(Address Space),
而實際上,應用程式的代碼和資料可能是被分隔成多個碎片頁或段),甚至被交換到磁片、快閃記憶體等外部記憶體上,即使實體記憶體不足,應用程式也能順利執行。
虛擬化技術的分類
虛擬化技術主要分為以下幾個大類 :
1.平臺虛擬化(Platform Virtualization),針對電腦和作業系統的虛擬化。
2.  資源虛擬化(Resource Virtualization),針對特定的系統資源的虛擬化,比如記憶體、存儲、網路資源等。
3.  應用程式虛擬化(Application Virtualization),包括模擬、模擬、解釋技術等。
我們通常所說的虛擬化主要是指平臺虛擬化技術,通過使用控制程式(Control Program,也被稱為 Virtual Machine MonitorHypervisor,隱藏特定計算平臺的實際物理特性,為使用者提供抽象的、統一的、模擬的計算環境(稱為虛擬機器)。虛擬機器中運行的作業系統被稱為客戶機作業系統(Guest OS),運行虛擬機器監控器的作業系統被稱為主機作業系統(Host OS),當然某些虛擬機器監控器可以脫離作業系統直接運行在硬體之上(如 VMWARE 的 ESX 產品)。運行虛擬機器的真實系統我們稱之為主機系統。
平臺虛擬化技術又可以細分為如下幾個子類:
1. 全虛擬化(Full Virtualization)
全虛擬化是指虛擬機器類比了完整的底層硬體,包括處理器、實體記憶體、時鐘、外設等,使得為原始硬體設計的作業系統或其它系統軟體完全不做任何修改就可以在虛擬機器中運行。作業系統與真實硬體之間的交互可以看成是通過一個預先規定的硬體介面進行的。全虛擬化 VMM 以完整類比硬體的方式提供全部介面(同時還必須類比特權指令的執行過程)。舉例而言,x86 體系結構中,對於作業系統切換進程頁表的操作,真實硬體通過提供一個特權 CR3 寄存器來實現該介面,作業系統只需執行 "mov pgtable,%%cr3" 彙編指令即可。全虛擬化VMM 必須完整地類比該介面執行的全過程。如果硬體不提供虛擬化的特殊支援,那麼這個模擬過程將會十分複雜:一般而言,VMM 必須運行在最高優先順序來完全控制主機系統,而 Guest OS 需要降級運行,從而不能執行特權操作。當 Guest OS 執行前面的特權彙編指令時,主機系統產生異常(GeneralProtection Exception),執行控制權重新從 Guest OS 轉到 VMM 手中。VMM 事先分配一個變數作為影子 CR3 寄存器給 Guest OS,將pgtable 代表的客戶機物理位址(Guest Physical Address)填入影子 CR3 寄存器,然後 VMM 還需要pgtable 翻譯成主機物理位址(Host Physical Address)並填入物理 CR3 寄存器,最後返回到 Guest OS中。隨後 VMM 還將處理複雜的 Guest OS 缺頁異常(Page Fault)。比較著名的全虛擬化 VMM 有 Microsoft Virtual PC、VMware Workstation、Sun Virtual Box、Parallels Desktop for Mac 和 QEMU。
2. 超虛擬化(Paravirtualization)
這是一種修改 Guest OS 部分訪問特權狀態的代碼以便直接與 VMM 交互的技術。在超虛擬化虛擬機器中,部分硬體介面以軟體的形式提供給客戶機作業系統,這可以通過 Hypercall(VMM 提供給Guest OS 的直接調用,與系統調用類似)的方式來提供。例如,Guest OS 把切換頁表的代碼修改為調用 Hypercall 來直接完成修改影子 CR3 寄存器和翻譯位址的工作。由於不需要產生額外的異常和類比部分硬體執行流程,超虛擬化可以大幅度提高性能,比較著名的 VMM 有 Denali、Xen。
3. 硬體輔助虛擬化(Hardware-Assisted Virtualization)
硬體輔助虛擬化是指借助硬體(主要是主機處理器)的支援來實現高效的全虛擬化。例如有了Intel-VT 技術的支援,Guest OS 和 VMM 的執行環境自動地完全隔離開來,Guest OS 有自己的“全套寄存器”,可以直接運行在最高級別。因此在上面的例子中,Guest OS 能夠執行修改頁表的彙編指令。Intel-VT 和 AMD-V 是目前 x86 體系結構上可用的兩種硬體輔助虛擬化技術。
4. 部分虛擬化(Partial Virtualization)
VMM 只類比部分底層硬體,因此客戶機作業系統不做修改是無法在虛擬機器中運行的,其它程式可能也需要進行修改。在歷史上,部分虛擬化是通往全虛擬化道路上的重要里程碑,最早出現在第一代的分時系統 CTSS 和 IBM M44/44X 實驗性的分頁系統中。
5. 作業系統級虛擬化(Operating System Level Virtualization)
在傳統作業系統中,所有使用者的進程本質上是在同一個作業系統的實例中運行,因此內核或應用程式的缺陷可能影響到其它進程。作業系統級虛擬化是一種在伺服器作業系統中使用的羽量級的虛擬化技術,內核通過創建多個虛擬的作業系統實例(內核和庫)來隔離不同的進程,不同實例中的進程完全不瞭解對方的存在。比較著名的有 Solaris Container [2],FreeBSD Jail 和 OpenVZ 等。
這種分類並不是絕對的,一個優秀的虛擬化軟體往往融合了多項技術。例如 VMware Workstation 是一個著名的全虛擬化的 VMM,但是它使用了一種被稱為動態二進位翻譯的技術把對特權狀態的訪問轉換成對影子狀態的操作,從而避免了低效的 Trap-And-Emulate 的處理方式,這與超虛擬化相似,只不過超虛擬化是靜態地修改程式碼。對於超虛擬化而言,如果能利用硬體特性,那麼虛擬機器的管理將會大大簡化,同時還能保持較高的性能。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 轉播轉播 分享分享 分享淘帖
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

小黑屋|Archiver|手機版|艾歐踢創新工坊    

GMT+8, 2024-6-12 07:08 , Processed in 0.204921 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表