專利名稱:根據(jù)客戶軟件的特許級(jí)支持向虛擬機(jī)監(jiān)視器轉(zhuǎn)移的制作方法
根據(jù)客戶軟件的特許級(jí)支持向虛擬機(jī)監(jiān)視器轉(zhuǎn)移
本申請(qǐng)是申請(qǐng)人于2005年6月28日提交的,申請(qǐng)?zhí)枮?00510082092. 3 的,發(fā)明名稱為"根據(jù)客戶軟件的特許級(jí)支持向虛擬機(jī)監(jiān)視器轉(zhuǎn)移"的發(fā)明專 利申請(qǐng)的分案申請(qǐng)。
背景技術(shù):
本發(fā)明諸實(shí)施例涉及虛擬機(jī),更具體地說,本發(fā)明諸實(shí)施例涉及虛擬機(jī) (VM)中運(yùn)行的客戶軟件的特許級(jí)符合特許級(jí)退出判據(jù)時(shí),讓虛擬機(jī)監(jiān)視器 (VMM)奪回對(duì)處理器的控制。
普通VMM可在計(jì)算機(jī)上運(yùn)行,向其它軟件呈現(xiàn)一個(gè)或多臺(tái)虛擬機(jī)的概況。 每臺(tái)VM都可當(dāng)作一個(gè)獨(dú)立的平臺(tái),運(yùn)行其自己的操作系統(tǒng)(OS)諸如"客戶 操作系統(tǒng)"和應(yīng)用程序,這統(tǒng)稱為"客戶軟件"。比如說,客戶軟件準(zhǔn)備在VM 里或VM上運(yùn)行??蛻糗浖谕裨趯S糜?jì)算機(jī)上而不是在VM上運(yùn)行那樣的操 作,即客戶軟件希望控制各種計(jì)算機(jī)操作,并在操作時(shí)訪問硬件資源。硬件資 源包括控制寄存器等處理器固有的資源和諸如描述符表格等留駐在存儲(chǔ)器里 的資源。但在虛擬機(jī)環(huán)境內(nèi)V腿應(yīng)能最終控制這些資源,使VM正常操作并加 以保護(hù)。為此,V顧通常攔截和仲裁客戶軟件對(duì)硬件資源的所有訪問。
大多數(shù)指令組體系結(jié)構(gòu)(ISA)規(guī)定了把較少特許的應(yīng)用程序與更富特許 的操作系統(tǒng)功能相隔離的多種特許級(jí),例如一種原有技術(shù)的32位結(jié)構(gòu)有四種 特許級(jí),稱為環(huán)0 環(huán)3,環(huán)0最具特許,環(huán)3最少特許。處理器在不同特許 級(jí)之間提供受控的切換法。直接明白的切換可調(diào)用專用指令,暗示的切換可提 出異?;蚬收?,或運(yùn)用中斷等外部事件,例如在執(zhí)行調(diào)用(CALL)、軟件中斷 (INT)或中斷返回(IRET)等指令時(shí),可能出現(xiàn)特許級(jí)變化。由于其它的同 步或異步事件,例如像異常、外部中斷、故障、任務(wù)切換、陷阱和其它類似事 件,也會(huì)發(fā)生特許級(jí)變化。
多處理器或多線程系統(tǒng)的操作系統(tǒng),用軟件構(gòu)成的保證相互排斥的鎖保護(hù) 可能被一個(gè)以上多線程或處理器同時(shí)訪問的數(shù)據(jù)。通常在短時(shí)間持有鎖的情況 下,可用所謂的旋轉(zhuǎn)鎖。當(dāng)在一臺(tái)處理器或一線程上操作的軟件試圖獲取已被
5在另一臺(tái)處理器或一線程上操作的軟件取得的鎖時(shí),該軟件就設(shè)法重新獲取緊 密代碼循環(huán)(tight code lo叩)的該鎖。雖在該緊密循環(huán)中運(yùn)行,但軟件并不執(zhí)行 任何有用的工作,硬件處理器線程并無益處。在多線程處理器或多個(gè)處理器系 統(tǒng)上, 一個(gè)線程或處理器的運(yùn)行會(huì)取走其它線程或處理器的資源,諸如耗用帶 寬、執(zhí)行單元或功率。因此,自旋周期要盡可能短。
虛擬多處理器或多線程系統(tǒng)的VMM可在獨(dú)立的VM或虛擬處理器(VP) 中執(zhí)行運(yùn)行于每種客戶軟件的軟件。在非VM系統(tǒng)上,這些客戶軟件例子應(yīng)在 截然不同的處理器或多線程上執(zhí)行。VP與所有客戶軟件例子都統(tǒng)稱為虛擬系 統(tǒng)。在不考慮這種客戶鎖定特性時(shí),這種VMM會(huì)明顯劣化,因此VMM不得 搶占VP。而該VP保持鎖定,除非要為該虛擬系統(tǒng)搶占所有的VP。當(dāng)用軟件 編制鎖時(shí),因鎖定原函數(shù)不能被硬件直接檢測(cè),可以應(yīng)用直觀推斷法或間接觀 察法。
-種這樣的直觀推斷法基于公共OS特性。在OS不以特許模式操作或處 于低功率狀態(tài)時(shí),該OS可能保持不鎖定。VMM可以利用這一認(rèn)知,只搶占正 在非特許模式或處于低功率態(tài)的虛擬處理器。搶占以特許模式操作的客戶軟 件,被推遲到客戶軟件切換到非特許模式之后。
附圖簡(jiǎn)介
圖1示出可在其上實(shí)施本發(fā)明一個(gè)實(shí)施例的處理系統(tǒng)一實(shí)施例的框圖。 圖2在流程圖中示出本發(fā)明一實(shí)施例的特許級(jí)退出控制的過程,各獨(dú)立控
制用于增減特許級(jí)。
圖3在流程圖中示出本發(fā)明一實(shí)施例的特許級(jí)退出控制過程,組合的控制
用于增減特許級(jí)。
圖4在流程圖中示出本發(fā)明一實(shí)施例檢測(cè)特許級(jí)變化的過程。
圖5在流程圖中示出本發(fā)明一實(shí)施例的異步事件處理過程。
圖6在流程圖中示出根據(jù)客戶軟件在虛擬機(jī)環(huán)境中的特許級(jí)從客戶軟件轉(zhuǎn)
至lj虛擬機(jī)監(jiān)視器的過程的 一 實(shí)施例。
圖7在流程圖中示出根據(jù)客戶軟件在虛擬機(jī)環(huán)境中的特許級(jí)從客戶軟件轉(zhuǎn)
到虛擬機(jī)監(jiān)視器過程的一實(shí)施例。
圖8在流程圖中示出在虛擬機(jī)環(huán)境中實(shí)行搶占調(diào)度過程的一實(shí)施例。詳細(xì)描述
提出一種讓虛擬機(jī)監(jiān)視器(VMM)在虛擬機(jī)(VM)上運(yùn)行的客戶軟件的特
許級(jí)符合一定特許級(jí)退級(jí)判據(jù)時(shí)保證控制某系統(tǒng)的系統(tǒng)與方法。處理器檢出客
戶軟件的特許級(jí)符合該判據(jù),于是將控制轉(zhuǎn)向VMM。特許級(jí)退出判據(jù)包括特 許級(jí)增大、特許級(jí)減小、特許級(jí)任何變化、匹配預(yù)定等級(jí)的特許級(jí)、大于預(yù)定 等級(jí)的特許級(jí)、小于預(yù)定等級(jí)的特許級(jí)或特許級(jí)的特定轉(zhuǎn)換。VMM可以拒絕 承擔(dān)對(duì)某些特許級(jí)值或值變化的控制。在VM中執(zhí)行任何指令之前或之后,都 可以轉(zhuǎn)向VMM。
本發(fā)明諸實(shí)施例還涉及執(zhí)行這些操作的設(shè)備,該設(shè)備可以為所需目的而得 到,或包括由存貯在計(jì)算機(jī)里的計(jì)算機(jī)程序選擇性激活或重組的通用計(jì)算機(jī)。 這種計(jì)算機(jī)程序可以存入計(jì)算機(jī)可讀存儲(chǔ)媒體,諸如但不限于任一類型的盤片 (包括軟盤、光盤、CD-ROM與磁光盤)、只讀存儲(chǔ)器(ROM)、隨機(jī)存取存 儲(chǔ)器(RAM)、可擦可編程只讀存儲(chǔ)器(EPRPM)、電可擦可編程只讀存儲(chǔ) 器(EEPROM)、磁卡或光卡,或任一種適合存貯電子指令的媒體,每一種都 耦接計(jì)算機(jī)系統(tǒng)總線。指令可用一個(gè)或多個(gè)處理設(shè)備(如中央處理單元等)執(zhí) 行。在其它實(shí)施例中,本發(fā)明諸步驟可用包含可重配或硬線連接的步驟執(zhí)行邏 輯電路的專用硬件元件或者任意組合的編程計(jì)算機(jī)元件與定制硬件元件來執(zhí) 行。
另外,設(shè)計(jì)要經(jīng)歷從創(chuàng)造、模擬到制造的各個(gè)階段。代表設(shè)計(jì)的數(shù)據(jù)可以 若干方式表示該設(shè)計(jì)。首先在模擬當(dāng)中,適宜用硬件描述語言或另一種功能描 述語言表示硬件。另在某些設(shè)計(jì)過程階段,可以形成帶邏輯門和/或晶體管門電 路的電路級(jí)模型。再者,在某一階段,大多數(shù)設(shè)計(jì)達(dá)到數(shù)據(jù)代表各種設(shè)備在硬 件模型中物理位置的程度。在應(yīng)用常規(guī)半導(dǎo)體制造技術(shù)的情況下,代表硬件模 型的數(shù)據(jù)可以是規(guī)定各種特征是否存在在用來生產(chǎn)集成電路的掩模不同的掩 蔽層上。在任一設(shè)計(jì)表示法中,數(shù)據(jù)可以任一機(jī)器可讀媒體形式存儲(chǔ)。為發(fā)送 此類信息的調(diào)制或生成的光波或電波、存儲(chǔ)器或者盤片等磁或光存儲(chǔ)器,可以 是機(jī)器可讀媒體,這類媒體都可"攜帶"或"指示"設(shè)計(jì)成軟件信息。當(dāng)發(fā)送
了指示或攜帶代碼或設(shè)計(jì)的電氣載波而對(duì)該電信號(hào)執(zhí)行復(fù)制、緩沖或再傳輸 時(shí),新的拷貝就制成了。這樣,通信提供商或網(wǎng)絡(luò)提供商就可復(fù)制實(shí)施本發(fā)明 技術(shù)的物件(載波)。
圖1示出可在其中運(yùn)用本發(fā)明的虛擬機(jī)環(huán)璋100的一實(shí)施例。圖1的VM環(huán)境和包括硬件、軟件或二者組合的處理邏輯電路,都可實(shí)現(xiàn)本發(fā)明諸不同的
實(shí)施例。本例的裸平臺(tái)硬件116包括能例如操作標(biāo)準(zhǔn)操作系統(tǒng)(OS)或VMM 112
的計(jì)算平臺(tái)。
VMM 112雖然一般以軟件構(gòu)成,但可向更高級(jí)軟件送出裸機(jī)接口。此種 更高級(jí)軟件包括標(biāo)準(zhǔn)或?qū)崟r(shí)的OS,雖然本發(fā)明在這方面不限于該范圍。另外, 例如VMM可在另一 VMM內(nèi)或頂部運(yùn)行。VMM及其一般特征與功能已為本 領(lǐng)域技術(shù)人員熟悉,如可用軟件、固件或各種技術(shù)的組合來實(shí)現(xiàn)。
平臺(tái)硬件116可以是個(gè)人計(jì)算機(jī)(PC)、主機(jī)、手持設(shè)備、便攜計(jì)算機(jī)、 機(jī)頂盒或任一其它計(jì)算系統(tǒng)。平臺(tái)硬件116包括處理器118、存儲(chǔ)器120與特 許級(jí)監(jiān)視邏輯電路124。
處理器118可以是任一種能執(zhí)行軟件的處理器,諸如微處理器、數(shù)字信號(hào) 處理器、微控制器等。處理器118包括執(zhí)行本發(fā)明方法實(shí)施例的微代碼、可重 編邏輯、可編程邏輯或硬代碼邏輯。雖然圖1只示出--臺(tái)這種處理器118,但 系統(tǒng)內(nèi)可以有一臺(tái)或多臺(tái)處理器。
存儲(chǔ)器120可以是硬盤、軟盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器X ROM)、閃爍存儲(chǔ)器、以上器件的任意組合或者其它任一種處理器118可讀的 機(jī)器媒體。存儲(chǔ)器120可存貯執(zhí)行本發(fā)明諸方法實(shí)施例的指令和/或數(shù)據(jù)。
VMM112向其它軟件(如"客戶"軟件)提供一臺(tái)或多臺(tái)虛擬機(jī)(VM) 的概要,而虛擬機(jī)向各種客戶提供同樣或不同的概要。系統(tǒng)內(nèi)有一臺(tái)或多臺(tái) VM,如圖1示出兩臺(tái)VM,即102和114。在每臺(tái)VM上運(yùn)行的客戶軟件包括 諸如104或106等客戶OS和各種客戶軟件應(yīng)用程序108與110。在VM 102 和114內(nèi)運(yùn)行的客戶軟件希望在客戶軟件在其上正在運(yùn)行的VM 102和114內(nèi) 訪問物理資源(如處理器寄存器存儲(chǔ)器和I/O設(shè)備),并處理各種事件,包括 系統(tǒng)設(shè)備、異常等產(chǎn)生的中斷。在虛擬機(jī)環(huán)境中,為保持VM 102和114的正 常操作和起到保護(hù)作用,VMM112應(yīng)能最終控制物理資源,為此在必要時(shí)可攔 截客戶軟件對(duì)計(jì)算機(jī)物理資源的訪問。
被客戶軟件訪問的資源分為"特許"或"非特許"。對(duì)特許的資源,VMM 112可接通客戶軟件所需的功能,同時(shí)保持對(duì)這些特許資源的最終控制權(quán)。非 特許資源不必受VMM 112控制,可被客戶軟件訪問。
另外,各客戶OS 104和106都想處理各種故障事件,諸如異常(如頁面 故障、 一般保護(hù)故障、陷阱、失靈等)、中斷(如硬軟件中斷)和平臺(tái)事件(如初始化(INIT)與系統(tǒng)管理中斷(SMI)。其中有些故障事件是"特許的", 因?yàn)橐WCVM102與114之間的正常操作與保護(hù),這些事件必須由VMM112 處理。
在出現(xiàn)特許的故障事件或客戶軟件試圖訪問特許資源時(shí),可將控制轉(zhuǎn)到 VMM112。這里把控制從客戶軟件轉(zhuǎn)到VMM112稱為VM退出。在VM退出 后接收控制之后,VMM112可作各種處理,之后再把控制還給客戶軟件。這里 把控制從VMM轉(zhuǎn)給客戶軟件稱為VM進(jìn)入。
為調(diào)用特許的OS功能,應(yīng)用程序使用了專用指令,諸如INT或SYENTER 調(diào)用操作前,通常把系統(tǒng)調(diào)用標(biāo)識(shí)符小參數(shù)裝入處理器的寄存器。攔截系統(tǒng)調(diào) 用規(guī)定多種應(yīng)用場(chǎng)景,例如通過跟蹤系統(tǒng)調(diào)用,侵入檢測(cè)系統(tǒng)可找出安全破壞 的原因。另一個(gè)有用場(chǎng)景是根據(jù)臨時(shí)的系統(tǒng)調(diào)用啟用模式檢測(cè)執(zhí)行周期,導(dǎo)出 預(yù)定的定期實(shí)時(shí)任務(wù)模式。
在一實(shí)施例中,處理器118按存儲(chǔ)在VM控制結(jié)構(gòu)(VMCS) 122里的數(shù) 據(jù)控制VM102和114的操作。在一實(shí)施例中,VMCS122被存入存儲(chǔ)器120。 在另一實(shí)施例中,VMCS122被存入處理器118。在有些實(shí)施例中,用多個(gè)VMCS 結(jié)構(gòu)支持多個(gè)VM。
VMCS122是一種含有客戶軟件狀態(tài),VMM112狀態(tài)、執(zhí)行控制信息和其 它信息的結(jié)構(gòu),其中執(zhí)行控制信息指示VMM112是如何希望限制或控制客戶軟 件操作的。VM中對(duì)客戶軟件的轉(zhuǎn)移與客戶軟件的操作,用一組存貯在VMCS 里的VM控制點(diǎn)控制。執(zhí)行控制點(diǎn)規(guī)定了必須按其將控制從客戶軟件轉(zhuǎn)到VMM 的情況。退出控制點(diǎn)控制客戶狀態(tài)的保留和VMM狀態(tài)在VM退出時(shí)的加載。 在一組VM退出信息數(shù)據(jù)段內(nèi)設(shè)置了描述最近VM退出的信息。VM退出時(shí), 對(duì)VMCS122保留處理器狀態(tài)中被客戶軟件用過的部分,并從VMCS122加載 VMM112所要求的處理器狀態(tài)部分。進(jìn)入控制點(diǎn)控制VMM狀態(tài)的保留,并在 VM進(jìn)入時(shí)加載客戶狀態(tài)。在VM進(jìn)入時(shí),利用存貯在VMCS122里的數(shù)據(jù)恢 復(fù)客戶狀態(tài),并將控制還給客戶軟件。
在一實(shí)施例中,處理器118包括特許級(jí)監(jiān)視邏輯(PLML) 124,負(fù)責(zé)評(píng)估 客戶的當(dāng)前特許級(jí),以根據(jù)VMM112規(guī)定的特許級(jí)退出判據(jù)判斷是否產(chǎn)生VM 退出。在一實(shí)施例中,該特許級(jí)退出判據(jù)存儲(chǔ)在VMCS122中。下面描述所述 特許級(jí)退出判據(jù)的特定實(shí)施例。若PLML124斷定當(dāng)前客戶特許級(jí)符合特許級(jí) 退出判據(jù),處理邏輯就促使VM從客戶軟件退到VMM112。在各種ISA中,對(duì)特許級(jí)可指定一數(shù)值,較高數(shù)值表明增高的特許,較低 數(shù)值表明減低的特許。在其它實(shí)施例中,較高數(shù)值可以指示減低的特許。在本 文討論中,特許級(jí)"增高"表示客戶軟件正變得更富特許,"減低"表示正變 得更少特許,與涉及的數(shù)值無關(guān)。同樣地,"小于"另一特許級(jí)的特許級(jí)是減 低了特許的特許級(jí),與涉及的數(shù)值無關(guān)。
諸控制點(diǎn)被加到表示特許級(jí)退出判據(jù)的VM控制點(diǎn)。在一實(shí)施例中,特許 級(jí)增高退出控制若置成使能值,表示在客戶軟件操作期間增高特許級(jí)時(shí),將產(chǎn)
生VM退出。這一控制判斷增高特許級(jí)的事件的傳送或指令執(zhí)行是否造成VM 退出。在一實(shí)施例中,在完成了使特許級(jí)變化的指令執(zhí)行之后(即撤退后), 便發(fā)生特許級(jí)增高而造成的VM退出。在一實(shí)施例中,作為VM退出信息一部 分而向VMM報(bào)告的客戶指令指針值,可以指向準(zhǔn)備以新的特許級(jí)執(zhí)行的第一 指令。在一實(shí)施例中,不明確規(guī)定報(bào)告造成特許級(jí)變化的指令地址。
在另一實(shí)施例中,特許級(jí)減低退出控制若置成使能值,就表明在客戶軟件 操作期間減低特許級(jí)時(shí),應(yīng)產(chǎn)生VM退出。該控制判斷減低特許級(jí)的事件或指 令是否造成VM退出。在一實(shí)施例中,在造成特許級(jí)變化的指令執(zhí)行后(即撤 退后),因特許級(jí)減低而發(fā)生VM退出。作為VM退出信息一部分而報(bào)告給 VMM的客戶指令指針值,可以指向準(zhǔn)備以新的特許級(jí)執(zhí)行的第一指令。在一 實(shí)施例中,不明確規(guī)定報(bào)告造成特許級(jí)變化的指令的地址。
圖2的流程圖示出了支持特許級(jí)增高與減低控制點(diǎn)的方法的一實(shí)施例。圖 2示出按客戶特許級(jí)變換對(duì)特許級(jí)增減退出控制點(diǎn)所作的試驗(yàn)。圖2中,特許 級(jí)變化造成的VM退出比其它VM退出源更優(yōu)先,這是為了簡(jiǎn)化圖示,但實(shí)際 上,有些VM退出源的優(yōu)先權(quán)可以更高,而有些則更低。在圖2的實(shí)施例中, 雖然示出了特許級(jí)增減兩個(gè)控制點(diǎn),但在不同的實(shí)施例中,這些控制點(diǎn)可被獨(dú) 立支持或結(jié)合其它特許級(jí)退出控制點(diǎn)被支持。
圖2中,在收到來自VMM112的VM進(jìn)入請(qǐng)求時(shí)(框210),過程即開始 (框205)。對(duì)VM進(jìn)入作檢查,諸如裝載系統(tǒng)狀態(tài)等(框215)。執(zhí)行客戶指令 (框220)。若執(zhí)行指令使VM退出(框225),則VM退出使控制轉(zhuǎn)到VMM 112, 并向其報(bào)告VM退出的原因(框230),結(jié)束該過程(框235)。若在執(zhí)行指 令時(shí)不發(fā)生VM退出(框225),則撤退客戶指令(框240)。在評(píng)估了客戶 軟件的當(dāng)前特許級(jí)后,若客戶軟件的特許級(jí)被判定為增高了 (框245),而且 特許級(jí)增高(PLI)控制被使能(框250),則VM退出使控制轉(zhuǎn)到VMM112,
10并向后者報(bào)告VM退出是由PLI引起的(框230)。若客戶軟件的特許級(jí)被判 定為增高了 (框245),且特許級(jí)增高(PLI)控制不被使能(框250),則處 理邏輯執(zhí)行下一客戶指令(框220)。
若客戶軟件的特許級(jí)未被定為增高(框245),則處理邏輯檢查特許級(jí)減 低(PLD)。評(píng)估了客戶軟件的當(dāng)前特許級(jí)后,若客戶軟件的特許級(jí)被判定為 減低了(框245),且PLD控制被使能(框250),則VM退出使控制轉(zhuǎn)到VMM112, 并向其報(bào)告VM退出由PLD造成(框230)。若客戶軟件的特許級(jí)未被定為減 低(框255)或PLD控制不被使能(框260),就執(zhí)行下一客戶指令(框220)。
特許級(jí)退出判據(jù)可被使能與禁止,以便作選擇性退出,這尤其有利于多處 理器調(diào)用,因?yàn)橥ǔV皇桥紶栆筇卦S級(jí)變化造成的VM退出。另外,例如 VMM可能只對(duì)從OS核心轉(zhuǎn)到VM中用戶級(jí)代碼起作用。
在另一實(shí)施例中,上述特許級(jí)增減執(zhí)行控制點(diǎn)提供的功能可以組合成單一 的特許級(jí)變化退出控制,規(guī)定任何特許級(jí)變化都會(huì)造成VM退出,如圖3所示。 圖3中,過程在從VMM112收到VM進(jìn)入請(qǐng)求時(shí)(框310)開始(框305)。 作VM進(jìn)入檢查,諸如裝載系統(tǒng)狀態(tài)等(框315)。執(zhí)行客戶指令(框320)。 若執(zhí)行指令使VM退出(框325),則VM退出使控制轉(zhuǎn)到VMMU2,并向其 報(bào)告VM退出的原因(框330),結(jié)束處理(框335)。若在執(zhí)行指令時(shí)不發(fā) 生VM退出(框325),則撤退客戶指令(框340)。評(píng)估了客戶軟件的當(dāng)前 特許級(jí)后,若斷定客戶軟件的特許級(jí)變了 (框345),且特許級(jí)變化(PLC) 退出控制被使能(框350),則VM退出使控制轉(zhuǎn)到VMM112,并向其報(bào)告 VM退出由PLC造成(框330)。若PLC條件不被滿足(框345)或PLC退出 控制未使能(框350),則執(zhí)行下一客戶指令(框320)。
圖4在流程圖中示出本發(fā)明一實(shí)施例檢測(cè)特許級(jí)變化的一種方法。圖中, 通過將代表老特許級(jí)(OPL)的一變量置于當(dāng)前特許級(jí)(CPL)而使之初始化 (框410),過程便開始(框405)。處理或執(zhí)行單一指令或某一異步事件諸 如中斷(框415)。在指令執(zhí)行或事件處理后(框415),若特許級(jí)與指令或 事件處理前不同(框420),則特許級(jí)變了,采取某一動(dòng)作(框425),如圖2 和3所示。否則,執(zhí)行下一指令或過程事件(框415)。
注意,在圖2和3中,在執(zhí)行指令后但撤退指令前,作出評(píng)估,判斷是否 出現(xiàn)VM退出。實(shí)際上,這一評(píng)估作為試圖執(zhí)行指令的一部分,例如訪問一控 制寄存器(如CR0)會(huì)使VM退出有錯(cuò)誤語義學(xué)。換言之,在任一結(jié)構(gòu)態(tài)被指
11令修改前都會(huì)出現(xiàn)VM退出。其它VM退出可在修改了某種結(jié)構(gòu)態(tài)之后但在撤
退指令(諸如使任務(wù)切換接著使VM退出的指令)之前發(fā)生。有些VM退出可 在撤退了指令之后發(fā)生。特許級(jí)評(píng)估可以是一種這種條件在撤退后被評(píng)估的特 許級(jí)評(píng)估。其它VM退出可因其它原因在其它情況下發(fā)生。
圖5的流程圖示出識(shí)別兩種異步事件的方法,諸如執(zhí)行特許級(jí)變化指令和 中斷在執(zhí)行客戶軟件時(shí)到來等異步事件。圖5中,過程在從VMM112收到VM 進(jìn)入請(qǐng)求(框510)時(shí)開始(框505)。作VM進(jìn)入檢查,如裝載系統(tǒng)狀態(tài)等 (框515)。若異步事件已定(框520),就執(zhí)行客戶指令(框525)。若執(zhí)行 指令(框525)使VM退出(框530),則VM退出使控制轉(zhuǎn)到VMM112,并 向其報(bào)告VM退出的原因(框535),結(jié)束處理(框540)。若執(zhí)行指令不使 VM退出(框530),則撤退客戶指令(框545)。若特許級(jí)增高(PLI)條件 被滿足(框550)且PLI控制被使能(框555),則VM退出使控制轉(zhuǎn)到VMM112, 并向其報(bào)告VM退出由PLI造成(框535)。若PLI條件未滿足(框550)或 PLI控制未被使能(框555),則處理邏輯檢查特許級(jí)減低(PLD)。若PLD 條件滿足(框560)且PLD控制被使能(框565),則VM退出使控制轉(zhuǎn)到 VMM112,并且其報(bào)告VM退出由PLD造成(框535)。若PLD條件不滿足 (框560)或PLD控制未被使能(框565),則處理邏輯檢查異步事件在該點(diǎn) 是否懸而未決(框520)。若異常事件懸而未決(框520)且該事件造成VM 退出(框570),則VM退出使控制轉(zhuǎn)到VMM112,并向其報(bào)告VM退出由該 事件造成(框535)。若異步事件懸而未決(框520)且未造成VM退出(框 570),則把該事件引入客戶軟件(框575),再作上述的特許級(jí)檢査。
在另一實(shí)施例中, 一執(zhí)行控制指示特許級(jí)目標(biāo)值,該值在VMM控制下存 入VMCS, VMM可將該值定為任一有效特許級(jí)。在另一實(shí)施例中,該特許級(jí) 目標(biāo)值有一固定值。有些實(shí)施例可提供一個(gè)以上這樣的特許級(jí)目標(biāo)值,如有一 實(shí)施例有兩個(gè)不同的特許級(jí)目標(biāo)值,各自固定為專用值。
在一實(shí)施例中,特許級(jí)目標(biāo)值直到使能才起作用。特許級(jí)目標(biāo)值控制的使 能方法是把VMCS中一匹配的特許級(jí)目標(biāo)使能控制定為使能值,諸如l。該控 制表明在執(zhí)行客戶軟件時(shí),若客戶軟件特許級(jí)與該特許級(jí)目標(biāo)值匹配,就產(chǎn)生 VM退出。執(zhí)行控制可以有多個(gè)特許級(jí)目標(biāo)值和多個(gè)匹配目標(biāo)特許使能控制點(diǎn), 各自對(duì)應(yīng)于一個(gè)特許級(jí)目標(biāo)值控制點(diǎn)。
在一實(shí)施例中,在執(zhí)行準(zhǔn)備以匹配的特許級(jí)執(zhí)行的第一指令前,可能發(fā)生因當(dāng)前特許級(jí)與特許級(jí)目標(biāo)值匹配而造成VM退出。在一實(shí)施例中,可能被作
為VM退出信息一部分報(bào)告給VMM的客戶給VMM的客戶指令指針值,指向 準(zhǔn)備以匹配特許級(jí)執(zhí)行的第一指令。在一實(shí)施例中,不明確規(guī)定報(bào)告使特許級(jí) 改為匹配值的指令的地址。
圖6是一流程實(shí)施例的流程圖,可根據(jù)虛擬機(jī)環(huán)境中客戶軟件的特許級(jí)從 客戶軟件轉(zhuǎn)到VMM。在圖示例中,根據(jù)客戶軟件的特許級(jí)和特許級(jí)目標(biāo)值控 制(PLTVC)的值,發(fā)生VM退出。圖6中,在從VMM112接收VM進(jìn)入請(qǐng) 求時(shí)(框620),過程開始(框610)。作VM進(jìn)入檢査,諸如裝載系統(tǒng)狀態(tài) 等(框630)。若PLTVC不被使能(框640),就執(zhí)行客戶指令(框650)。 評(píng)估了客戶軟件的當(dāng)前特許級(jí)(CPL)后,若PLTVC被使能(框640),而且 CPL等于特許級(jí)目標(biāo)值(PLTV)(框660),則VM退出使控制轉(zhuǎn)到VMM112 (框670),結(jié)束處理(框680)。若CPL不等于PLTV (框660),就執(zhí)行客 戶指令(框650)。
在另 一 實(shí)施例中,特許級(jí)目標(biāo)值控制用特許級(jí)頂值(ceiling value)控制擴(kuò)展。 若將該控制定為使能值(如定為1),就表示在執(zhí)行客戶軟件時(shí),若客戶軟件 的特許級(jí)大于該特許級(jí)目標(biāo)值,就發(fā)生VM退出。在一實(shí)施例中,執(zhí)行控制有 多個(gè)特許級(jí)目標(biāo)值和相應(yīng)的特許級(jí)頂值控制點(diǎn)。在另一實(shí)施例中,若把特許級(jí) 目標(biāo)值定為最高特許級(jí),就不會(huì)轉(zhuǎn)到更富特許的狀態(tài),因此不用使能控制就能 有效地禁止該控制。
在又一實(shí)施例中,特許級(jí)目標(biāo)執(zhí)行控制用特許級(jí)底值(floor value)控制擴(kuò) 展,表明在執(zhí)行客戶軟件時(shí),若客戶軟件的特許級(jí)小于特許級(jí)目標(biāo)值,將產(chǎn)生 VM退出。在一實(shí)施例中,執(zhí)行控制有多個(gè)特許級(jí)目標(biāo)值和相應(yīng)的特許級(jí)底值 控制點(diǎn)。在另一實(shí)施例中,若把特許級(jí)目標(biāo)值定為最低特許級(jí),就不會(huì)轉(zhuǎn)到較 少特許的狀態(tài),因而不用使能控制也可有效地禁止該控制。
圖7是一過程實(shí)施例的流程圖,可根據(jù)客戶軟件在虛擬機(jī)環(huán)境中的特許級(jí) 從客戶軟件轉(zhuǎn)到VMM。在圖示例中,當(dāng)當(dāng)前特許級(jí)大于PLTV時(shí),根據(jù)客戶 軟件的特許級(jí)和特許級(jí)頂值控制(PLCVC)的值發(fā)生VM退出。圖7中,當(dāng)從 VMM112收到VM進(jìn)入請(qǐng)求時(shí)(框720),過程開始(框710)。作VM進(jìn)入 檢査,諸如裝載系統(tǒng)狀態(tài)等(框730)。若PLCVC不被使能(框740),就執(zhí) 行客戶指令(框750)。評(píng)估了客戶軟件的CPL后,若PLCVC被使能(框740), 而且CPL超出PLTV (框760),則VM退出使控制轉(zhuǎn)到VMM112 (框770),結(jié)束處理(框780)。若CPL不超出PLTV (框760),就執(zhí)行客戶指令(框 750)。
實(shí)際上要用一個(gè)監(jiān)視計(jì)時(shí)器,因在運(yùn)行多驅(qū)動(dòng)器線程的延長(zhǎng)時(shí)段內(nèi),操作 系統(tǒng)有時(shí)保持在核心模式中。圖8是一過程實(shí)施例的流程圖,在虛擬機(jī)環(huán)境中 執(zhí)行搶先調(diào)度。圖8中,當(dāng)處理邏輯判斷當(dāng)前VM(CVM)是否要求搶先時(shí)(框 810),過程就開始(框805)。處理邏輯判斷CVM是否為虛擬系統(tǒng)的組成部 分(框815)。若CVM不處于特許模式(PM)(框820),則CVM被搶先(框 825),結(jié)束處理(框830)。若CVM處于PM (框820),則建立監(jiān)視設(shè)計(jì)時(shí) 器(WDT)(框835)。于是在CVM不處于特許模式時(shí)(框840),適當(dāng)設(shè) 置特許級(jí)退出控制(PLEC),讓VM退出。接著,處理邏輯把控制轉(zhuǎn)到CVM
(框845) 。 VMM12在VM從CVM退出后接受控制(框850)。若VM退出 由WDT造成(框855),則CVM被搶先(框825),結(jié)束處理框(830)。 若VM退出不是WDT造成(框855),則處理VM退出(框860),處理邏輯 判斷CVM是否處于PM (框865)。若CVM不處于PM (框865),則CVM 被搶先(框825),結(jié)束處理(框830)。若CVM處于PM(框865),貝ij PLEC 置位(框840),控制轉(zhuǎn)到CVM (框845) , WDT和PLEC保持有效。
在另一實(shí)施例中,設(shè)置了控制點(diǎn),在特許級(jí)之間的特定轉(zhuǎn)換時(shí),諸如從第 一級(jí)轉(zhuǎn)到第四級(jí)和從第三級(jí)轉(zhuǎn)到第二級(jí)等,引起VM退出。例如在有4個(gè)特許 級(jí)的ISA中,可設(shè)置12個(gè)控制點(diǎn)讓VMM在12種可能的源與目的地特許級(jí)組 合中選擇任意一種,使VM退出。在一實(shí)施例中,設(shè)置的控制點(diǎn)少于特許級(jí)組 合的全叉積(full cross product)??刂泣c(diǎn)在這里稱為特許級(jí)源目的地退出控制點(diǎn)
(PLSDEC)。
在一實(shí)施例中,對(duì)引起特許級(jí)轉(zhuǎn)換的所有事件和指令都設(shè)置了執(zhí)行控制 點(diǎn),使VMM112對(duì)所有此類特許級(jí)變化恢復(fù)控制。這一替代法要求在VMM112 中附加的支持,以判斷特定的指令執(zhí)行是否真的造成特許級(jí)變化。如在一個(gè)ISA 中,中斷返回指令(IRET)可能引起特許級(jí)變化,但并不一定這樣。若執(zhí)行IRET 指令無條件地造成VM退出而不管執(zhí)行該指令是否會(huì)改變特許級(jí),則VMM要 模擬該指令或用另一步驟判斷是否引起特許級(jí)變化。對(duì)VMM軟件還有其它要 求,諸如模擬該IRET,判斷故障的指令是否造成期望的特許級(jí)變化。
引起特許級(jí)變化的某些操作或事件,會(huì)因其它原因而造成VM退出。這類 其它VM退出原因可能是優(yōu)先級(jí)較高,或在執(zhí)行這種指令后在評(píng)估特許級(jí)退出判據(jù)前先被評(píng)估了。此時(shí),VMM可能判斷造成VM退出的事件或指令還將引 起特許級(jí)變化,例如虛擬結(jié)構(gòu)可讓VMM對(duì)軟件(SW)中斷指令的執(zhí)行設(shè)置造 成VM退出的執(zhí)行控制。以用戶級(jí)代碼執(zhí)行SW中斷指令,會(huì)引起特許級(jí)變化。 配置執(zhí)行控制點(diǎn),以在特許級(jí)變化被置成使VM退出的同時(shí)執(zhí)行SW中斷指令 時(shí),使VM退出。出現(xiàn)這種情況時(shí),在執(zhí)行SW中斷指令期間首先評(píng)估SW中 斷造成的VM退出,使VM在特許級(jí)變化前退出。此時(shí),SW中斷退出條件實(shí) 際上有問題,在完成指令執(zhí)行前被評(píng)估,而特許級(jí)變化實(shí)際上是陷阱,在完成 指令后評(píng)估。在一實(shí)施例中,多個(gè)VM退出源其實(shí)都是陷阱,多個(gè)VM退出源 都有問題。特許級(jí)退出判據(jù)的評(píng)估可以比任何或全部其它VM退出源具有更高 或更低的優(yōu)先級(jí)。
以上描述為了說明起見,提出了眾多特定的細(xì)節(jié),以便透徹理解本發(fā)明。 但本領(lǐng)域的技術(shù)人員將會(huì)明白,沒有這些特性的細(xì)節(jié)也可實(shí)施本發(fā)明。
權(quán)利要求
1.一種方法,包括確定初始特許級(jí);評(píng)估在虛擬機(jī)中執(zhí)行的客戶軟件的當(dāng)前特許級(jí);以及如果當(dāng)前特許級(jí)符合特許級(jí)退出判據(jù),則把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器,其中判斷當(dāng)前特許級(jí)是否符合特許級(jí)退出判據(jù)包括如果啟動(dòng)了特許級(jí)改變時(shí)退出的控制策略,并且當(dāng)前特許級(jí)不同于初始特許級(jí),則把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
2. 如權(quán)利要求l所述的方法,還包括 在虛擬機(jī)控制結(jié)構(gòu)中存儲(chǔ)所述特許級(jí)退出判據(jù)。
3. 如權(quán)利要求l所述的方法,還包括 確定初始特許級(jí);以及如果啟動(dòng)了特許級(jí)增高時(shí)退出的控制策略,并且當(dāng)前特許級(jí)高于初始特許級(jí), 則把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
4. 如權(quán)利要求l所述的方法,還包括 確定初始特許級(jí);以及如果啟動(dòng)了特許級(jí)減低時(shí)退出的控制策略,并且當(dāng)前特許級(jí)低于初始特許級(jí), 則把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
5. 如權(quán)利要求l所述的方法,還包括 確定初始特許級(jí);以及如果啟動(dòng)了與所述初始特許級(jí)到所述當(dāng)前特許級(jí)的轉(zhuǎn)換相關(guān)聯(lián)的特許級(jí)源目 的退出控制策略,則把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
6. 如權(quán)利要求l所述的方法,還包括存儲(chǔ)目標(biāo)特許級(jí)。
7. 如權(quán)利要求6所述的方法,還包括如果啟動(dòng)了特許級(jí)匹配時(shí)退出的控制策略,且當(dāng)前特許級(jí)與目標(biāo)特許級(jí)相 同,則把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
8. 如權(quán)利要求6所述的方法,還包括如果啟動(dòng)了特許級(jí)達(dá)上限時(shí)退出的控制策略,且當(dāng)前特許級(jí)比目標(biāo)特許級(jí) 高,則把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
9. 如權(quán)利要求6所述的方法,還包括如果啟動(dòng)了特許級(jí)達(dá)下限時(shí)退出的控制策略,且當(dāng)前特許級(jí)比目標(biāo)特許級(jí) 低,則把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
10. 如權(quán)利要求6所述的方法,其特征在于,所述目標(biāo)特許級(jí)可變。
11. 如權(quán)利要求6所述的方法,其特征在于,所述目標(biāo)特許級(jí)固定。
12. 如權(quán)利要求l所述的方法,還包括在執(zhí)行客戶軟件中的指令之前將控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
13. 如權(quán)利要求l所述的方法,還包括 在執(zhí)行客戶軟件中的指令之后將控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
14. 一種處理器,其特征在于包括第一邏輯組件,用于評(píng)估在虛擬機(jī)中執(zhí)行的客戶軟件的當(dāng)前特許級(jí),并且 若當(dāng)前特許級(jí)符合特許級(jí)退出判據(jù),則把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器,其中如果啟 動(dòng)了特許級(jí)改變時(shí)退出的控制策略,并且當(dāng)前特許級(jí)不同于初始特許級(jí),則所述 第 一 邏輯組件把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
15. 如權(quán)利要求14所述的處理器,其中所述第一邏輯組件確定初始特許級(jí), 并且如果啟動(dòng)了特許級(jí)增高時(shí)退出的控制策略,并且當(dāng)前特許級(jí)高于初始特許級(jí), 則所述第一邏輯組件把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
16. 如權(quán)利要求14所述的處理器,其中所述第一邏輯組件確定初始特許級(jí), 并且如果啟動(dòng)了特許級(jí)減低時(shí)退出的控制策略,并且當(dāng)前特許級(jí)低于初始特許級(jí), 則所述第一邏輯組件把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
17. 如權(quán)利要求14所述的處理器,其中所述第一邏輯組件確定初始特許級(jí),并且如果啟動(dòng)了與所述初始特許級(jí)到所述當(dāng)前特許級(jí)的轉(zhuǎn)換相關(guān)聯(lián)的特許級(jí)源目 的退出控制策略,則所述第一邏輯組件把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
18. 如權(quán)利要求14所述的處理器,其中所述第一邏輯組件存儲(chǔ)目標(biāo)特許級(jí), 并且如果啟動(dòng)了特許級(jí)匹配時(shí)退出的控制策略,且當(dāng)前特許級(jí)與目標(biāo)特許級(jí)相 同,則所述第一邏輯組件把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
19. 如權(quán)利要求14所述的處理器,其中所述第一邏輯組件存儲(chǔ)目標(biāo)特許級(jí), 并且如果啟動(dòng)了特許級(jí)達(dá)上限時(shí)退出的控制策略,且當(dāng)前特許級(jí)比目標(biāo)特許級(jí) 高,則所述第一邏輯組件把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
20. 如權(quán)利要求14所述的處理器,其中所述第一邏輯組件存儲(chǔ)目標(biāo)特許級(jí), 并且如果啟動(dòng)了特許級(jí)達(dá)下限時(shí)退出的控制策略,且當(dāng)前特許級(jí)比目標(biāo)特許級(jí) 低,則所述第一邏輯組件把控制轉(zhuǎn)到虛擬機(jī)監(jiān)視器。
全文摘要
一種在客戶軟件當(dāng)前特許級(jí)符合特許級(jí)退出判據(jù)時(shí)讓虛擬機(jī)監(jiān)視器承擔(dān)系統(tǒng)控制的系統(tǒng)與方法。處理器檢測(cè)當(dāng)前特許級(jí)符合該判據(jù)。然后把控制從客戶軟件轉(zhuǎn)到虛擬機(jī)監(jiān)視器,而后者可對(duì)某些特許級(jí)變化或值拒絕承擔(dān)控制。
文檔編號(hào)G06F9/455GK101493785SQ20091012814
公開日2009年7月29日 申請(qǐng)日期2005年6月28日 優(yōu)先權(quán)日2004年6月28日
發(fā)明者A·安德森, E·科塔-羅布爾斯, G·奈格, R·烏利希, S·舍恩貝格, S·貝內(nèi)特, V·烏利希 申請(qǐng)人:英特爾公司