240 likes | 452 Vues
基於 VT-x 的處理器模式轉換機制研究. 張力升 Dept. of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C 2013.07.16. 摘要. 為降低虛擬化環境中處理器模式轉換帶來的開銷,研究了基於 VT-x 技術的處理器模式轉換機制。 根據客戶機操作系統在不同階段的運行狀態,分析了相應的處理器模式轉換過程。 採用客戶機作業系統最小等待的基本思想,結合 VT-x 處理器提供的虛擬機器擴展功能,設計出了處理器模式轉換的整體流程。
E N D
基於VT-x的處理器模式轉換機制研究 張力升 Dept. of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C 2013.07.16
摘要 • 為降低虛擬化環境中處理器模式轉換帶來的開銷,研究了基於VT-x技術的處理器模式轉換機制。 • 根據客戶機操作系統在不同階段的運行狀態,分析了相應的處理器模式轉換過程。 • 採用客戶機作業系統最小等待的基本思想,結合VT-x處理器提供的虛擬機器擴展功能,設計出了處理器模式轉換的整體流程。 • 實驗結果表明,VT-x技術可以有效輔助處理器模式轉換,簡化虛擬機器監控器設計。 2
1. 引言 • 目前基於x86平臺的虛擬機器監控器(VMM)有純軟體和硬體輔助兩種實現方式 • 純軟體方式在性能上存在巨大開銷而逐步被淘汰,主流的虛擬機器監控器多採用硬體輔助方式。 • 與傳統的純軟體虛擬化相比,VT-x技術提供的管理結構和模式轉換機制能夠滿足客戶機作業系統對處理器的自然需求,為客戶機作業系統提供更為透明的虛擬化環境。 • 本文圍繞構造滿足客戶機作業系統需求的處理器環境,在VMM的設計中採用了客戶機作業系統最小等待的基本思想,對處理器模式的初次配置和轉換過程進行了簡化並給出了整體流程,最後就相關問題進行了討論。 3
2.1客戶機作業系統與處理器模式(1/7) • 理想情況下,處理器為客戶機作業系統提供的運行環境應該滿足幾個方面的要求: • 完整的處理器特權級:純軟體實現的VMM無法滿足 • 可變的處理器模式:純軟體實現的VMM需要構造較為複雜的資料結構才能完成模式轉換而且效率低下 • 受限的客戶機作業系統行為:要麼修改客戶機作業系統源碼,不然由VMM對指令進行動態捕獲。 • 總之,純軟體方式不能高效的實施虛擬化,需要在硬體層次上提供一定的支援。 4
2.2 VT-x技術介紹(2/7) • Intel採用VT-x技術對傳統的處理器進行了擴展,以在硬體上輔助實施虛擬化,擴展包含3個方面: • (1)VMx操作模式: • VT-x處理器增加了VMX操作模式,包括VMX根模式\和VMX非根模式。VMM運行在VMX根模式下,客戶機操作系統運行在VMX非根模式下。 • 從VMX根模式到VMX非根模式的轉換由指令顯式控制,稱為虛擬機器進入(VMentry);從VMX非根模式到VMX根模式的轉換由某些指令和事件觸發,稱為虛擬機器退出(VM exit)。 • 客戶機作業系統在VMX非根模式下的某些行為會產生退出,因此它的功能受到了限制,達到硬體輔助虛擬化的目的。 • VMX模式下的進入退出如圖1所示。 5
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
2.3 VT-x技術與VMM(6/7) • 由於VT-x技術為處理器模式轉換提供了硬體支援,使得VMM相關部分的設計實現發生了變化。 • 純軟體實現的VMM需要提供複雜的資料結構與控制流程才能完成處理器模式轉換,對特殊的退出事件需要進行動態捕獲,因此實現相當複雜。 • 採用VT-x技術後,處理器模式轉換不僅取決於VMM的控制,而且也和處理器本身的能力相關。VMM與處理器配合實施虛擬化,簡化了VMM設計。 • 純軟體VMM和硬體輔助VMM在處理器模式轉換方面的實現對比如表l所示。 9
3.1 轉換過程分析 (1/5) • 從開機加電到客戶機作業系統啟動,處理器模式經歷了一系列轉換,如圖3所示。 • 傳統的處理器有5種模式,分別是真實位址模式、非分頁保護模式、分頁保護模式、虛擬真實模式惻和系統管理模式。 • 典型的作業系統一般在完成圖中步驟1~步驟3的模式轉換之後就可以正常工作, • 在某些特殊的情況下,可能還要進入虛擬實模式或系統管理模式。在虛擬化條件下,首先需要VMM將處理器轉換到VMX根操作模式,在此模式下進一步為客戶機操作系統構造處理器環境。 • 處理器模式轉換流程由VMM控制,VMM直接或間接的使處理模式發生轉換。直接利用指令將處理器轉換到任意一種模式。處理器模式轉換如圖4所示。 11
3.2 模式轉換執行流程(4/5) • VMM首先使處理器進入VMX根模式,然後在VMCS中設置執行退出條件,處理器在執行客戶機作業系統代碼過程中滿足退出條件時,就會自動從VMX根模式轉換到VMX非根模式,進入到預設的退出入口。 • VMM通過分析VMCS提供的退出原因,對退出事件進行具體處理,然後重新進入客戶機作業系統並返回結果。執行流程如圖5所示。 14
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
4.2客戶機作業系統的構造與載入(3/8) • 本實現利用類比程式來類比客戶機作業系統在VMX非根模式下的行為。 • 保護模式的類比程式可以直接使用c語言編寫,編譯生成32位環境下的可執行程式,去掉檔頭資訊後可以獲得一個純指令檔; • 通常客戶機作業系統的定址是由:客戶機作業系統頁表+影子頁表(或者擴展頁表)兩部分配合完成的 • 本實現採用的方式是將客戶機作業系統載入到VMM的位址空間,借助於VMM的頁表完成客戶機作業系統的定址。 18
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
4.5 退出的設定與處理 (7/8) • 在客戶機作業系統中,根據虛擬機器執行控制域中相應控制位元的配置,設置了可以產生退出的指令和事件,如表5所示。 • 本實現處理的退出分為兩類: • (1)指令退出處理:VMM根據VMCS提供的退出資訊,獲得退出指令類型並對該指令進行處理。 • (2)外部中斷退出處理:對於外部中斷導致的退出,VMCS的退出中斷資訊域中包含了外部中斷向量號,VMM可以根據相應的中斷源類型調用該中斷的處理常式,在本實現中主要是向IOAPIC中斷控制器發送EOI消息表示本次中斷處理已經結束, 22
4.6 分析 (8/8) • 在上述的處理器模式轉換流程中,影響客戶機作業系統執行效率的因素主要來自兩個方面: • (1)處理器模式的初次構造,應該儘量減少非必要的配置內容,使得處理器能夠儘快的從V/VEX根模式轉換到VMX非根模式,保證客戶機作業系統能夠及時的啟動運行。。 • (2)退出,從VMX非根模式退出到VMX根模式後,客戶機作業系統處於停滯狀態,大量的退出必然會嚴重影響客戶機作業系統的性能。可以從兩方面改進,一是減少退出次數,二是退出後儘快的進入,以縮短客戶機作業系統的停滯時間。 23
5. 結束語 • 本文提出的VMSF調度框架支援在不修改操作系統內現有調度機制的基礎上,定制虛擬機器任務的調度方法;並通過實驗,檢驗了此調度框架的有效性。本文工作對於降低新型調度演算法開發和推廣門檻具有重要意義。 24