24
基基 VT-x 基基基基基基基基基基基基 1 基基基 Dept. of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C 2013.07.16

基於 VT-x 的處理器模式轉換機制研究

  • Upload
    shino

  • View
    75

  • Download
    1

Embed Size (px)

DESCRIPTION

基於 VT-x 的處理器模式轉換機制研究. 張力升 Dept. of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C 2013.07.16. 摘要. 為降低虛擬化環境中處理器模式轉換帶來的開銷,研究了基於 VT-x 技術的處理器模式轉換機制。 根據客戶機操作系統在不同階段的運行狀態,分析了相應的處理器模式轉換過程。 採用客戶機作業系統最小等待的基本思想,結合 VT-x 處理器提供的虛擬機器擴展功能,設計出了處理器模式轉換的整體流程。 - PowerPoint PPT Presentation

Citation preview

Page 1: 基於 VT-x 的處理器模式轉換機制研究

基於 VT-x的處理器模式轉換機制研究

1

張力升 Dept. of Electrical EngineeringNational Cheng Kung University

Tainan, Taiwan, R.O.C2013.07.16

Page 2: 基於 VT-x 的處理器模式轉換機制研究

摘要

為降低虛擬化環境中處理器模式轉換帶來的開銷,研究了基於 VT-x技術的處理器模式轉換機制。

根據客戶機操作系統在不同階段的運行狀態,分析了相應的處理器模式轉換過程。

採用客戶機作業系統最小等待的基本思想,結合 VT-x處理器提供的虛擬機器擴展功能,設計出了處理器模式轉換的整體流程。

實驗結果表明, VT-x技術可以有效輔助處理器模式轉換,簡化虛擬機器監控器設計。

2

Page 3: 基於 VT-x 的處理器模式轉換機制研究

1. 引言

目前基於 x86平臺的虛擬機器監控器 (VMM)有純軟體和硬體輔助兩種實現方式 純軟體方式在性能上存在巨大開銷而逐步被淘汰,主流的虛擬機

器監控器多採用硬體輔助方式。與傳統的純軟體虛擬化相比, VT-x技術提供的管理結構

和模式轉換機制能夠滿足客戶機作業系統對處理器的自然需求,為客戶機作業系統提供更為透明的虛擬化環境。

本文圍繞構造滿足客戶機作業系統需求的處理器環境,在VMM的設計中採用了客戶機作業系統最小等待的基本思想,對處理器模式的初次配置和轉換過程進行了簡化並給出了整體流程,最後就相關問題進行了討論。

3

Page 4: 基於 VT-x 的處理器模式轉換機制研究

2.1客戶機作業系統與處理器模式 (1/7)

理想情況下,處理器為客戶機作業系統提供的運行環境應該滿足幾個方面的要求: 完整的處理器特權級 : 純軟體實現的 VMM無法滿足 可變的處理器模式 : 純軟體實現的 VMM需要構造較為複雜的資料

結構才能完成模式轉換而且效率低下 受限的客戶機作業系統行為 : 要麼修改客戶機作業系統源碼,不

然由 VMM對指令進行動態捕獲。總之,純軟體方式不能高效的實施虛擬化,需要在硬體層

次上提供一定的支援。

4

Page 5: 基於 VT-x 的處理器模式轉換機制研究

2.2 VT-x技術介紹 (2/7)

Intel採用 VT-x技術對傳統的處理器進行了擴展,以在硬體上輔助實施虛擬化,擴展包含 3 個方面: (1)VMx操作模式 :

VT-x處理器增加了 VMX操作模式,包括 VMX根模式 \ 和 VMX非根模式。 VMM運行在 VMX根模式下,客戶機操作系統運行在 VMX非根模式下。

從 VMX根模式到 VMX非根模式的轉換由指令顯式控制,稱為虛擬機器進入(VM entry);從 VMX非根模式到 VMX根模式的轉換由某些指令和事件觸發,稱為虛擬機器退出 (VM exit)。

客戶機作業系統在 VMX非根模式下的某些行為會產生退出,因此它的功能受到了限制,達到硬體輔助虛擬化的目的。

VMX模式下的進入退出如圖 1 所示。

5

Page 6: 基於 VT-x 的處理器模式轉換機制研究

2.2 VT-x技術介紹 (3/7)

6

Page 7: 基於 VT-x 的處理器模式轉換機制研究

2.2 VT-x技術介紹 (4/7) (2)VMCS管理結構 :

VMCS(virtual. machine control data structure)是專門為 VMX操作定義的管理結構 [7],用於管理虛擬機器的進入和退出,同時管理處理器在 VMX非根模式下的行為。

VMCS資料被劃分成了 6 個邏輯組 [7]: 客戶機狀態域:虛擬機器進入時,處理器狀態從該域中載入;退出時,處理器狀態

保存在該域中。 主機狀態域:虛擬機器退出時,處理器狀態從該域中載入。 虛擬機器執行控制域:用於設置退出條件,管理虛擬機器在 VMX非根模式下的行為

。 虛擬機器退出控制域:管理虛擬機器退出時的行為。 虛擬機器進入控制域:管理虛擬機器進入時的行為。 虛擬機器退出信息域:記錄虛擬機器最近一次退出時的資訊。 在虛擬機器執行流程中,6 個域的作用如圖 2 所示。

(3)VMX指令集 :VMX包括 5 條管理 VMX操作的指令和 5 條管理VMCS的指令,管理 VMX的指令主要控制處理器操作模式的轉換,管理 VMCS的指令主要完成對 VMCS資料結構的初始化、載入以及相關區域的讀寫等操作。

7

Page 8: 基於 VT-x 的處理器模式轉換機制研究

2.2 VT-x技術介紹 (5/7)

8

Page 9: 基於 VT-x 的處理器模式轉換機制研究

2.3 VT-x技術與 VMM (6/7)

由於 VT-x技術為處理器模式轉換提供了硬體支援,使得VMM相關部分的設計實現發生了變化。

純軟體實現的 VMM需要提供複雜的資料結構與控制流程才能完成處理器模式轉換,對特殊的退出事件需要進行動態捕獲,因此實現相當複雜。

採用 VT-x技術後,處理器模式轉換不僅取決於 VMM的控制,而且也和處理器本身的能力相關。 VMM與處理器配合實施虛擬化,簡化了 VMM設計。

純軟體 VMM和硬體輔助 VMM在處理器模式轉換方面的實現對比如表 l 所示。

9

Page 10: 基於 VT-x 的處理器模式轉換機制研究

2.3 VT-x技術與 VMM (7/7)

10

表一 兩種 VMM實現對比

  純軟體 VMM 硬體輔助 VMM

控制結構 軟體構造 硬體提供

進入方式 構造任務 指令

退出事件 動態捕獲 預先設定

退出信息 動態分析 硬體提供

Page 11: 基於 VT-x 的處理器模式轉換機制研究

3.1 轉換過程分析 (1/5)

從開機加電到客戶機作業系統啟動,處理器模式經歷了一系列轉換,如圖 3 所示。

傳統的處理器有 5 種模式,分別是真實位址模式、非分頁保護模式、分頁保護模式、虛擬真實模式惻和系統管理模式。

典型的作業系統一般在完成圖中步驟 1 ~步驟 3 的模式轉換之後就可以正常工作, 在某些特殊的情況下,可能還要進入虛擬實模式或系統管理模式

。在虛擬化條件下,首先需要 VMM將處理器轉換到 VMX根操作模式,在此模式下進一步為客戶機操作系統構造處理器環境。

處理器模式轉換流程由 VMM控制, VMM直接或間接的使處理模式發生轉換。直接利用指令將處理器轉換到任意一種模式。處理器模式轉換如圖 4 所示。

11

Page 12: 基於 VT-x 的處理器模式轉換機制研究

3.1 轉換過程分析 (2/5)

12

Page 13: 基於 VT-x 的處理器模式轉換機制研究

3.1 轉換過程分析 (3/5)

13

Page 14: 基於 VT-x 的處理器模式轉換機制研究

3.2 模式轉換執行流程 (4/5)

VMM首先使處理器進入 VMX根模式,然後在 VMCS中設置執行退出條件,處理器在執行客戶機作業系統代碼過程中滿足退出條件時,就會自動從 VMX根模式轉換到 VMX非根模式,進入到預設的退出入口。

VMM通過分析 VMCS提供的退出原因,對退出事件進行具體處理,然後重新進入客戶機作業系統並返回結果。執行流程如圖 5 所示。

14

Page 15: 基於 VT-x 的處理器模式轉換機制研究

3.2 模式轉換執行流程 (5/5)

Page 16: 基於 VT-x 的處理器模式轉換機制研究

4.1 VMCS控制域及主機域配置 (1/8)

(1)VMCS控制域的配置包含 3 個方面:虛擬機器執行控制域、虛擬機器進入控制域和虛擬機器退出控制域,如表2 所示。 本實現在退出控制域設置了 VM_EXIT_ACK_INTR_ON_EXIT,

表示外部中斷導致處理器退出到 VMM之前,處理器首先應答中斷控制器並獲取中斷向量,向量號保存在 VMCS的虛擬機器退出中斷資訊域中。退出之後, VMM可以從中斷資訊域中讀取到中斷向量號,然後去調用相應中斷的處理常式。

(2)主機狀態域配置 VMCS中的主機狀態包括:控制暫存器 (CRO、 CR3 、 CR4) 、段暫存器(cs 、 DS 、 ES 、 FS 、 GS 、 ss),指令暫存器 (EIP),通用暫存器 (ESP)。其中控制暫存器、段暫存器、管理暫存器和通用暫存器按照當前會 VMM的狀態設置,指令暫存器 EIP應該指向一個預設的退出入口,處理器在退出之後就會自動轉向這個入口。

16

Page 17: 基於 VT-x 的處理器模式轉換機制研究

4.1 VMCS控制域及主機域配置 (2/8)

表 2 VMCS 控制域配置控制域 設置 說明執行控制域 基於引腳 PIN_BASED_EXT

_INTR_MASK外部中斷退出

基於主處理器 CPU_BASED_HLT_EXITING

CPU_BASED_CR3_STORE_EXITING

CPU_BASED_UNCOND_IO_EXITNG

HLT指令退出CR3讀取退出IO指令退出

基於從處理器 無 無進入控制域 無 無退出控制域 VM_EXIT_ACK_I

NTR_ON_EXIT退出時處理器應答中斷控制器並獲取中斷向量號

17

Page 18: 基於 VT-x 的處理器模式轉換機制研究

4.2客戶機作業系統的構造與載入 (3/8)

本實現利用類比程式來類比客戶機作業系統在 VMX非根模式下的行為。

保護模式的類比程式可以直接使用 c 語言編寫,編譯生成32位環境下的可執行程式,去掉檔頭資訊後可以獲得一個純指令檔;

通常客戶機作業系統的定址是由:客戶機作業系統頁表 +影子頁表 ( 或者擴展頁表 ) 兩部分配合完成的 本實現採用的方式是將客戶機作業系統載入到 VMM的位址空間,借助於 VMM的頁表完成客戶機作業系統的定址。

18

Page 19: 基於 VT-x 的處理器模式轉換機制研究

4.3 虛擬真實模式的構造 (4/8)

VMCS客戶機狀態域中幾個關鍵的部分設置如下:– (1)設置控制暫存器 CR0、 CR4使處理器處於分頁保護模式。– (2)客戶機作業系統 Eflags暫存器的 VM位置 l ,表示要進入到虛

擬真實模式。– (3)CS: EIP組合形成的位址指向客戶機作業系統的首條指令。– (4)TR基底位址必須指向合法的 TSS,由於進入虛擬真實模式時處

理器會檢測 TSS,因此必須構造合法的 TSS結構。– (5)其它段暫存器的設置值必須滿足虛擬真實模式下的限制。當處理

器從 VMX根模式轉換到 VMX非根模式時,處理器會對 VMCS結構中客戶機狀態域的設置進行檢測,某些寄存器的值必須滿足特定的要求

本實現在 VMCS中設置的寄存器值如表 3 所示。保護模式下的段概念和定址機制與真實模式不同,本實現在VMCS中設置的寄存器值如表 4 所示,與虛擬真實模式相同的域不再列出,參照表 3 。

19

Page 20: 基於 VT-x 的處理器模式轉換機制研究

4.2客戶機作業系統的構造與載入 (5/8)

表 3 理器虛擬真實模式配置寄存器 設置值 處理器要求

CR0 PE.PG 分貞保護模式CR3 指向頁目錄基底位址 根據 VMM貞表設置CR4 PSE.PGE 根據頁表屬性設置

Eflags 0x20002 進入虛擬真實模式CS 選擇符 =Oxl00

基底位址 =Oxl000界限 =OxFFFF屬性 =OxF3

對段界限和屬性域進行檢測

EIP 0x0 根據客戶機作業系統的線性位址設置

ESP 指向棧頂 根據分配的記憶體設定DS.ES.FS.GS.SS 選擇符 =0

基底位址 =0界限— OxFFFF屬性 =OxF3

對段界限和屬性進行檢測

GDTR.IDTR 基底位址 =o界限 =OxFFFF

基底位址域中包含規則的位址

LDTR 選擇符 =0基底位址 =0界限 =O屬性 =0x82

對選擇符和屬性域進行榆測

TR 選擇符 =0基底位址 =TSS地址界限 =OxFF屬性 --Ox8b

對選擇符、基底位址和屬性域進行檢測

20

Page 21: 基於 VT-x 的處理器模式轉換機制研究

3.4 保護模式的構造 (6/8)

表 4 處理器保護模式配置

暫存器 設置值 處理器要求

Eflags 0x2 進入普通保護模式

CS 選擇符 =o基底位址 =o

界限 =OxFFFFFFFF屬性 --Oxc09b

對屬性域進行檢測

EIP 客戶機作業系統代碼位址 根據客戶機作業系統代碼線性位址設置

DS、 ES、 FS、 GS、 SS

界限 =OxFFFFFFFF屬性 =Oxc093

對屬性域進行檢測

TR 基底位址 =0 對選擇符、屬性域進行榆測

21

Page 22: 基於 VT-x 的處理器模式轉換機制研究

4.5 退出的設定與處理 (7/8)

在客戶機作業系統中,根據虛擬機器執行控制域中相應控制位元的配置,設置了可以產生退出的指令和事件,如表5 所示。

本實現處理的退出分為兩類: (1)指令退出處理: VMM根據 VMCS提供的退出資訊,獲得退出

指令類型並對該指令進行處理。 (2)外部中斷退出處理:對於外部中斷導致的退出, VMCS的退

出中斷資訊域中包含了外部中斷向量號, VMM可以根據相應的中斷源類型調用該中斷的處理常式,在本實現中主要是向 IOAPIC中斷控制器發送 EOI消息表示本次中斷處理已經結束,

22

表 5 退出事件 虛擬實模式 保護模式指令外部中斷

HLT , in時鐘,鍵盤

HLT , IN , CR3讀取時鐘,鍵盤

Page 23: 基於 VT-x 的處理器模式轉換機制研究

4.6 分析 (8/8)

在上述的處理器模式轉換流程中,影響客戶機作業系統執行效率的因素主要來自兩個方面: (1)處理器模式的初次構造,應該儘量減少非必要的配置內容,使得處理器能夠儘快的從 V / VEX根模式轉換到 VMX非根模式,保證客戶機作業系統能夠及時的啟動運行。。

(2)退出,從 VMX非根模式退出到 VMX根模式後,客戶機作業系統處於停滯狀態,大量的退出必然會嚴重影響客戶機作業系統的性能。可以從兩方面改進,一是減少退出次數,二是退出後儘快的進入,以縮短客戶機作業系統的停滯時間。 

23

Page 24: 基於 VT-x 的處理器模式轉換機制研究

5. 結束語

本文提出的 VMSF調度框架支援在不修改操作系統內現有調度機制的基礎上,定制虛擬機器任務的調度方法;並通過實驗,檢驗了此調度框架的有效性。本文工作對於降低新型調度演算法開發和推廣門檻具有重要意義。

24