專利名稱:一種系統(tǒng)預引導階段硬件輔助cpu虛擬化環(huán)境建立的方法
技術領域:
本發(fā)明涉及建立預引導階段虛擬環(huán)境,特別是涉及一種系統(tǒng)預引導階段硬件輔助 CPU虛擬化環(huán)境建立的方法。
背景技術:
目前主流的虛擬化技術主要有全虛擬化技術(Full Virtualization),泛虛擬化技術(Para Virtualization)和硬件輔助虛擬化技術(Hardware Assisted Virtualization)。前兩種在沒有硬件擴展情況下就可以支持多操作系統(tǒng)的運行,但是性能比較差,特別是對于I/O訪問頻繁的應用;硬件輔助虛擬化技術屬于一種虛擬化硬件加速技術,它的主要目標有兩個一是減少虛擬化系統(tǒng)開發(fā)設計代價,如簡化VMM (Virtual Machine Monitor)軟件設計,提供對客戶操作系統(tǒng),驅動程序的更好兼容性等方面;另外, 就是減小由于系統(tǒng)虛擬化所帶來的額外開銷問題。采用硬件輔助的虛擬化技術,可以使得客戶操作系統(tǒng)無需修改就可以直接在虛擬機監(jiān)視器VMM軟件上執(zhí)行,同時也不需要采用類似二進制翻譯等技術,因而虛擬化開銷較小。目前主流的芯片提供商都在自己最新的CPU上增加了硬件輔助虛擬化技術,從硬件的角度對虛擬化進行擴展支持,如Intel的VT,AMD的AMD-V,IBM的Power5,6以及SUN的 OpenSparc T2都包含硬件輔助虛擬化技術。盡管技術的名稱存在不同,但是其基本原理,實現方法基本一致。本發(fā)明是以Intel的CPU虛擬化技術為例進行的。下面對Intel的CPU 虛擬化技術進行簡單介紹。如圖1所示,過去只有大型主機系統(tǒng)才支持虛擬化技術,通用處理器是不支持虛擬化的。為使得通用的處理器也支持虛擬化,Intel的虛擬化技術在其IA-32體系的CPU指令集中增加了對虛擬支持的指令VMX(Virtual Machine Extensions 虛擬機擴充)。由于這些指令是在硬件層實現的,使得虛擬控制過程變得更快更簡單。在這種虛擬環(huán)境下,增加了兩種新的操作模式VMX根操作模式以及VMX非根操作模式??刂铺摂M環(huán)境的軟件VMM運行在根操作模式下,用于處理特殊指令;而VM(Virtual Machine:虛擬機)則運行在非根操作模式。當在非根操作模式VM執(zhí)行到特殊指令的時候, 系統(tǒng)會切換到運行于根操作模式的VMM,讓VMM來處理這個特殊指令。除此之外,Intel VT VMX 操作新定義了 VMCS(Virtual Machine Control Structure 虛擬機控制結構),如圖2所示。該結構中包含了處理器重要信息的區(qū)域,一個是主機狀態(tài)區(qū)域,另一個是客戶機狀態(tài)區(qū)域。VMM對硬件虛擬CPU的管理通過VMCS實現。 VMX非根操作模式與根模式之間的狀態(tài)變遷由VMCS管理。當虛擬機進入時(處理器控制從 VMX根狀態(tài)進入VMX非根狀態(tài)),處理器狀態(tài)被保存在VMCS的主機狀態(tài)區(qū)域中,同時客戶機狀態(tài)從VMCS中裝入。相反,當虛擬機退出時(從VMX非根狀態(tài)進入VMX根狀態(tài)),客戶機狀態(tài)被保存在VMCS的客戶機狀態(tài)區(qū)域中,而主機狀態(tài)則從VMCS的主機狀態(tài)區(qū)域裝入。某些特定的指令、事件或狀態(tài)會導致虛擬機退出到VMM,但客戶機軟件本身并不知道自己是否運行在虛擬機上。
發(fā)明內容
本發(fā)明在于避免以上現有技術的不足提供一種系統(tǒng)預引導階段硬件輔助CPU虛擬化環(huán)境建立的方法。本發(fā)明的技術方案如下一種系統(tǒng)預引導階段硬件輔助CPU虛擬環(huán)境建立的方法,該方法包括以下步驟1)通過操作系統(tǒng)下的安裝單元對移動U盤進行初始化,設置相關的引導扇區(qū)信息,建立硬件輔助CPU虛擬環(huán)境;2)操作系統(tǒng)對BIOS進行相關設置,將移動U盤設置為BIOS系統(tǒng)啟動的第一引導設備;3)操作系統(tǒng)加電啟動,BIOS完成系統(tǒng)自檢后將移動U盤的引導扇區(qū)調入內存執(zhí)行,由移動U盤的引導扇區(qū)調入所述硬件輔助CPU虛擬環(huán)境,建立操作系統(tǒng)啟動前預引導階段的硬件輔助CPU虛擬環(huán)境。進一步,所述的對移動U盤進行初始化的具體做法為將引導扇區(qū)代碼放在移動 U盤的第一扇區(qū)位置,將建立硬件輔助CPU虛擬環(huán)境的相關信息代碼,且將此相關信息代碼放在移動U盤的第二扇區(qū)及其后續(xù)位置。進一步,所述的建立硬件輔助CPU虛擬環(huán)境的相關信息代碼包括虛擬機監(jiān)視器 VMM與虛擬機VM之間的控制權的轉移。進一步,所述的VM到VMM控制權的轉移包括如下步驟DCPU執(zhí)行VM中正常的指令,直至最后執(zhí)行HLT指令的前一條指令;2) VM代碼中的HLT指令,產生一個通用保護錯誤處理的中斷服務事件;3) CPU執(zhí)行通用保護錯誤處理中斷服務程序,直到遇到VMX的指令vmcall ;4) vmcall指令產生VM退出事件,將CPU控制權轉交給VMM。進一步,所述的VMM到VM控制權的轉移包括如下步驟1) CPU執(zhí)行主控任務中的指令,進入IA32-E模式,將系統(tǒng)控制權交給VMM ;2) CPU執(zhí)行VMM中的指令,主要的任務有設置A20模式、根據MSR基地址,讀取VMX 能力MSR、初始化VMM以及VM的VMCS區(qū)域、調用vmxon指令進入VMM根操作模式、清除VM 的VMCS區(qū)域、裝載VM的VMCS區(qū)域為當前的VM、為當前的VM的VMCS進行初始化配置、調用 VMX的vmlaunch指令將控制權轉給VM ;3) CPU執(zhí)行VM中的指令,將控制權轉交給VMM ;4) VMM從步驟3)的下一條指令繼續(xù)執(zhí)行,其中包括從當前VMCS中獲取信息,調用 vmxoff指令退出根操作模式;5) VMM將控制權交給主控任務,主控任務從步驟1)的下一條指令繼續(xù)執(zhí)行,離開 IA32-E 模式;6)主控任務將CPU控制權交給系統(tǒng)原有的系統(tǒng)裝載器,繼續(xù)系統(tǒng)的啟動過程。本發(fā)明相比現有技術具有如下優(yōu)點1.在系統(tǒng)預引導階段由移動U盤建立硬件輔助CPU虛擬環(huán)境,由于此時操作系統(tǒng)尚未啟動,具有與具體的操作系統(tǒng)無關的特征。2.由移動U盤作為介質建立硬件輔助CPU虛擬環(huán)境,不論成功與否,都不影響目標系統(tǒng)原來的執(zhí)行流程,從而不會對原有的系統(tǒng)造成影響。
圖1.是Intel VT技術中VMX根操作模式與非根操作模式的進入與退出示意圖。圖2.是Intel VT技術中VMCS,VM以及VMM之間的關系示意圖。圖3.是本發(fā)明存放在移動U盤上代碼之間位置關系以及執(zhí)行次序的示意圖。圖4.是本發(fā)明所示VM到VMM控制權的轉移流程圖。圖5.是本發(fā)明所示VMM到VM控制權的轉移流程圖。
具體實施例方式本發(fā)明一種系統(tǒng)預引導階段硬件輔助CPU虛擬化環(huán)境建立的方法實施步驟通過以下方式實現第一步,通過操作系統(tǒng)下的相關工具,比如Linux下的dd命令或Windows下的 dskprobe工具對移動U盤進行初始化,設置相關的引導扇區(qū)信息以及主控代碼、VMM代碼、 VM代碼。將主控代碼、VMM代碼、VM代碼放在移動U盤的第二及其后續(xù)扇區(qū)位置,具體所占扇區(qū)個數由代碼大小決定。第二步,設置BIOS (Basic Input Output System)對 Intel VT 的支持,設置 BIOS 中系統(tǒng)引導盤的的次序,使得移動U盤成為系統(tǒng)引導的第一設備。第三步,系統(tǒng)啟動,BIOS系統(tǒng)運行完后,由INT 19H中斷調度移動U盤的引導扇區(qū)執(zhí)行,該引導扇區(qū)代碼將存放在移動U盤的第二以及后續(xù)扇區(qū)的主控代碼、VMM代碼、VM代碼調度執(zhí)行,建立硬件輔助CPU虛擬化環(huán)境。本發(fā)明以Intel的硬件環(huán)境為例,說明系統(tǒng)預引導階段硬件輔助CPU虛擬化環(huán)境的建立方法。本發(fā)明首先根據Intel的虛擬機技術,利用移動U盤的引導與存儲功能,在系統(tǒng)啟動前建立硬件輔助CPU虛擬環(huán)境實現相關的應用。下面結合附圖對本發(fā)明作進一步詳述。如圖3所示,引導前各個代碼以扇區(qū)的形式或文件的形式存放在移動U盤上。步驟①系統(tǒng)啟動首先執(zhí)行BIOS代碼;步驟②BI0S執(zhí)行完后,最先一個被INT 19H中斷調度運行的代碼是存放在移動U盤上的引導扇區(qū)代碼;步驟③由引導扇區(qū)代碼調度后續(xù)的硬件輔助CPU虛擬環(huán)境建立代碼運行,從而進入虛擬機環(huán)境;步驟④虛擬機環(huán)境中的任務執(zhí)行完畢后,將控制權交回給原來的硬盤啟動程序負責系統(tǒng)的正常啟動。圖3中的硬件輔助CPU虛擬環(huán)境建立代碼實際上主要由兩部分構成虛擬機監(jiān)視器VMM (Virtual Machine Monitor)運行的代碼,虛擬機VM(Virtual Machine)運行的代碼以及兩部分代碼的控制權轉移,這部分代碼存在移動U盤的第二及其后續(xù)扇區(qū)位置上。如圖4所示VM到VMM控制權的轉移流程,步驟①CPU執(zhí)行VM中正常的指令,直至最后執(zhí)行HLT指令的前一條指令(本發(fā)明中可以是out % al, % dx指令);步驟② HLT指令為特權指令,不能在VM環(huán)境下執(zhí)行,因此產生一個通用保護錯誤處理的中斷;步驟 ③CPU執(zhí)行通用保護錯誤處理中斷服務程序,直到遇到虛擬機擴充VMX (Virtual Machine Extensions)的指令vmcall ;步驟④vmcall指令產生VM退出事件,將CPU控制權轉交給 VMM0
如圖5所示VMM到VM控制權的轉移流程為敘述方便,將VMM分為兩部分主控任務和VMM任務。步驟①CPU執(zhí)行主控任務中的指令,進入IA32-E模式,將系統(tǒng)控制權交給 VMM ;其中 IA32-E 是指 Intel Architecture_32Extend,Intel 32 位體系結構擴展,這個也可以是 X86-64,AMD64 ;EM64T, IA_32e 等體系。步驟②CPU執(zhí)行VMM中的指令,主要的任務有設置A20地址線模式、根據 MSR(Machine Status Register 機器狀態(tài)寄存器)基地址,讀取VMX能力MSR、初始化 VMM以及VM的VMCS區(qū)域、調用VMX中的vmxon指令進入VMM根操作模式、清除VM的 VMCS (Virtual Machine Control Structure 虛擬機控制結構)區(qū)域、裝載 VM 的 VMCS 區(qū)域為當前的VM、為當前的VM的VMCS進行初始化配置、調用VMX中的vmlaunch指令將控制權轉給VM ;步驟③CPU執(zhí)行VM中指令,并根據圖4所示VM到VMM控制權的轉移流程,將控制權轉交給VMM ;步驟④VMM從步驟③的下一條指令(該指令會根據任務不同而不同)繼續(xù)執(zhí)行,其中包括從當前VMCS中獲取信息,調用VMX中的vmxoff指令退出根操作模式;步驟 ⑤VMM將控制權交給主控任務,主控任務從步驟①的下一條指令(該指令會根據任務不同而不同)繼續(xù)執(zhí)行,離開IA32-E模式;步驟⑥主控任務將CPU控制權交給系統(tǒng)原有的操作系統(tǒng)裝載器,繼續(xù)系統(tǒng)的啟動過程。
權利要求
1.一種系統(tǒng)預引導階段硬件輔助CPU虛擬環(huán)境建立的方法,其特征在于該方法包括以下步驟1)通過操作系統(tǒng)下的安裝單元對移動U盤進行初始化,設置相關的引導扇區(qū)信息,建立硬件輔助CPU虛擬環(huán)境;2)操作系統(tǒng)對BIOS進行相關設置,將移動U盤設置為BIOS系統(tǒng)啟動的第一引導設備;3)操作系統(tǒng)加電啟動,BIOS完成系統(tǒng)自檢后將移動U盤的引導扇區(qū)調入內存執(zhí)行,由移動U盤的引導扇區(qū)調入所述硬件輔助CPU虛擬環(huán)境,建立操作系統(tǒng)啟動前預引導階段的硬件輔助CPU虛擬環(huán)境。
2.根據權利要求1所述的一種系統(tǒng)預引導階段硬件輔助CPU虛擬環(huán)境建立的方法,其特征在于,所述的對移動U盤進行初始化的具體做法為將引導扇區(qū)代碼放在移動U盤的第一扇區(qū)位置,將建立硬件輔助CPU虛擬環(huán)境的相關信息代碼,且將此相關信息代碼放在移動U盤的第二扇區(qū)及其后續(xù)位置。
3.根據權利要求1所述的一種系統(tǒng)預引導階段硬件輔助CPU虛擬環(huán)境建立的方法,其特征在于,所述的建立硬件輔助CPU虛擬環(huán)境的相關信息代碼包括虛擬機監(jiān)視器VMM與虛擬機VM之間的控制權的轉移。
4.根據權利要求3所述的一種系統(tǒng)預引導階段硬件輔助CPU虛擬環(huán)境建立的方法,其特征在于,所述的VM到VMM控制權的轉移包括如下步驟1)CPU執(zhí)行VM中正常的指令,直至最后執(zhí)行HLT指令的前一條指令;2)VM代碼中的HLT指令,產生一個通用保護錯誤處理的中斷服務事件;3)CPU執(zhí)行通用保護錯誤處理中斷服務程序,直到遇到VMX的指令vmcall ;4)vmcall指令產生VM退出事件,將CPU控制權轉交給VMM。
5.根據權利要求3所述的一種系統(tǒng)預引導階段硬件輔助CPU虛擬環(huán)境建立的方法,其特征在于,所述的VMM到VM控制權的轉移包括如下步驟1)CPU執(zhí)行主控任務中的指令,進入IA32-E模式,將系統(tǒng)控制權交給VMM ;2)CPU執(zhí)行VMM中的指令,主要的任務有設置A20模式、根據MSR基地址,讀取VMX能力MSR、初始化VMM以及VM的VMCS區(qū)域、調用vmxon指令進入VMM根操作模式、清除VM的 VMCS區(qū)域、裝載VM的VMCS區(qū)域為當前的VM、為當前的VM的VMCS進行初始化配置、調用 VMX的vmlaunch指令將控制權轉給VM ;3)CPU執(zhí)行VM中的指令,將控制權轉交給VMM ;4)VMM從步驟3)的下一條指令繼續(xù)執(zhí)行,其中包括從當前VMCS中獲取信息,調用 vmxoff指令退出根操作模式;5)VMM將控制權交給主控任務,主控任務從步驟1)的下一條指令繼續(xù)執(zhí)行,離開 IA32-E 模式;6)主控任務將CPU控制權交給系統(tǒng)原有的系統(tǒng)裝載器,繼續(xù)系統(tǒng)的啟動過程。
全文摘要
本發(fā)明涉及一種系統(tǒng)預引導階段硬件輔助CPU虛擬化環(huán)境建立的方法,其方法是對移動U盤進行初始化,設置相關的引導扇區(qū)以及后續(xù)硬件輔助CPU虛擬環(huán)境建立的相關信息,設計并實現系統(tǒng)預引導階段硬件輔助CPU虛擬環(huán)境的建立。按照系統(tǒng)預啟動運行環(huán)境對該方法進行測試,將引導扇區(qū)放在移動U盤的第一扇區(qū)位置,硬件輔助CPU虛擬環(huán)境建立的相關代碼放在硬盤的第二扇區(qū)及其后續(xù)位置,系統(tǒng)加電啟動后BIOS執(zhí)行系統(tǒng)初始化后將引導扇區(qū)代碼調入內存運行,由引導扇區(qū)代碼調入硬件輔助CPU虛擬環(huán)境建立代碼,建立預引導階段的硬件輔助CPU虛擬環(huán)境。
文檔編號G06F9/445GK102508682SQ20111035588
公開日2012年6月20日 申請日期2011年11月10日 優(yōu)先權日2011年11月10日
發(fā)明者彭雙和 申請人:北京交通大學