相信大對 Virtualization (虛擬化) 不陌生,除了伺服器平台外,家用處理器、主機板均已全面支援,而且相關軟件愈出愈多,可見 Virtualization 是電腦發展的一大趨勢。簡單來說,Virtualization 技術是將電腦內各硬件資源如:處理器、記憶體、硬碟、輸入 / 輸出裝置等重新分配,令一部電腦能在單一硬體下安裝多個作業系統 (Operating System),並可同時運作,彼此不會出現衝突問題。
運作原理
一部電腦可分為 2 個層面:硬件層 (Hardware Layer) 及軟件層 (Software Layer)。前者包括:處理器、主機板、記憶體、輸入輸出等實體裝置;後者則為作業系統及應用軟件。在一般情況下,作業系統需擁有完整硬件管理權才正常運作,因此在同一電腦系統內只允許一個作業系統運作。Virtualization 是在硬件層及軟件層之間加入虛擬機器管理器 (Virtual Machine Monitor;VMM),對現有的實體硬件資源進行管理及分享,並為作業系統提供一套完整模擬系統 (Virtual Machine;VM),讓作業系統以為擁有硬件管理權並正常地運作,其實當作業系統對硬件下達指令時,先交由 VMM 統一管理,才傳送至硬件層。VMM 可同時建立多個 VM,供用家在各 VM 內安裝不同作業系統,各 VM 內的作業系統可同時間運作,而且不會出現資源衝突問題。
VMX 專用指令
針對 Virtualization,處理器廠商研發出一套專用指命集 —— Virtual Machine Extensions (簡稱 VMX)。VMX 為處理器加入 10 個進行虛擬化時的指令,包括︰VMPTRLD、VMPTRST、VMCLEAR、VMREAD、VMWRITE、VMCALL、VMLAUCH、VMRESUME、VMXOFF 及 VMXON。虛擬環境下設有 2 種模式:Root 與 Non-Root。在 Root 模式可全面使用處理器資源,所以一般只有 VMM 軟件能以 Root 模式運作。至於 VM 內的作業系統 (Guest OS),則需以 Non-Root 模式運作,即每次耗用處理器資源時,皆需由 Root 模式的 VMM 分配。由於各處理器的指令及回應均由 VMM 處理才傳回至相關的 VM,難免會出現延遲令效能下降。VMX 指令作用是當 VM 啟動時,直接以 VMXON 與 VMLAUNCH 通知處理器預留資源,配合 VMREAD 與 VMWRITE 讀寫資料,以及採用 VMRESUME 與 VMOFF 關閉 VM。雖然這些指令同樣經過 VMM 層,但由於每個指令已匯入相關 VM 的 ID,分流工作完全在處理器內進行,故 VMM 只是進行簡單的轉送,令延遲減少而提升效率。
VM 數目限制
相信不少用家均有疑問,究竟同一部電腦可以建立多少個 Virtual Machines?其實大部分 VMM 軟件不設 VM 數目上限,因為 VMM 可同時處理各 VM 的硬體及資源要求,進行排序及分流,同時執行數十、甚至上百個 VM ,理論上是沒有問題。不過,當 VM 數目太多,各 VM 可分得的處理器、記憶體等資源亦有限,會令運作效率大幅降低,甚至出現「定格」等問題。
Source:ezone.hk