hypervisor簡介

什麼是hypervisor

hypervisor爲操作系統提供獨立的虛擬硬件平臺,而虛擬硬件平臺反過來又提供對底層機器的虛擬的完整訪問。hypervisor之於操作系統類似於操作系統之於進程。

虛擬化和hypervisor

關於什麼是虛擬化,請參考我的另一篇博客《虛擬化技術介紹》,有更詳細的講解。

虛擬化就是隱藏底層物理硬件,讓多個操作系統可以透明地使用和共享硬件資源的一種技術手段。這種架構的另一個更常見的名稱是平臺虛擬化。

在典型的虛擬化分層架構中,提供平臺虛擬化的層稱爲 hypervisor (有時稱爲虛擬機管理程序 VMM)。虛擬操作系統稱爲虛擬機(VM)。下圖展示了常用硬件虛擬化的簡單分層架構,當然並不是所有虛擬化解決方案都是一樣的。

wKioL1Wc9tfS8K-7AABzv7I8t1o435.jpg

可以看到,hypervisor是提供底層機器虛擬化的中間軟件層。操作系統將對機器的底層資源的訪問虛擬化爲進程。hypervisor 也做一樣的事情,但其對象不是進程,而是整個虛擬機操作系統。

Hypervisor的兩種類型

hypervisor 可以劃分爲兩大類。一種是直接運行在物理硬件之上的,例如基於內核的虛擬機KVM,它本身是一個基於操作系統的hypervisor。另一種是運行在另一個操作系統中,例如QEMU WINE

hypervisor的構成

hypervisor僅是一個從其虛擬操作系統抽象機器硬件的分層應用程序。通過這種方式,每個虛擬操作系統看到的僅是一個VM而不是真實的硬件機器。

在較高級別上,hypervisor需要少量設施啓動虛擬操作系統:一個需要驅動的內核映像、一個配置(比如 IP 地址和所需的內存量)、一個磁盤和一個網絡設備。磁盤和網絡設備通常映射到機器的物理磁盤和網絡設備(如圖所示)。最後,需要使用一組虛擬操作系統工具啓動和管理虛擬操作系統。

wKioL1Wc9vjAgfMnAACoKVkk2Fk734.jpg

然後,一個簡化的hypervisor架構實現最後的關鍵功能,從而使虛擬操作系統可以和宿主操作系統同時運行。實現這個功能需要一些特定的要素,如圖所示。

wKiom1Wc9TehtsHnAACT4W-filo888.jpg

首先,類似於將用戶空間應用程序和內核函數連接起來的系統調用,一個通常可用的虛擬化調用(hapercallhypervisor對操作系統進行的系統調用)層允許虛擬系統向宿主操作系統發出請求。可以在內核中虛擬化I/O,或通過虛擬操作系統的代碼支持它。故障必須由 hypervisor 親自處理,從而解決實際的故障,或將虛擬設備故障發送給虛擬操作系統。hypervisor 還必須處理在虛擬操作系統內部發生的異常。(畢竟,虛擬操作系統發生的錯誤僅會停止該系統,而不會影響 hypervisor 或其他虛擬操作系統)。hypervisor的核心要素之一是頁映射器,它將硬件指向特定操作系統(虛擬OS hypervisor)的頁。最後,需要使用一個高級別的調度器在hypervisor和虛擬操作系統之間傳輸控制。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章