1.前言
Virtualization(虛擬化)是讓公開的虛擬資源等同于被虛擬化的底層物理資源。虛擬化在各個領域應用很廣泛,不局限于計算機科學領域。無論是在硬件、軟件還是在嵌入式子系統(tǒng)中,虛擬化總是使用或組合三種簡單的技術來實現(xiàn)的:多路復用(Multiplexing)、聚合(Aggregation)和模擬(Emulation)。
2.多路復用
多路復用目的是在多個虛擬實體之間復用物理資源。有兩種類型的多路復用:空間復用和時間復用。
通過空間復用,物理資源(在空間上)被劃分為多個虛擬實體。例如操作系統(tǒng)跨不同地址空間對物理內存的不同頁面進行多路復用。為了實現(xiàn)這一目標,操作系統(tǒng)要統(tǒng)一管理虛擬到物理的地址映射,并依賴于MMU提供的體系結構支持。
通過時間復用,可以在虛擬實體之間分時調度相同的物理資源。例如,操作系統(tǒng)調度器將CPU內核和硬件線程多路復用到一組可運行的進程中。通過上下文切換操作將處理器的寄存器文件的狀態(tài)保存在與傳出進程相關聯(lián)的內存中,然后從與傳入進程相關聯(lián)的內存位置恢復該寄存器文件的狀態(tài)。
圖1 多路復用
3.聚合
聚合所做的與多路復用恰恰相反,它獲取多個物理資源,把它們組合起來,并使它們看起來像是單個抽象。例如,RAID控制器將多個磁盤聚合成單個卷。在配置完成后,RAID控制器將確保對卷的所有讀寫操作都恰當分配到RAID組的各個磁盤上。
這樣的話,操作系統(tǒng)將文件系統(tǒng)格式化到卷上,就不必擔心布局和編碼的細節(jié)。在不同的域中,處理器的內存控制器將多個DIMM的容量聚合到一個物理地址空間中,然后由操作系統(tǒng)統(tǒng)一管理。
圖2?聚合
4.模擬
模擬依賴于軟件中的間接層來搭建與物理設備相對應的虛擬化資源或設備,即使該虛擬資源實際不存在于當前的計算機物理系統(tǒng)中??缂軜嬆M器是在一個處理器架構上運行另一個處理器架構,例如,Apple Rosetta在x86計算機上模擬PowerPC處理器以實現(xiàn)向后兼容,比如在圖(c)中X是x86,Y是PowerPC。
圖3?模擬
5.結語
多路復用、聚合和模擬可以自然地組合在一起,形成各種形式的虛擬化實現(xiàn)。特別是幾乎所有的虛擬機管理程序(Hypervisor)都是多路復用和模擬的組合。