專利名稱::基于處理器虛擬化技術(shù)的虛擬機(jī)系統(tǒng)及其實現(xiàn)方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種虛擬機(jī)系統(tǒng),尤其涉及一種基于處理器虛擬化技術(shù)的虛擬機(jī)系統(tǒng)及其軟硬件環(huán)境配置和模塊實現(xiàn)。
背景技術(shù):
:虛擬化技術(shù)是指計算元件在虛擬而不是真實的基礎(chǔ)上運行。虛擬化技術(shù)可以擴(kuò)大硬件的容量,簡化軟件的重新配置過程。處理器虛擬化技術(shù)可以單處理器模擬多處理器并行,允許一個平臺同時運行多個操作系統(tǒng),并且應(yīng)用程序都可以在相互獨立的空間內(nèi)運行而互不影響,從而顯著提高計算機(jī)的工作效率。虛擬化技術(shù)是一個巨大的技術(shù)進(jìn)步,具體表現(xiàn)在減少軟件虛擬機(jī)相關(guān)開銷和支持更廣泛的操作系統(tǒng)方面。虛擬化技術(shù)可以提高計算機(jī)物理資源的利用率和共享率。虛擬化技術(shù)廣泛的實用性使得虛擬化在服務(wù)器、客戶端和嵌入式系統(tǒng)中有了幾乎全新的應(yīng)用,并且為提高系統(tǒng)的可靠性、操作性、安全性和實時服務(wù)質(zhì)量提供了新的途徑。當(dāng)前主流的虛擬化技術(shù)都是軟件虛擬化技術(shù),主要存在兩種類型全虛擬化和半虛擬化。全虛擬化以VMware為代表,模擬出一整套硬件設(shè)備,其上運行的客戶操作系統(tǒng)不必修改源代碼,但是運行效率較低。半虛擬化以Xen和Denali為代表,讓客戶操作系統(tǒng)知道它們正工作在一個虛擬的環(huán)境中,通過修改它們以使之工作得更好,因此操作系統(tǒng)需針對這種方法進(jìn)行修改和調(diào)整,但是效率較高。因為原有IA-32架構(gòu)的設(shè)計原因,在其上實現(xiàn)軟件虛擬化存在很多困難和問題,這也大大增加了虛擬機(jī)監(jiān)控器的設(shè)計難度。其中,最根本的原因就是特權(quán)級混淆。特權(quán)級混淆指的是軟件運行的特權(quán)級并不是當(dāng)初設(shè)計時所要運行的特權(quán)級。操作系統(tǒng)為了能控制處理器,其某些組件必須運行在特權(quán)級0上。但是虛擬機(jī)監(jiān)控器不能允許客戶操作系統(tǒng)有這種控制力,所以客戶操作系統(tǒng)不能運行在特權(quán)級0上。因此,虛擬機(jī)監(jiān)控器必須使用一種叫環(huán)路特權(quán)解除(ringdeprivileging)的技術(shù),它可以使所有的客戶軟件都在大于特權(quán)級0上運行??蛻舨僮飨到y(tǒng)可以通過兩種方式來實現(xiàn)特權(quán)解除它可以運行在特權(quán)級1上(0/1/3模型)或者運行在特權(quán)級3上(0/3/3模型)。但是兩種模型都會帶來例如特權(quán)級壓縮,特權(quán)指令無效,地址空間壓縮等一系列問題。為了從根本上解決傳統(tǒng)軟件虛擬化技術(shù)的缺點,兩大處理器廠商都推出了基于硬件的虛擬化技術(shù)一Intel的VT技術(shù)(包括VT-x和VT-i,其中VT-x針對IA-32架構(gòu),VT-i針對Itanium架構(gòu))和AMD的Pacifica技術(shù)。其中,IntelVT-x技術(shù)的一個重要的設(shè)計目標(biāo)就是消除半虛擬化和二進(jìn)制轉(zhuǎn)化技術(shù),簡化虛擬機(jī)監(jiān)控器的實現(xiàn),可以支持更大范圍的、不需修改的操作系統(tǒng),并且保持高性能。具有VT-x技術(shù)的處理器有兩種運行模式虛擬機(jī)擴(kuò)展(virtualmachineextensions)模式和非虛擬機(jī)擴(kuò)展模式。非虛擬機(jī)擴(kuò)展模式和不具備VT-x技術(shù)的處理器運行方式完全相同;虛擬機(jī)擴(kuò)展模式就是VT-x技術(shù)實際發(fā)生功效的模式。在虛擬機(jī)擴(kuò)展模式中,又分為兩種新的處理器操作模式虛擬機(jī)擴(kuò)展根操作模式和虛擬機(jī)擴(kuò)展非根操作模式。虛擬機(jī)擴(kuò)展根操作模式是提供給虛擬機(jī)監(jiān)控器使用的,它的功能與沒有VT-x技術(shù)的IA-32非常相似(主要區(qū)別就是可以使用虛擬機(jī)擴(kuò)展指令)。虛擬機(jī)擴(kuò)展非根操作模式提供了一個選擇性的IA-32環(huán)境,該環(huán)境被虛擬機(jī)監(jiān)控器控制,被設(shè)計用來支持虛擬機(jī)。兩種操作模式都支持所有的4個特權(quán)級,允許客戶軟件在其所期望的特權(quán)級上運行,也提供了虛擬機(jī)監(jiān)控器使用多個特權(quán)級的權(quán)利。VT-x技術(shù)定義了兩種新的轉(zhuǎn)換從虛擬機(jī)擴(kuò)展根操作模式到虛擬機(jī)擴(kuò)展非根操作模式的轉(zhuǎn)換叫做“虛擬機(jī)進(jìn)入操作”,從虛擬機(jī)擴(kuò)展非根操作模式到虛擬機(jī)擴(kuò)展根操作模式的轉(zhuǎn)換叫做“虛擬機(jī)退出操作”。這兩種轉(zhuǎn)換被叫做虛擬機(jī)控制結(jié)構(gòu)的一個新數(shù)據(jù)結(jié)構(gòu)控制。虛擬機(jī)控制結(jié)構(gòu)包括一組客戶機(jī)狀態(tài)(guest-statearea)和一組主機(jī)狀態(tài)(host-statearea),兩種狀態(tài)都對應(yīng)著處理器不同組件的值。虛擬機(jī)進(jìn)入操作轉(zhuǎn)換把客戶機(jī)狀態(tài)裝入到處理器的各個寄存器等相關(guān)狀態(tài)中。虛擬機(jī)退出操作轉(zhuǎn)換把處理器各個寄存器狀態(tài)保存到客戶機(jī)狀態(tài),然后將主機(jī)狀態(tài)裝入到處理器中。VT-x技術(shù)允許客戶軟件運行在其所期望的特權(quán)級上??蛻糗浖南拗?,不是來自特權(quán)級,而是來自它運行在虛擬機(jī)擴(kuò)展非根操作模式上。這個本質(zhì)使得基于VT-x技術(shù)的虛擬機(jī)監(jiān)控器可以解決上述提到的傳統(tǒng)軟件虛擬化中遇到的困難。在虛擬機(jī)擴(kuò)展非根操作模式中,處理器操作有個很大的改變。最重要的改變就是很多指令和事件會導(dǎo)致虛擬機(jī)退出操作。一些指令(例如INVD)會無條件的導(dǎo)致虛擬機(jī)退出操作,因此永遠(yuǎn)不能在虛擬機(jī)擴(kuò)展非根操作模式下執(zhí)行。其他指令(例如INVLPG)和所有的事件可以通過配置虛擬機(jī)控制結(jié)構(gòu)中的虛擬機(jī)執(zhí)行控制域來實現(xiàn)有條件的導(dǎo)致虛擬機(jī)退出操作。
發(fā)明內(nèi)容本發(fā)明基于具有虛擬化技術(shù)的處理器,提供了一種與之配套的虛擬機(jī)監(jiān)控軟件,進(jìn)而從軟件、硬件兩個方面構(gòu)建了一個完整的虛擬機(jī)系統(tǒng)。一種基于處理器虛擬化技術(shù)的虛擬機(jī)系統(tǒng),包括具有虛擬化技術(shù)的處理器、除處理器以外的其它底層硬件、運行于虛擬機(jī)擴(kuò)展根操作模式(VMXBoot)的虛擬機(jī)監(jiān)控器(virtualmachinemonitor,簡稱VMM)、運行于非虛擬機(jī)擴(kuò)展根操作模式(VMXNon-Boot)的若干虛擬操作系統(tǒng)(GuestOS),虛擬機(jī)監(jiān)控器一端通過其虛擬硬件平臺接口接入各虛擬操作系統(tǒng),另一端連接除處理器以外的其它底層硬件設(shè)備,各虛擬操作系統(tǒng)直接連接處理器。所述的虛擬機(jī)監(jiān)控器包括設(shè)備虛擬模塊、內(nèi)存虛擬模塊、虛擬硬件平臺接口、中斷描述符表(interruptdescriptortable)、虛擬機(jī)控制結(jié)構(gòu)(virtual-machinecontrolstructure,簡稱VMCS)和全局描述符表,虛擬機(jī)控制結(jié)構(gòu)用于控制內(nèi)存虛擬模塊、設(shè)備虛擬模塊和虛擬硬件平臺接口的運行。系統(tǒng)運行過程中處理器的設(shè)置包括如下步驟在非虛擬機(jī)擴(kuò)展模式下,對虛擬機(jī)監(jiān)控器的中斷描述符表進(jìn)行設(shè)置,為每個虛擬機(jī)監(jiān)控器需要處理的中斷設(shè)置中斷處理函數(shù),并根據(jù)中斷向量號將中斷處理函數(shù)的入口地址保存到中斷描述符表的相應(yīng)位置;進(jìn)入虛擬機(jī)擴(kuò)展模式,進(jìn)行虛擬機(jī)控制結(jié)構(gòu)配置,對每個虛擬機(jī)控制結(jié)構(gòu)配置需要的域,通過該域的索引碼,使用VMWRITE指令寫入相應(yīng)的值;進(jìn)入虛擬機(jī)擴(kuò)展非根操作模式,運行虛擬操作系統(tǒng),第一次進(jìn)入虛擬操作系統(tǒng)運行時進(jìn)行實模式模擬。所述的中斷描述符表用于將每一個中斷向量和一個描述符對應(yīng)起來。所述的全局描述符表用于提供段式存儲機(jī)制,對段的起始地址、界限、屬性進(jìn)行詳細(xì)定義。本發(fā)明還提供了上述虛擬機(jī)系統(tǒng)的實現(xiàn)方法。一種基于處理器虛擬化技術(shù)的虛擬機(jī)系統(tǒng)實現(xiàn)方法,包括以下步驟基于具有虛擬化技術(shù)的處理器,設(shè)置一運行于虛擬機(jī)擴(kuò)展根操作模式的虛擬機(jī)監(jiān)控器,和若干個運行于非虛擬機(jī)擴(kuò)展根操作模式的虛擬操作系統(tǒng),由虛擬機(jī)監(jiān)控器為各虛擬操作系統(tǒng)虛擬出除處理器以外的其它硬件設(shè)備,各虛擬操作系統(tǒng)對其它硬件設(shè)備的操作經(jīng)虛擬機(jī)監(jiān)控器截取,由虛擬機(jī)監(jiān)控器根據(jù)一定的規(guī)則分配給真實硬件完成操作,及,由虛擬機(jī)監(jiān)控器處理各虛擬操作系統(tǒng)運行過程中出現(xiàn)的所有硬件中斷。虛擬機(jī)監(jiān)控器運行于虛擬機(jī)擴(kuò)展根操作模式的特權(quán)級0上,客戶操作系統(tǒng)運行在虛擬機(jī)擴(kuò)展非根操作模式、其所設(shè)計希望運行的特權(quán)級上(一般為特權(quán)級0和3)。得益于VT-x技術(shù)的獨有優(yōu)勢,客戶操作系統(tǒng)無需修改源代碼,其上運行的應(yīng)用程序也不需要修改源代碼??蛻舨僮飨到y(tǒng)所能直接使用的硬件就只有是支持VT-x技術(shù)的處理器,其它硬件設(shè)備都由虛擬機(jī)監(jiān)控器的設(shè)備虛擬模塊虛擬出來,客戶操作系統(tǒng)對其他硬件設(shè)備的操作會被設(shè)備虛擬模塊截取,由設(shè)備虛擬模塊根據(jù)一定的規(guī)則分配給真實硬件來完成相應(yīng)操作。在客戶操作系統(tǒng)運行過程中,若出現(xiàn)異常、外部中斷、某些特權(quán)指令的運行、輸入/輸出端口的訪問、內(nèi)存訪問等就有可能會導(dǎo)致虛擬機(jī)退出操作,從而暫??蛻舨僮飨到y(tǒng)的運行,將控制權(quán)交給虛擬機(jī)監(jiān)控器來對上述特殊情況進(jìn)行合適的處理。虛擬硬件平臺接口提供了虛擬機(jī)監(jiān)控器和其上虛擬的客戶操作系統(tǒng)之間聯(lián)系的渠道,所負(fù)責(zé)的工作包括兩點每次虛擬機(jī)進(jìn)入操作前,為保證客戶操作系統(tǒng)的正常運行進(jìn)行的準(zhǔn)備;每次虛擬機(jī)退出操作后,對導(dǎo)致虛擬機(jī)退出操作的各種原因或者情況進(jìn)行后續(xù)的處理。本發(fā)明虛擬機(jī)系統(tǒng)的運行流程如下開機(jī)時,處理器處于非虛擬機(jī)擴(kuò)展模式,進(jìn)行基本的初始化工作,其中最重要的是對虛擬機(jī)監(jiān)控器的中斷描述符表進(jìn)行設(shè)置;初始化完成后進(jìn)入到虛擬機(jī)擴(kuò)展模式,進(jìn)行整個流程中最關(guān)鍵的虛擬機(jī)控制結(jié)構(gòu)配置;然后可通過虛擬機(jī)進(jìn)入操作進(jìn)入虛擬機(jī)擴(kuò)展非根操作模式,使客戶操作系統(tǒng)運行;其中,第一次進(jìn)入客戶操作系統(tǒng)運行還需要進(jìn)行實模式的模擬;在客戶操作系統(tǒng)運行過程中,如遇到異常、中斷、某些指令的運行或者資源訪問等情況就有可能導(dǎo)致虛擬機(jī)退出操作,虛擬機(jī)監(jiān)控器將對各種情況進(jìn)行相應(yīng)的處理后再返回到客戶操作系統(tǒng)運行;其中,內(nèi)存虛擬和設(shè)備虛擬是對各個情況進(jìn)行處理的重要方法,此外還可能會進(jìn)行某些特權(quán)指令的模擬;最后,如果虛擬機(jī)停止運行,可以關(guān)閉虛擬機(jī)擴(kuò)展模式。下面對整個流程中的幾個關(guān)鍵步驟進(jìn)行詳細(xì)描述。1.中斷設(shè)置a、異常根據(jù)虛擬機(jī)監(jiān)控器中虛擬機(jī)控制結(jié)構(gòu)的配置,和內(nèi)存有關(guān)的異常都會導(dǎo)致虛擬機(jī)退出操作,其他異常則交給客戶操作系統(tǒng)自身的中斷描述符表處理。所以,虛擬機(jī)監(jiān)控器的中斷描述符表中32個異常大部分不用設(shè)置異常處理函數(shù),只有那些對應(yīng)著內(nèi)存有關(guān)的異常需要設(shè)置,并且它們的異常處理函數(shù)都很簡單,就是把該異常向量號發(fā)給內(nèi)存虛擬模塊,讓該模塊完成相應(yīng)的處理。b、外部中斷在客戶操作系統(tǒng)中,只處理兩種外部中斷外部時鐘中斷和外部鍵盤中斷。外部中斷與處理器的關(guān)系是通過可編程中斷控制器8259A建立起來的。在我們的架構(gòu)中,8259A是由虛擬機(jī)監(jiān)控器初始化的??蛻舨僮飨到y(tǒng)根據(jù)虛擬機(jī)控制結(jié)構(gòu)的配置,所有的外部中斷都會導(dǎo)致虛擬機(jī)退出操作,所以虛擬機(jī)監(jiān)控器的中斷描述符表必須為這兩種外部中斷設(shè)置中斷外部函數(shù)。c、軟件中斷客戶操作系統(tǒng)使用INT指令來實現(xiàn)軟件中斷或者系統(tǒng)調(diào)用,該指令不會導(dǎo)致虛擬機(jī)退出操作。所以客戶操作系統(tǒng)軟件中斷的實現(xiàn)與虛擬機(jī)監(jiān)控器無關(guān),當(dāng)然虛擬機(jī)監(jiān)控器也不會進(jìn)行任何的處理。2.虛擬機(jī)控制結(jié)構(gòu)配置在第一次虛擬機(jī)進(jìn)入操作進(jìn)入到客戶操作系統(tǒng)之前,應(yīng)該按照想搭建的、為客戶操作系統(tǒng)運行的虛擬環(huán)境對虛擬機(jī)控制結(jié)構(gòu)進(jìn)行相應(yīng)的配置或者初始化,它們共同組成了一套控制虛擬機(jī)如何運行的規(guī)則。不同的配置會導(dǎo)致截然不同的客戶操作系統(tǒng)運行行為,事實上,基于VT-x技術(shù)開發(fā)的虛擬機(jī)監(jiān)控器具有不同特征的根本原因就在于各自對虛擬機(jī)控制結(jié)構(gòu)的配置不同。虛擬機(jī)監(jiān)控器的設(shè)計基于IntelIA-3232-bit架構(gòu)。如果有多個客戶操作系統(tǒng)共同運行,則每個客戶操作系統(tǒng)對應(yīng)著一個虛擬機(jī)控制結(jié)構(gòu)并受其控制,所以必須為每個虛擬機(jī)控制結(jié)構(gòu)分別初始化。如果處理器為多核,則每個核心運行一份虛擬機(jī)監(jiān)控器代碼拷貝,再根據(jù)每個核心所虛擬的客戶操作系統(tǒng)數(shù)設(shè)置相同數(shù)目的虛擬機(jī)控制結(jié)構(gòu),并保證臨界區(qū)數(shù)據(jù)在同一時刻只能被一個內(nèi)核所修改。a、客戶狀態(tài)域客戶寄存器狀態(tài)該域的值在第一次通過虛擬機(jī)進(jìn)入操作進(jìn)入到客戶操作系統(tǒng)之前需要進(jìn)行初始化,目的就是當(dāng)虛擬機(jī)進(jìn)入操作完成后,創(chuàng)建出一個系統(tǒng)啟動后的初時環(huán)境,以配合客戶操作系統(tǒng)的啟動。所以里面所有值都是根據(jù)IA-32在加電之后的各個初時狀態(tài)配置的。客戶非寄存器狀態(tài)設(shè)置邏輯處理器處在正常的運行執(zhí)行狀態(tài)、沒有事件被阻塞、沒有設(shè)置斷點。處理器的某些狀態(tài)是不對應(yīng)任何寄存器的,但是不同的邏輯處理器的狀態(tài)可能不同,所以同樣需要相應(yīng)的域來保存。在第一次虛擬機(jī)進(jìn)入操作之前也需要初始化。b、宿主狀態(tài)域宿主寄存器狀態(tài)設(shè)置每次虛擬機(jī)退出操作后,通過導(dǎo)入宿主狀態(tài)域值進(jìn)入到相同的處理環(huán)境中來對導(dǎo)致虛擬機(jī)退出操作的各種原因進(jìn)行處理。c、虛擬機(jī)執(zhí)行控制域針形虛擬機(jī)執(zhí)行控制設(shè)置外部的中斷將會導(dǎo)致虛擬機(jī)退出操作。設(shè)置不可屏蔽中斷不會導(dǎo)致虛擬機(jī)退出操作,發(fā)送給客戶操作系統(tǒng)的中斷描述符表處理。基于處理器的虛擬機(jī)運行控制設(shè)置當(dāng)EFLAGS.IF被置為1時,不會導(dǎo)致虛擬機(jī)退出操作。設(shè)置RDPMC指令、HLT指令、MWAIT指令、RDTSC指令、MONITOR指令、PAUSE指令、MOVDR的操作不會導(dǎo)致虛擬機(jī)退出操作。設(shè)置當(dāng)執(zhí)行RDTSC指令時,讀取的數(shù)值會加上一個TSC的偏移值(有符號數(shù),在虛擬機(jī)控制結(jié)構(gòu)其他域中被賦值),通過加上該偏移值,可以校正客戶操作系統(tǒng)被虛擬機(jī)監(jiān)控器剝奪運行所造成的時間差。設(shè)置INVLPG指令會導(dǎo)致虛擬機(jī)退出操作。設(shè)置使用輸入/輸出位圖來控制客戶操作系統(tǒng)對輸入/輸出端口的訪問。設(shè)置使用模塊細(xì)節(jié)寄存器位圖來控制客戶操作系統(tǒng)對模塊細(xì)節(jié)寄存器的訪問。異常位圖當(dāng)中斷發(fā)生時,中斷向量號作為索引讀取位圖中的相應(yīng)位。如果該位為1,則導(dǎo)致虛擬機(jī)退出操作,如果為0,則將該中斷發(fā)給客戶操作系統(tǒng)的中斷描述符表。設(shè)置把所有和內(nèi)存有關(guān)的異常,例如缺頁、段錯誤等通過虛擬機(jī)退出操作交給虛擬機(jī)監(jiān)控器處理,其他異常讓客戶操作系統(tǒng)自己的中斷描述符表處理。輸入輸出位圖地址輸入/輸出位圖的每一位對應(yīng)著從0h到ffffh的輸入/輸出端口,如果相應(yīng)位是1,則對該輸入/輸出端口的讀寫會導(dǎo)致虛擬機(jī)退出操作。設(shè)置成對所有輸入/輸出端口的讀寫都會導(dǎo)致虛擬機(jī)退出操作,再由虛擬機(jī)監(jiān)控器發(fā)送給相應(yīng)的虛擬設(shè)備模塊來完成輸入/輸出操作。CR0客戶/宿主掩碼設(shè)置保護(hù)CR0中的PG位、NE位和PE位不能被客戶操作系統(tǒng)更改。CR0的讀影子寄存器設(shè)置客戶操作系統(tǒng)對CR0中PG位、NE位和PE位的讀取返回1。CR4客戶/宿主掩碼設(shè)置CR4中的VMXE位不能被客戶操作系統(tǒng)更改。CR4的讀影子寄存器設(shè)置客戶操作系統(tǒng)對CR4中VMXE位的讀取返回0,使得客戶操作系統(tǒng)不知道自己處于虛擬機(jī)中。CR3目標(biāo)計數(shù)器設(shè)置MOVtoCR3會導(dǎo)致虛擬機(jī)退出操作。模塊細(xì)節(jié)寄存器位圖地址模塊細(xì)節(jié)寄存器位圖分為4個子位圖,分別對應(yīng)著低地址模塊細(xì)節(jié)寄存器的讀、寫權(quán)限和高地址模塊細(xì)節(jié)寄存器的讀、寫權(quán)限。設(shè)置成對所有模塊細(xì)節(jié)寄存器的讀取都可以正常執(zhí)行,但對所有模塊細(xì)節(jié)寄存器的寫都會導(dǎo)致虛擬機(jī)退出操作。d、虛擬機(jī)退出操作控制域虛擬機(jī)退出操作控制設(shè)置虛擬機(jī)退出操作后,處理器處在32位運行模式下。并且在虛擬機(jī)退出操作時,如果有外部中斷產(chǎn)生,會將該中斷信息保存在虛擬機(jī)退出操作中斷信息域中。虛擬機(jī)退出操作時模塊細(xì)節(jié)寄存器保存計數(shù)器設(shè)置在虛擬機(jī)退出操作時,沒有保存模塊細(xì)節(jié)寄存器的操作。虛擬機(jī)退出操作時模塊細(xì)節(jié)寄存器導(dǎo)入計數(shù)器設(shè)置在虛擬機(jī)退出操作時,沒有導(dǎo)入模塊細(xì)節(jié)寄存器的操作。e、虛擬機(jī)進(jìn)入操作控制域虛擬機(jī)進(jìn)入操作控制設(shè)置虛擬機(jī)進(jìn)入操作后,處理器處在IA-3232位運行模式而不是系統(tǒng)控制模式下,并且系統(tǒng)控制中斷無效。虛擬機(jī)進(jìn)入操作時模塊細(xì)節(jié)寄存器導(dǎo)入計數(shù)器設(shè)置在虛擬機(jī)進(jìn)入操作時,沒有導(dǎo)入模塊細(xì)節(jié)寄存器的操作。3.虛擬機(jī)退出操作后虛擬機(jī)監(jiān)控器的處理每次虛擬機(jī)退出操作之后,虛擬機(jī)監(jiān)控器都進(jìn)入到一個相同的出口環(huán)境中執(zhí)行后續(xù)代碼,因此,要將這個出口環(huán)境的各個狀態(tài)保存到虛擬機(jī)控制結(jié)構(gòu)中的宿主狀態(tài)域中。每次虛擬機(jī)退出操作結(jié)束進(jìn)入到的出口環(huán)境后,其代碼的最主要功能是,根據(jù)虛擬機(jī)退出操作信息域中的信息進(jìn)行處理,可能是模擬某條指令,可能是進(jìn)行內(nèi)存操作,也可能會將某中斷發(fā)回給客戶操作系統(tǒng),然后通過虛擬機(jī)進(jìn)入操作繼續(xù)客戶操作系統(tǒng)的運行。在虛擬機(jī)退出操作之后,首先讀取退出原因域以確定導(dǎo)致虛擬機(jī)退出操作的原因。根據(jù)不同原因進(jìn)行下步工作,對于有些原因,更詳細(xì)的信息保存在退出條件域中。導(dǎo)致虛擬機(jī)退出操作的各種情況在虛擬機(jī)控制結(jié)構(gòu)中進(jìn)行了具體配置。虛擬機(jī)擴(kuò)展指令的運行包括VMCALL、VMCLEAR、VMLAUNCH、VMPTRLD、VMPTRST、VMREAD、VMRESUME、VMWRITE、VMXOFF、VMXON,所有的這些虛擬機(jī)擴(kuò)展指令都會無條件的導(dǎo)致虛擬機(jī)退出操作。虛擬機(jī)監(jiān)控器將該指令在客戶操作系統(tǒng)中跳過不執(zhí)行,處理步驟如下讀取虛擬機(jī)退出操作指令長度域值;修改客戶狀態(tài)域中的EIP,加上虛擬機(jī)退出指令長度域值,這樣就相當(dāng)于使得客戶操作系統(tǒng)跳過該條指令的執(zhí)行。處理器ID指令的運行處理器ID指令的運行會無條件的導(dǎo)致虛擬機(jī)退出操作。虛擬機(jī)監(jiān)控器在虛擬機(jī)擴(kuò)展根操作模式下模擬該指令的執(zhí)行,處理步驟如下讀取客戶狀態(tài)中的EAX;執(zhí)行處理器ID指令;將執(zhí)行結(jié)果寫入到客戶狀態(tài)域中的EAX,EBX,ECX,EDX中去。INVD指令的運行INVD指令的運行會無條件的導(dǎo)致虛擬機(jī)退出操作。虛擬機(jī)監(jiān)控器不允許客戶操作系統(tǒng)具有清空高速緩存的能力,所以虛擬機(jī)監(jiān)控器處理與對虛擬機(jī)擴(kuò)展指令的處理方式相同。MOVfromCR3指令的運行MOVfromCR3指令的運行會無條件的導(dǎo)致虛擬機(jī)退出操作??蛻舨僮飨到y(tǒng)對頁表信息讀取的操作,虛擬機(jī)監(jiān)控器發(fā)送給內(nèi)存虛擬模塊處理。輸入/輸出指令的運行根據(jù)虛擬機(jī)控制結(jié)構(gòu)中輸入/輸出位圖的設(shè)置,對所有輸入/輸出端口的讀寫都會導(dǎo)致虛擬機(jī)退出操作。虛擬機(jī)監(jiān)控器讀取退出條件域獲取端口號,通過對端口號的查詢,確定客戶操作系統(tǒng)是對哪個虛擬設(shè)備進(jìn)行操作,然后發(fā)送給相應(yīng)的虛擬設(shè)備模塊來完成操作,最后將運行結(jié)果返回給客戶操作系統(tǒng)。INLVPG指令的運行虛擬機(jī)監(jiān)控器不允許客戶操作系統(tǒng)直接具有清空TLB的能力。所有和內(nèi)存有關(guān)的操作都交給內(nèi)存虛擬模塊處理,所以該指令的請求也將發(fā)給該模塊處理。WRMSR指令的運行根據(jù)虛擬機(jī)控制結(jié)構(gòu)中模塊細(xì)節(jié)寄存器位圖的設(shè)置,對所有模塊細(xì)節(jié)寄存器的寫操作都會導(dǎo)致虛擬機(jī)退出操作。處于系統(tǒng)安全考慮,虛擬機(jī)監(jiān)控器不允許客戶操作系統(tǒng)更改任何模塊細(xì)節(jié)寄存器。虛擬機(jī)監(jiān)控器會使WRMSR指令無效,處理方式與對虛擬機(jī)擴(kuò)展指令的處理相同。外部中斷根據(jù)虛擬機(jī)控制結(jié)構(gòu)配置,所有的外部中斷都會導(dǎo)致虛擬機(jī)退出操作。虛擬機(jī)監(jiān)控器判斷中斷向量號并做出兩種處理方式直接發(fā)回給客戶操作系統(tǒng)處理,例如鍵盤中斷,具體步驟是,將虛擬機(jī)退出操作中斷信息域中的信息拷貝到虛擬機(jī)進(jìn)入操作中斷信息域中,然后通過“注入”發(fā)送虛擬中斷給客戶操作系統(tǒng);第二種處理方式是,虛擬機(jī)監(jiān)控器先自身進(jìn)行處理,例如時鐘中斷,再發(fā)回給客戶操作系統(tǒng)。異常根據(jù)虛擬機(jī)控制結(jié)構(gòu)中異常位圖的設(shè)置,所有和內(nèi)存有關(guān)的異常都會導(dǎo)致虛擬機(jī)退出操作。虛擬機(jī)監(jiān)控器將這些異常都發(fā)送給內(nèi)存虛擬模塊處理。其中,對于缺頁異常,在退出條件域中保存著導(dǎo)致缺頁的線性地址。對控制寄存器的存取通過讀取退出條件域的信息,可以分為三種情況MOVtoCR0指令的運行;MOVtoCR3指令的運行;MOVtoCR4指令的運行。分別處理如下a、MOVtoCR0指令的運行根據(jù)虛擬機(jī)控制結(jié)構(gòu)的配置,只有試圖對CR0中的PG位、PE位和NE位進(jìn)行清除操作才會導(dǎo)致虛擬機(jī)退出操作。但是虛擬機(jī)擴(kuò)展操作必須要求上述3個位的值為1,所以客戶操作系統(tǒng)的上述操作虛擬機(jī)監(jiān)控器無法完成,會導(dǎo)致異常。b、MOVtoCR3指令的運行根據(jù)虛擬機(jī)控制結(jié)構(gòu)的配置,MOVtoCR3指令總是導(dǎo)致虛擬機(jī)退出操作。對客戶操作系統(tǒng)切換頁表的操作,虛擬機(jī)監(jiān)控器發(fā)送給內(nèi)存虛擬模塊處理。c、MOVtoCR4指令的運行根據(jù)虛擬機(jī)控制結(jié)構(gòu)的配置,只有試圖對CR4中的VMXE位進(jìn)行置位操作才會導(dǎo)致虛擬機(jī)退出操作。實際上CR4該位實際值為1,不過客戶操作系統(tǒng)讀取的是影子CR4的值,顯示為0。這樣的目的是使得客戶操作系統(tǒng)不知道自己運行在虛擬機(jī)上。不過現(xiàn)在客戶操作系統(tǒng)顯式的將該位置為1,所以虛擬機(jī)監(jiān)控器需要改變影子CR4的域值成2000h。4.內(nèi)存虛擬虛擬機(jī)監(jiān)控器必須為各個虛擬機(jī)合理的分配和隔離各自的物理內(nèi)存,同時實現(xiàn)客戶操作系統(tǒng)所使用的物理地址和實際硬件物理地址之間的映射關(guān)系。內(nèi)存虛擬模塊的設(shè)計基于以下兩個原則虛擬機(jī)監(jiān)控器掌握對物理內(nèi)存的控制;支持客戶操作系統(tǒng)內(nèi)存地址轉(zhuǎn)換的功能。為了使虛擬機(jī)監(jiān)控器對物理內(nèi)存的完全控制,虛擬機(jī)監(jiān)控器就必須掌握處理器的地址轉(zhuǎn)換機(jī)制。所以,只有虛擬機(jī)監(jiān)控器可以存取CR3(保存著頁目錄表的基地址)和執(zhí)行INVLPG(唯一可以直接操作TLB的指令)。同時,客戶操作系統(tǒng)自身也希望可以實現(xiàn)對內(nèi)存地址轉(zhuǎn)換的控制,它也會存取CR3,也會執(zhí)行INVLPG。虛擬機(jī)監(jiān)控器必須允許并且支持這些操作??蛻舨僮飨到y(tǒng)頁表結(jié)構(gòu)的功能就是“欺騙”客戶操作系統(tǒng),使其認(rèn)為掌握了對內(nèi)存地址轉(zhuǎn)換的控制。事實上,客戶操作系統(tǒng)頁表結(jié)構(gòu)并不直接或者間接的控制內(nèi)存地址轉(zhuǎn)換。內(nèi)存地址轉(zhuǎn)換被處理器的TLB和虛擬機(jī)監(jiān)控器頁表結(jié)構(gòu)所控制(TLB中的映射關(guān)系是從虛擬機(jī)監(jiān)控器頁表結(jié)構(gòu)中導(dǎo)入的)。我們允許客戶操作系統(tǒng)自由修改其自身的頁表結(jié)構(gòu)而不用導(dǎo)致虛擬機(jī)退出操作,所以可能會導(dǎo)致客戶操作系統(tǒng)的頁表層次與虛擬機(jī)監(jiān)控器的頁表層次不一致。這種不一致分為兩種情況,各自處理方式如下a、客戶操作系統(tǒng)頁表層次中比虛擬機(jī)監(jiān)控器頁表層次中有效信息多例如,有個線性地址到物理地址的內(nèi)存轉(zhuǎn)換關(guān)系在客戶操作系統(tǒng)頁表結(jié)構(gòu)中存在,但在虛擬機(jī)監(jiān)控器頁表結(jié)構(gòu)中不存在。這會導(dǎo)致缺頁異常,虛擬機(jī)監(jiān)控器會更新其頁表結(jié)構(gòu)加入這個映射關(guān)系。b、客戶操作系統(tǒng)頁表層次中比虛擬機(jī)監(jiān)控器頁表層次中有效信息少這種情況只會發(fā)生在客戶操作系統(tǒng)將其頁表結(jié)構(gòu)中某映射關(guān)系刪除(例如,標(biāo)記某頁不存在)??蛻舨僮飨到y(tǒng)在將某映射關(guān)系刪除后,如果其程序設(shè)計正確,勢必會執(zhí)行INVLPG指令使得在TLB中的該映射關(guān)系失效。在虛擬機(jī)監(jiān)控器設(shè)計中,指令I(lǐng)NVLPG的執(zhí)行會導(dǎo)致虛擬機(jī)退出操作,虛擬機(jī)監(jiān)控器就可以取得控制來完成其頁表結(jié)構(gòu)的相應(yīng)更新。此外,當(dāng)處理器訪問TLB時,也會更新虛擬機(jī)監(jiān)控器頁表結(jié)構(gòu)中的訪問位和臟位。為了保持虛擬機(jī)監(jiān)控器頁表結(jié)構(gòu)和客戶操作系統(tǒng)頁表結(jié)構(gòu)的一致性,虛擬機(jī)監(jiān)控器必須也更新客戶操作系統(tǒng)頁表結(jié)構(gòu)相應(yīng)頁目錄表項或者頁表項的相應(yīng)位。有4種情況是要交給內(nèi)存虛擬模塊處理的,具體的處理方式如下MOVtoCR3對CR3進(jìn)行寫操作隱含著TLB的刷新和頁表的轉(zhuǎn)換,處理步驟如下更新客戶狀態(tài)域中的CR3;虛擬機(jī)監(jiān)控器分配一個新的空頁目錄表;更新處理器CR3指向新目錄表。MOVfromCR3VT技術(shù)規(guī)定該指令一定會導(dǎo)致虛擬機(jī)退出操作,但是虛擬機(jī)監(jiān)控器又要支持客戶操作系統(tǒng)對自身頁表的存取,所以虛擬機(jī)監(jiān)控器在虛擬機(jī)擴(kuò)展根操作模式下模擬該指令的運行將客戶狀態(tài)域中的CR3值拷貝到目的寄存器或者內(nèi)存地址中。INVLPG指令的執(zhí)行標(biāo)記虛擬機(jī)監(jiān)控器頁表結(jié)構(gòu)中頁目錄表項和頁表項的相應(yīng)項為不存在。缺頁異常如果缺頁異常是因為客戶操作系統(tǒng)頁表層次與虛擬機(jī)監(jiān)控器頁表層次不一致引起的,則通過更新虛擬機(jī)監(jiān)控器頁表層次并重新執(zhí)行導(dǎo)致異常的指令;如果客戶操作系統(tǒng)頁表層次與虛擬機(jī)監(jiān)控器頁表層次已經(jīng)一致,則交給客戶操作系統(tǒng)處理該異常。5.設(shè)備虛擬設(shè)備虛擬模塊為每個客戶操作系統(tǒng)提供了一個抽象的PC硬件平臺。每個客戶操作系統(tǒng)看到的PC平臺包括鍵盤,鼠標(biāo),實時時鐘,8259可編程中斷控制器,8254可編程計時器,CMOS,IDE磁盤,軟盤,光驅(qū)和顯示設(shè)備。為了減少設(shè)計的復(fù)雜度,虛擬機(jī)監(jiān)控器重利用了QEMU(一個開源的虛擬機(jī)項目)的設(shè)備模擬模塊。為每個客戶操作系統(tǒng)運行一個“設(shè)備模塊系列”來模擬上述設(shè)備的實例。設(shè)備虛擬模塊的主要功能就是等待客戶操作系統(tǒng)的輸入/輸出事件,然后將其分派到相應(yīng)的設(shè)備模擬模塊去處理。當(dāng)完成了輸入/輸出請求之后,向客戶操作系統(tǒng)返回結(jié)果。通過之前對虛擬機(jī)控制結(jié)構(gòu)中輸入/輸出位圖的設(shè)置,客戶操作系統(tǒng)對所有輸入/輸出端口的存取都會導(dǎo)致虛擬機(jī)退出操作。在每次虛擬機(jī)退出操作時,在退出條件域中都會收集一些關(guān)于退出條件的信息,例如端口號,存取大小,方向,是否為串,有無REP前綴等,虛擬機(jī)監(jiān)控器將這些信息打包成一個輸入/輸出請求包并發(fā)給相應(yīng)的設(shè)備模擬模塊。對客戶操作系統(tǒng)的一個輸入/輸出請求的處理過程如下輸入/輸出存取導(dǎo)致虛擬機(jī)退出操作;通過讀取退出原因域和退出條件域來對指令解碼;創(chuàng)建一個描述該事件的輸入/輸出請求包;將請求包發(fā)給相應(yīng)的設(shè)備模擬模塊處理;等待來自設(shè)備模擬模塊相關(guān)輸入/輸出端口的回復(fù)或者內(nèi)存映射輸入/輸出操作;通過虛擬機(jī)進(jìn)入操作使得客戶操作系統(tǒng)繼續(xù)運行。大多數(shù)設(shè)備需要通過內(nèi)存映射輸入/輸出來存取設(shè)備寄存器。關(guān)鍵的中斷控制器,例如輸入/輸出高級可編程中斷控制器,也需要內(nèi)存映射輸入/輸出存取。我們截取這些內(nèi)存映射輸入/輸出存取作為缺頁操作。當(dāng)每次因為缺頁導(dǎo)致虛擬機(jī)退出操作時,進(jìn)行如下操作檢查PTE來確定所缺的頁是否屬于內(nèi)存映射輸入/輸出的范圍;如果是,對該指令解碼,并發(fā)送輸入/輸出請求包給相應(yīng)的設(shè)備模擬模塊;如果不是,則將該缺頁異常事件將給內(nèi)存虛擬模塊處理。本發(fā)明采用硬件虛擬化技術(shù),比軟件虛擬化技術(shù)具有先天性的優(yōu)勢;無需改變客戶操作系統(tǒng)的源代碼;虛擬機(jī)監(jiān)控器較好的實現(xiàn)了上層模塊和底層硬件的隔離性和安全性,且結(jié)構(gòu)簡單,復(fù)雜度低;考慮到虛擬機(jī)監(jiān)控器在多核和64位模式上的擴(kuò)展;VT-x技術(shù)為提高處理器的虛擬化性能提供了硬件上的支持?;赩T-x技術(shù)設(shè)計的虛擬機(jī)監(jiān)控器必須能夠很好的使用這些硬件支持。在整個過程中,我們通過3個方法來盡可能的減少虛擬機(jī)退出操作的次數(shù),使得整個虛擬機(jī)保持較高的效率。1、對控制寄存器讀操作的管理有研究表明,通過對操作系統(tǒng)運行的模擬發(fā)現(xiàn),在操作系統(tǒng)運行過程中,對控制寄存器特別是CR0會進(jìn)行非常頻繁的讀操作。在我們的架構(gòu)中,對CR0和CR4的讀操作不會導(dǎo)致虛擬機(jī)退出操作,并且,我們通過CR0讀影子寄存器和CR4讀影子寄存器返回我們期望客戶操作系統(tǒng)讀到的值。2、對控制寄存器寫操作的管理需要對CR0和CR4的某些位進(jìn)行保護(hù),某些位則允許客戶操作系統(tǒng)自由修改。通過CR0宿主/客戶掩碼和CR4宿主/客戶掩碼實現(xiàn)這個目的。這樣,絕大部分對控制寄存器的寫操作不會導(dǎo)致虛擬機(jī)退出操作,只有對那些被保護(hù)的位進(jìn)行非保護(hù)值的更改才會導(dǎo)致虛擬機(jī)退出操作。事實上,這種情況很少發(fā)生。3、內(nèi)存管理在內(nèi)存虛擬模塊中,我們強(qiáng)調(diào)要支持客戶操作系統(tǒng)內(nèi)存地址轉(zhuǎn)換的功能。我們允許客戶操作系統(tǒng)自由修改其自身的頁表結(jié)構(gòu),客戶操作系統(tǒng)對內(nèi)存的大部分操作都不會導(dǎo)致虛擬機(jī)退出操作,只有那些會造成客戶操作系統(tǒng)的頁表層次與虛擬機(jī)監(jiān)控器的頁表層次不一致的操作才會導(dǎo)致虛擬機(jī)退出操作。圖1為本發(fā)明的總體架構(gòu)示意框圖;圖2為本發(fā)明的運行流程圖;圖3為本發(fā)明的內(nèi)存虛擬的流程圖;圖4為虛擬機(jī)監(jiān)控器同時虛擬化運行Linux和Vxworks的狀態(tài)示意圖;圖5為半虛擬化與硬件虛擬化的性能對比示意圖表。具體實施例方式如圖1所示,一種基于處理器虛擬化技術(shù)的虛擬機(jī)系統(tǒng),包括具有虛擬化技術(shù)的處理器、除處理器以外的其它底層硬件、運行于虛擬機(jī)擴(kuò)展根操作模式的虛擬機(jī)監(jiān)控器、運行于非虛擬機(jī)擴(kuò)展根操作模式的若干虛擬操作系統(tǒng),虛擬機(jī)監(jiān)控器一端通過其虛擬硬件平臺接口接入各虛擬操作系統(tǒng),另一端連接除處理器以外的其它底層硬件設(shè)備,各虛擬操作系統(tǒng)直接連接處理器。虛擬機(jī)監(jiān)控器包括設(shè)備虛擬模塊、內(nèi)存虛擬模塊、虛擬硬件平臺接口、中斷描述符表、虛擬機(jī)控制結(jié)構(gòu)和全局描述符表,虛擬機(jī)控制結(jié)構(gòu)用于控制內(nèi)存虛擬模塊、設(shè)備虛擬模塊和虛擬硬件平臺接口的運行。中斷描述符表用于將每一個中斷向量和一個描述符對應(yīng)起來。全局描述符表用于提供段式存儲機(jī)制,對段的起始地址、界限、屬性進(jìn)行詳細(xì)定義。系統(tǒng)的運行過程如圖2所示,剛開機(jī)時,處理器處于非虛擬機(jī)擴(kuò)展模式,進(jìn)行基本的初始化工作,其中最重要的是對虛擬機(jī)監(jiān)控器的中斷描述符表進(jìn)行設(shè)置,初始化完成后進(jìn)入到虛擬機(jī)擴(kuò)展模式,進(jìn)行整個流程中最關(guān)鍵的虛擬機(jī)控制結(jié)構(gòu)配置,然后可通過虛擬機(jī)進(jìn)入操作進(jìn)入虛擬機(jī)擴(kuò)展非根操作模式,使客戶操作系統(tǒng)運行。其中,第一次進(jìn)入客戶操作系統(tǒng)運行還需要進(jìn)行實模式的模擬。在客戶操作系統(tǒng)運行過程中,如遇到異常、中斷、某些指令的運行或者資源訪問等情況就有可能導(dǎo)致虛擬機(jī)退出操作,虛擬機(jī)監(jiān)控器將對各種情況進(jìn)行相應(yīng)的處理后再返回到客戶操作系統(tǒng)運行。其中,內(nèi)存虛擬和設(shè)備虛擬是對各個情況進(jìn)行處理的重要方法,此外還可能會進(jìn)行某些特權(quán)指令的模擬。最后,如果虛擬機(jī)停止運行,可以關(guān)閉虛擬機(jī)擴(kuò)展模式。如圖3所示,雖然頁表結(jié)構(gòu)定義了線性地址到物理地址的轉(zhuǎn)換,它并不直接控制內(nèi)存訪問的地址轉(zhuǎn)換。地址轉(zhuǎn)換實際上是被TLB控制的,處理器會把頁表結(jié)構(gòu)中的地址轉(zhuǎn)換填充到TLB中??蛻舨僮飨到y(tǒng)頁表結(jié)構(gòu)的功能就是“欺騙”客戶操作系統(tǒng),使其認(rèn)為掌握了對內(nèi)存地址轉(zhuǎn)換的控制。事實上,客戶操作系統(tǒng)頁表結(jié)構(gòu)并不直接或者間接的控制內(nèi)存地址轉(zhuǎn)換。內(nèi)存地址轉(zhuǎn)換被處理器的TLB和虛擬機(jī)監(jiān)控器頁表結(jié)構(gòu)所控制(TLB中的映射關(guān)系是從虛擬機(jī)監(jiān)控器頁表結(jié)構(gòu)中導(dǎo)入的)。如圖4所示,我們開發(fā)了虛擬機(jī)監(jiān)控器并在之上實現(xiàn)了對Linux和Vxworks的同時虛擬。圖中左側(cè)是Linux的運行界面,右側(cè)是Vxworks的運行界面。這個虛擬方案兼顧了通用性、實時性和安全性。通用的應(yīng)用軟件運行在Linux上,實時任務(wù)、有較好可靠性要求的任務(wù)運行在Vxworks上,同時虛擬機(jī)監(jiān)控器保證了兩個操作系統(tǒng)很好的隔離。性能方面,與當(dāng)前性能較好的軟件虛擬化方案Xen進(jìn)行對比。我們使用同一硬件平臺,通過分別在虛擬機(jī)監(jiān)控器上、在Xen上、直接在硬件平臺上三種方式運行同一版本的Linux,然后使用相同的測試數(shù)據(jù),測試結(jié)果如圖-5所示,可以發(fā)現(xiàn),雖然某幾項測試得分比Xen低,但虛擬機(jī)監(jiān)控器的總體性能比Xen提高了約10%,這也體現(xiàn)了硬件虛擬化固有的優(yōu)勢,符合我們當(dāng)初的設(shè)計目標(biāo)。權(quán)利要求1.一種基于處理器虛擬化技術(shù)的虛擬機(jī)系統(tǒng),其特征在于包括具有虛擬化技術(shù)的處理器、除處理器以外的其它底層硬件、運行于虛擬機(jī)擴(kuò)展根操作模式的虛擬機(jī)監(jiān)控器、運行于虛擬機(jī)擴(kuò)展非根操作模式的若干虛擬操作系統(tǒng),虛擬機(jī)監(jiān)控器一端通過其虛擬硬件平臺接口接入各虛擬操作系統(tǒng),另一端連接除處理器以外的其它底層硬件設(shè)備,各虛擬操作系統(tǒng)直接連接處理器。2.如權(quán)利要求1所述的虛擬機(jī)系統(tǒng),其特征在于所述的虛擬機(jī)監(jiān)控器包括設(shè)備虛擬模塊、內(nèi)存虛擬模塊、虛擬硬件平臺接口、中斷描述符表、虛擬機(jī)控制結(jié)構(gòu)和全局描述符表,虛擬機(jī)控制結(jié)構(gòu)用于控制內(nèi)存虛擬模塊、設(shè)備虛擬模塊和虛擬硬件平臺接口的運行。3.如權(quán)利要求1所述的虛擬機(jī)系統(tǒng),其特征在于系統(tǒng)運行過程中處理器的設(shè)置包括如下步驟在非虛擬機(jī)擴(kuò)展模式下,對虛擬機(jī)監(jiān)控器的中斷描述符表進(jìn)行設(shè)置,為每個虛擬機(jī)監(jiān)控器需要處理的中斷設(shè)置中斷處理函數(shù),并根據(jù)中斷向量號將中斷處理函數(shù)的入口地址保存到中斷描述符表的相應(yīng)位置;進(jìn)入虛擬機(jī)擴(kuò)展模式,進(jìn)行虛擬機(jī)控制結(jié)構(gòu)配置,對每個虛擬機(jī)控制結(jié)構(gòu)配置需要的域,通過該域的索引碼,使用VMWRITE指令寫入相應(yīng)的值;進(jìn)入虛擬機(jī)擴(kuò)展非根操作模式,運行虛擬操作系統(tǒng),第一次進(jìn)入虛擬操作系統(tǒng)運行時進(jìn)行實模式模擬。4.如權(quán)利要求1所述的虛擬機(jī)系統(tǒng),其特征在于所述的中斷描述符表用于將每一個中斷向量和一個描述符對應(yīng)起來。5.如權(quán)利要求1所述的虛擬機(jī)系統(tǒng),其特征在于所述的全局描述符表用于提供段式存儲機(jī)制,對段的起始地址、界限、屬性進(jìn)行詳細(xì)定義。6.一種基于處理器虛擬化技術(shù)的虛擬機(jī)系統(tǒng)實現(xiàn)方法,其特征在于包括以下步驟基于具有虛擬化技術(shù)的處理器,設(shè)置一運行于虛擬機(jī)擴(kuò)展根操作模式的虛擬機(jī)監(jiān)控器,和若干個運行于非虛擬機(jī)擴(kuò)展根操作模式的虛擬操作系統(tǒng),由虛擬機(jī)監(jiān)控器為各虛擬操作系統(tǒng)虛擬出除處理器以外的其它硬件設(shè)備,各虛擬操作系統(tǒng)對其它硬件設(shè)備的操作經(jīng)虛擬機(jī)監(jiān)控器截取,由虛擬機(jī)監(jiān)控器根據(jù)一定的規(guī)則分配給真實硬件完成操作,及,由虛擬機(jī)監(jiān)控器處理各虛擬操作系統(tǒng)運行過程中出現(xiàn)的所有硬件中斷。全文摘要本發(fā)明公開了一種基于處理器虛擬化技術(shù)的虛擬機(jī)系統(tǒng),包括具有虛擬化技術(shù)的處理器、除處理器以外的其它底層硬件、運行于虛擬機(jī)擴(kuò)展根操作模式的虛擬機(jī)監(jiān)控器、運行于非虛擬機(jī)擴(kuò)展根操作模式的若干虛擬操作系統(tǒng),虛擬機(jī)監(jiān)控器一端通過其虛擬硬件平臺接口接入各虛擬操作系統(tǒng),另一端連接除處理器以外的其它底層硬件設(shè)備,各虛擬操作系統(tǒng)直接連接處理器。本發(fā)明采用硬件虛擬化技術(shù),比軟件虛擬化技術(shù)具有先天性的優(yōu)勢;無需改變客戶操作系統(tǒng)的源代碼;虛擬機(jī)監(jiān)控器較好的實現(xiàn)了上層模塊和底層硬件的隔離性和安全性,且結(jié)構(gòu)簡單,復(fù)雜度低。文檔編號G06F9/455GK101093449SQ20071006965公開日2007年12月26日申請日期2007年6月22日優(yōu)先權(quán)日2007年6月22日發(fā)明者陳文智申請人:浙江大學(xué)