第5章 總體設計方案

1.1 需求分析

目前的虛擬機監控器,大多都是直接運行在操作系統之上的,例如 VMware workstation, KVM, Virtual PC 等。只有 Xen VMware ESX 提供運行在硬件上的機制。

但是, Xen 虛擬機監控器使用的是 Linux 內核,因此代碼量過於龐大,維護起來非常的困難,而且由於代碼量過大,其安全性也相對地較難得到保障。 VMware ESX 雖然提供了它自己設計和實現的一個精簡的操作系統內核,可以說,它是目前市面上最爲優秀的虛擬機監控器,但是它是閉源的,無法獲取源碼,而且需要昂貴的授權費用。

基於以上原因,我們提出了設計一個輕量級的虛擬機監控器的方案,即 Smart-VM. Smart-VM 將採用開源的形式,且它提供了一個精簡的操作系統內核作爲虛擬機監控器的核心。

1.1.1 目標功能

Smart-VM 是一個輕量級的虛擬機,提供了一個專用的操作系統內核。它的主要目標功能包括:

a)        簡單的用戶交互:即命令行控制檯;

b)        虛擬硬件平臺:針對每個客戶操作系統,虛擬出一套硬件設備;

c)        管理虛擬機:當同時運行多個虛擬機的時候,需要協調多個虛擬機之間的運行;

d)       管理硬件資源:由於 Smart-VM 是直接運行在硬件上的,因此需要管理硬件資源。

1.2 Smart-VM 總體結構

Smart-VM 是在 PC 機上運行的虛擬化技術平臺,它提供了同時運行多個客戶操作系統的機制。對於每個虛擬計算機, Smart-VM 都會虛擬出一套硬件設備,同時, Smart-VM 又要管理真實的硬件設備,協調各個客戶操作系統對硬件設備資源的訪問。如圖 5.1

5 . 1 Smart-VM 總體結構

Smart-VM 虛擬化層:爲客戶操作系統虛擬出一套硬件平臺供其使用;

Smart-VM 操作系統:負責管理硬件資源,同時還要協調好客戶操作系統對硬件資源的訪問;

1.3 客戶操作系統

相對於半虛擬化來說, Intel-VT 技術的優點就是不需要修改客戶操作系統的內核,因此,客戶操作系統在虛擬平臺上的運作模型也沒有改變 ( 客戶操作系統的運作模型如圖 5.2 ,正常操作系統的運作模型是圖 5.3) ,極大地降低了開發虛擬機監控器的難度。因此,對於客戶操作系統來說,它是感覺不到虛擬機監控器的存在的。

5 . 2 Smart-VM 客戶操作系統運作模型

5 . 3 操作系統運作模型

1.4 Smart-VM 監控器

中間着色的部分就是 Smart-VM 虛擬機監控器。它也是我們的工作。

Smart-VM 虛擬機監控器的功能包括:

a)        爲每個客戶操作系統虛擬出一套虛擬平臺;

b)        管理真實的硬件資源;

基於以上的需求,我們將 Smart-VM 分爲兩個大模塊,一個是 Smart-VM 虛擬化層,另外一個是 Smart-VM 操作系統。

1.4.1 Smart-VM 虛擬化層

Smart-VM 虛擬化層的主要功能是爲上層客戶操作系統虛擬出一套硬件平臺:

a)        處理器虛擬化:包括實模式虛擬化和保護模式虛擬化;

b)        中斷虛擬化:能夠處理異常,軟件中斷和外部中斷;

c)        內存虛擬化:現在,我們是通過虛擬內存的形式實現的;

d)       I/O 虛擬化:能夠與外圍設備進行通信;

Smart-VM 虛擬化層的架構圖如下(如圖 5.5 ):

5 . 4 Smart-VM 虛擬化層

虛擬服務分發器:虛擬服務分發器根據客戶操作系統退出時得到的信息,將服務請求分發到虛擬化層的各個模塊,然後收集各個模塊執行完請求後的反饋信息,交給客戶操作系統處理。

實模式虛擬化: Smart-VM 的實模式虛擬化,是利用虛擬 8086 模式實現的。主要還是要處理好 BIOS 虛擬化和特權級虛擬化。

保護模式虛擬化:能夠運行 32 位客戶操作系統的內核,包含三個子模塊:

a)        中斷虛擬化:主要是處理好保護模式下的中斷;

b)        內存虛擬化:使用的是影子頁表;

c)        I/O 虛擬化:能夠與外圍設備進行交互;

1.4.1.1 處理器虛擬化

處理器虛擬化包括實模式虛擬化和保護模式虛擬化兩個主要的模塊。在處理器運行的過程中,由於各種各樣的原因,需要不斷地進行 VMX 根操作模式和 VMX 非根操作模式的切換。

5 . 5 Smart-VM 狀態轉換圖

5.5 顯示了 Smart-VM 的狀態轉換關係:

1.      計算機剛啓動的時候,處理器處於實模式;

2.      當處理器處於實模式的時候,初始化保護模式所需要的環境之後,就可以進入保護模式;

3.      當處理器處於保護模式的時候,可以通過執行 VMXON 指令進入 VMX 的根模式,當處理器處於 VMX 根操作模式的時候,可以通過執行 VMXOFF ,退出到保護模式;

4.      當處理器激活 VMX 模式是,需要處理好三種子模式之間的轉換:

a)        VMX 根模式:在 VMX 的根操作模式下運行的是 Smart-VM 虛擬機監控器。通過執行 VMLAUNCH 或者 VMRESUME 指令,處理器可以進入 VMX 非根操作模式;

b)        VMX 非根操作模式下的保護模式:實際上,處理器進入非根模式的時候,只能進入 VMX 非根模式下的保護模式, VMX 非根操作模式下的虛擬 8086 模式,只是 VMX 非根操作模式下的保護模式的一個子模式。

                                      i.              eflages 寄存器的 VM 位置 1 是,處理器就處於虛擬 86 模式,從保護模式進入虛擬 86 模式,可以通過執行 iret 指令或者任務切換來完成;

                                    ii.              VMX 非根模式下的保護模式退出到 VMX 根模式,有很多種情況,主要分爲條件退出和無條件退出兩大類;

c)        VMX 非根模式下的虛擬 86 模式:到處理器處於 VMX 非根模式下的虛擬 86 模式,執行的是 16 位的程序;

                                      i.              VMX 非根模式下的虛擬 86 模式退出到 VMX 根模式,同樣分爲條件退出和無條件退出兩大類;

                                    ii.              VMX 非根模式下的虛擬 86 模式退出到 VMX 非根模式下的保護模式,一般通過異常 / 中斷,或者任務切換;

5 . 6 Smart-VM 操作系統的整體結構

1.4.2 Smart-VM 操作系統

Smart-VM 虛擬機監控器設計的目標就是儘可能保持最精簡的代碼,但是又考慮到性能的原因,因此, Smart-VM 的內核採用了宏內核和微內核的折中處理方法(如圖 5.6[15] ),即將一部分與性能密切相關的功能放在內核,其他的功能放在內核之外,作爲服務進程來運行。

1.4.2.1 進程管理

進程管理的功能包括:

a)        進程通訊:實現兩個進程之間的本地通訊;

b)        進程調度:能夠公平合理地爲每個進程分配處理器資源;

c)        內存管理:實現內存的動態分配;

1.4.2.2 內存管理

內存管理需要高效的處理兩種情況:

a)        小塊的內存管理:比如說幾個字節的內存申請;

b)        大塊的內存管理:比如說一次性申請幾十兆,甚至上百兆的內存塊;

1.4.2.3 設備驅動

設備驅動程序用於控制硬件。所有針對設備的訪問,都是通過設備驅動程序來完成了。

設備驅動程序主要分爲兩大類:

a)        字符設備驅動程序:這類設備訪問速度較慢,例如鍵盤等;

b)        塊設備驅動程序:這類設備的訪問速度較快,例如硬盤,顯卡等;

1.4.2.4 文件系統

Linux 類似,採用所有的設備皆文件的方法。

該文件文件系統主要支持的功能包括:

a)        虛擬機監控器的日誌;

b)        各個虛擬機的相關資料,包括虛擬機的配置文件,虛擬機的硬件資源 ( 比如說劃分給虛擬機的硬盤也當作一個文件來管理 ) 等;

c)        外部設備;

1.5 本章小結

本章介紹了 Smart-VM 的總體設計方案。

從邏輯上, Smart-VM 分爲兩層:

a)        Smart-VM 虛擬化層,主要是通過虛擬服務分發器分發客戶操作系統的服務請求。

b)        Smart-VM 操作系統,用於硬件資源管理,功能包括:

                        i.              進程管理

                      ii.              內存管理

                    iii.              設備驅動

                    iv.              文件系統

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