專利名稱:在運(yùn)行中的操作系統(tǒng)下啟動系統(tǒng)管理程序的制作方法
在運(yùn)行中的操作系統(tǒng)下啟動系統(tǒng)管理程序
背景
操作系統(tǒng)的一個(gè)主要功能是與計(jì)算系統(tǒng)上的物理資源進(jìn)行接口。典型的操 作系統(tǒng)可以針對以不恰當(dāng)?shù)姆绞皆L問物理資源進(jìn)行保護(hù)。例如,在應(yīng)用程序使 用特定存儲器段時(shí),操作系統(tǒng)可以保護(hù)該段存儲器不被同一操作系統(tǒng)所管理的 另一應(yīng)用程序更改。否則,應(yīng)用程序可能不能如所期望的那樣工作。這種訪問 保護(hù)通常是基于該操作系統(tǒng)是運(yùn)行于計(jì)算系統(tǒng)上的唯一操作系統(tǒng)的假設(shè)。
然而,有時(shí)在同一計(jì)算系統(tǒng)上運(yùn)行多個(gè)操作系統(tǒng)是有利的。在這種情況下, 每一操作系統(tǒng)中的確保對資源的安全操作的固有保護(hù)可能不再足夠。操作系統(tǒng) 可能不能夠控制另一操作系統(tǒng)對同一物理資源的訪問,且甚至可能沒有知曉其 它運(yùn)行中的操作系統(tǒng)的存在的機(jī)制。
系統(tǒng)管理程序是被配置為插入到一個(gè)或多個(gè)運(yùn)行中的操作系統(tǒng)和所保護(hù)
的物理資源(如處理器、I/O端口、存儲器、中斷等)之間的軟件層。系統(tǒng)管 理程序在功能上為操作系統(tǒng)多路復(fù)用受保護(hù)的物理資源,并以可視化的方式向 每一操作系統(tǒng)顯示資源。例如,作為一簡單的示例,假定有兩個(gè)操作系統(tǒng)正運(yùn) 行在具有一個(gè)處理器和1千兆字節(jié)(GB)隨機(jī)存取存儲器(RAM)的計(jì)算系 統(tǒng)上。系統(tǒng)管理程序可以向每個(gè)操作系統(tǒng)各分配一半處理器周期,且向每個(gè)操 作系統(tǒng)各分配一半存儲器(512兆字節(jié)(MB) RAM)。此外,系統(tǒng)管理程序 可以提供定址到每個(gè)操作系統(tǒng)的虛擬化范圍的RAM,以便對兩個(gè)操作系統(tǒng)看 起來都只有512 MB RAM可用。
在操作系統(tǒng)嘗試與物理資源進(jìn)行通信以及物理資源嘗試與操作系統(tǒng)進(jìn)行 通信時(shí),系統(tǒng)管理程序執(zhí)行適當(dāng)?shù)木彌_和變換以允許每個(gè)操作系統(tǒng)都仿佛其是 運(yùn)行在計(jì)算系統(tǒng)上的僅有的操作系統(tǒng)一樣經(jīng)歷其環(huán)境。此外,系統(tǒng)管理程序以 計(jì)算系統(tǒng)上的物理資源可由多個(gè)操作系統(tǒng)實(shí)例共享而仍被保護(hù)的方式來做到 這點(diǎn)。
通常,在運(yùn)行操作系統(tǒng)之前啟動系統(tǒng)管理程序。這允許系統(tǒng)管理程序 通過呈現(xiàn)物理資源的虛擬化視圖來在虛擬機(jī)中啟動操作系統(tǒng)為立即在虛擬 機(jī)中啟動操作系統(tǒng),系統(tǒng)管理程序包括用于發(fā)現(xiàn)物理資源及其本質(zhì)特征的大量代碼。由于物理資源發(fā)現(xiàn)是在有任何運(yùn)行中的操作系統(tǒng)之前完成的, 所以操作系統(tǒng)不能依賴于該發(fā)現(xiàn)過程。因此,在系統(tǒng)管理程序中用于發(fā)現(xiàn) 物理資源的代碼可能相當(dāng)復(fù)雜。
概述
雖然本發(fā)明的原理不限于該簡要概述中概括的各實(shí)施例,但此處描述的某 些實(shí)施例涉及在已有運(yùn)行中的操作系統(tǒng)之后啟動系統(tǒng)管理程序。盡管并非所 需,但可以使用運(yùn)行中的操作系統(tǒng)來取代系統(tǒng)管理程序來發(fā)現(xiàn)運(yùn)行在計(jì)算系統(tǒng) 上的物理資源。因此,如果需要,則系統(tǒng)管理程序可以依賴于操作系統(tǒng)來發(fā)現(xiàn) 資源,而非必須具有執(zhí)行相同功能的代碼。
提供本概述以便以簡化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的 一些概念。該概述不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征, 也不旨在用于幫助確定所要求保護(hù)的主題的范圍。
附圖簡述
為了進(jìn)一步闡明本發(fā)明的以上和其它優(yōu)點(diǎn)與特征,將參考附圖中示出的其 具體實(shí)施例來呈現(xiàn)本發(fā)明的更具體描述??梢岳斫猓@些附圖只描繪本發(fā)明的 典型實(shí)施例,因此將不被認(rèn)為是對其范圍的限制。將通過使用附圖用附加特征 和細(xì)節(jié)來描述和說明這些實(shí)施例,附圖中-
圖1示出了可在其中采用本發(fā)明的各實(shí)施例的計(jì)算環(huán)境;
圖2示出用于使用運(yùn)行中的操作系統(tǒng)來啟動系統(tǒng)管理程序的方法的流程
圖3示出用于啟動附加的操作系統(tǒng)實(shí)例的方法的流程圖4A示出其中根操作系統(tǒng)在沒有系統(tǒng)管理程序時(shí)與計(jì)算系統(tǒng)的物理資源
進(jìn)行直接通信的配置;
圖4B示出其中操作系統(tǒng)啟動了系統(tǒng)管理程序以用作操作系統(tǒng)和物理資源
之間的中介的配置;
圖4C示出其中系統(tǒng)管理程序啟動并支持了附加的操作系統(tǒng)的配置;以及 圖5示出用于將操作系統(tǒng)傳輸?shù)较到y(tǒng)管理程序的環(huán)境的方法的流程圖。
詳細(xì)描述根據(jù)本發(fā)明的各實(shí)施例,可以在已有運(yùn)行中的操作系統(tǒng)之后啟動系統(tǒng)管理 程序。可以使用運(yùn)行中的操作系統(tǒng)來取代系統(tǒng)管理程序來發(fā)現(xiàn)運(yùn)行在計(jì)算系統(tǒng) 上的物理資源??梢栽谙到y(tǒng)管理程序工作之后啟動其它操作系統(tǒng)實(shí)例。首先, 將參考圖l描述其中可實(shí)現(xiàn)本發(fā)明的原理的通用計(jì)算環(huán)境。然后,將參考后續(xù) 附圖描述關(guān)于本發(fā)明的各實(shí)施例的進(jìn)一步的細(xì)節(jié)。
計(jì)算系統(tǒng)現(xiàn)在越來越多地采用各種形式。例如,計(jì)算系統(tǒng)可以是手持式設(shè) 備、電器、膝上型計(jì)算機(jī)、臺式計(jì)算機(jī)、大型機(jī)、分布式計(jì)算系統(tǒng)或甚至常規(guī) 上不被認(rèn)為是計(jì)算系統(tǒng)的設(shè)備。在本說明書以及權(quán)利要求書中,術(shù)語"計(jì)算系 統(tǒng)"被廣義地定義為包括包含至少一個(gè)處理器以及其上能含有可由處理器執(zhí)行 的計(jì)算機(jī)可執(zhí)行指令的存儲器的任何設(shè)備或系統(tǒng)(或其組合)。存儲器可采取
任何形式,且可取決于計(jì)算系統(tǒng)的本質(zhì)和形式。計(jì)算系統(tǒng)可在網(wǎng)絡(luò)環(huán)境上分布, 且可包括多個(gè)組成計(jì)算系統(tǒng)。
參考圖l,在其最基本配置中,計(jì)算系統(tǒng)100—般包括至少一個(gè)處理單元
102和存儲器104。存儲器104可以是物理系統(tǒng)存儲器,它可以是易失性的、 非易失性的或兩者的某種組合。易失性存儲器的示例包括隨機(jī)存取存儲器 (RAM)。非易失性存儲器的示例包括只讀存儲器(ROM)、閃存等。術(shù)語"存 儲器"也可在此處用來指諸如物理存儲介質(zhì)等非易失性大容量存儲。這樣的存 儲可以是可移動或不可移動的,且可包括(但不限于)PCMCIA卡、磁盤和光 盤、磁帶等。
如此處所使用的,術(shù)語"模塊"或"組件"可以指在計(jì)算系統(tǒng)上執(zhí)行的軟件對 象或例程。此處描述的不同的組件、模塊、引擎和服務(wù)可被實(shí)現(xiàn)為在計(jì)算系統(tǒng) 上執(zhí)行的對象或進(jìn)程(例如,作為分開的線程)。盡管此處描述的系統(tǒng)和方法 可用軟件實(shí)現(xiàn),但用硬件以及軟件和硬件的組合的實(shí)現(xiàn)也是可能的且已被想 到。
在以下描述中,參考由一個(gè)或多個(gè)計(jì)算系統(tǒng)執(zhí)行的動作描述本發(fā)明的各實(shí) 施例。如果這樣的動作用軟件實(shí)現(xiàn),則相關(guān)聯(lián)計(jì)算系統(tǒng)中執(zhí)行該動作的一個(gè)或 多個(gè)處理器響應(yīng)于執(zhí)行了計(jì)算可執(zhí)行指令而引導(dǎo)計(jì)算系統(tǒng)的操作。這樣的操作 的示例涉及對數(shù)據(jù)的操縱。計(jì)算機(jī)可執(zhí)行指令(和所操縱的數(shù)據(jù))可被存儲在 計(jì)算系統(tǒng)IOO的存儲器104中。
8計(jì)算系統(tǒng)100還可包含允許計(jì)算系統(tǒng)100例如通過網(wǎng)絡(luò)110與其它計(jì)算系 統(tǒng)通信的通信信道108。通信信道108是通信介質(zhì)的示例。通信介質(zhì)一般用諸 如載波或其它傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號來體現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、 程序模塊或其它數(shù)據(jù),并且包括任何信息傳遞介質(zhì)。作為示例而非限制,通信 介質(zhì)包括有線介質(zhì),諸如有線網(wǎng)絡(luò)或直接線連接,以及無線介質(zhì),諸如聲學(xué)、 無線電、紅外線和其它無線介質(zhì)。如此處所用的術(shù)語計(jì)算機(jī)可讀介質(zhì)既包括存 儲介質(zhì)又包括通信介質(zhì)。
本發(fā)明的范圍內(nèi)的各實(shí)施例也包括用于承載或其上儲存有計(jì)算機(jī)可執(zhí)行 指令或數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì)。這樣的計(jì)算機(jī)可讀介質(zhì)可以是可由通用或 專用計(jì)算機(jī)訪問的任何可用介質(zhì)。作為示例而非限制,這樣的計(jì)算機(jī)可讀介質(zhì) 可包括物理存儲和/或存儲器介質(zhì),諸如RAM、 ROM、 EEPROM、 CD-ROM 或其它光盤存儲、磁盤存儲或其它磁存儲設(shè)備、或可用于承載或存儲計(jì)算機(jī)可 執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜?jì)算機(jī)訪問 的任何其它介質(zhì)。當(dāng)信息通過網(wǎng)絡(luò)或另一通信連接(硬連線、無線或硬連線或 無線的組合)傳輸或提供給計(jì)算機(jī)時(shí),該計(jì)算機(jī)將該連接完全視為計(jì)算機(jī)可讀 介質(zhì)。因此,任何這樣的連接被適當(dāng)?shù)胤Q為計(jì)算機(jī)可讀介質(zhì)。以上的組合也應(yīng) 包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。
計(jì)算機(jī)可執(zhí)行指令包括例如,使通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè)
備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。盡管用對結(jié)構(gòu)特征和/或方法動作專 用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于 在此所述的具體特征或動作。相反,在此所述的具體特征和動作是作為實(shí)現(xiàn)權(quán) 利要求的示例形式公開的。
圖2示出用于運(yùn)行中的操作系統(tǒng)啟動系統(tǒng)管理程序的方法200的流程圖。 在本說明書和權(quán)利要求書中,"系統(tǒng)管理程序"是被配置為設(shè)置在一個(gè)或多個(gè)運(yùn) 行中的操作系統(tǒng)和受保護(hù)的物理資源之間的軟件層。系統(tǒng)管理程序在功能上為 操作系統(tǒng)多路復(fù)用受保護(hù)的物理資源,并以虛擬化的方式向每一操作系統(tǒng)顯示 資源。由此,系統(tǒng)管理程序用作操作系統(tǒng)和計(jì)算系統(tǒng)的物理資源之間的一種特 殊的抽象層。例如,作為一簡單的示例,假定有兩個(gè)操作系統(tǒng)正運(yùn)行在具有一個(gè)處理器
和1千兆字節(jié)(GB)隨機(jī)存取存儲器(RAM)的計(jì)算系統(tǒng)上。系統(tǒng)管理程序 可以向每個(gè)操作系統(tǒng)各分配一半處理器周期,且向每個(gè)操作系統(tǒng)各分配一半存 儲器(512兆字節(jié)(MB) RAM)。此外,系統(tǒng)管理程序可以提供定址到每個(gè) 操作系統(tǒng)的虛擬化范圍的RAM,以便對兩個(gè)操作系統(tǒng)看起來都只有512 MB RAM可用。在操作系統(tǒng)嘗試與物理資源進(jìn)行通信以及物理資源嘗試與操作系 統(tǒng)進(jìn)行通信時(shí),系統(tǒng)管理程序執(zhí)行適當(dāng)?shù)木彌_和變換以允許每個(gè)操作系統(tǒng)都仿 佛其是運(yùn)行在計(jì)算系統(tǒng)上的僅有的操作系統(tǒng)一樣經(jīng)歷其環(huán)境。
不同于傳統(tǒng)的系統(tǒng)管理程序配置,本發(fā)明的各實(shí)施例準(zhǔn)許在操作系統(tǒng)啟動 之后啟動系統(tǒng)管理程序,即使操作系統(tǒng)已經(jīng)發(fā)現(xiàn)了計(jì)算系統(tǒng)的物理資源。開始 系統(tǒng)管理程序的操作系統(tǒng)將表示所發(fā)現(xiàn)的物理資源的狀態(tài)的信息傳遞給系統(tǒng) 管理程序。由此,系統(tǒng)管理程序不必?fù)碛邪l(fā)現(xiàn)計(jì)算系統(tǒng)的物理資源的獨(dú)立的代 碼。
一旦操作系統(tǒng)啟動系統(tǒng)管理程序并將關(guān)于所發(fā)現(xiàn)的計(jì)算系統(tǒng)的物理資源 '的信息傳遞給系統(tǒng)管理程序之后,操作系統(tǒng)擇可以暫停執(zhí)行并將控制傳遞給系 統(tǒng)管理程序。系統(tǒng)管理程序隨后可以設(shè)置虛擬機(jī)實(shí)例來處理將來的對計(jì)算系統(tǒng) 的物理資源的任何受保護(hù)資源的訪問請求。用與受保護(hù)的物理資源的操作系統(tǒng) 的概念相一致的狀態(tài)來初始化虛擬機(jī)實(shí)例。在完成之后,操作系統(tǒng)在虛擬機(jī)環(huán) 境中恢復(fù)。然而,在虛擬機(jī)環(huán)境中,操作系統(tǒng)通過系統(tǒng)管理程序與物理資源間 接地進(jìn)行接口,而非直接地與物理資源進(jìn)行接口。這一改變對操作系統(tǒng)來說是 透明的,因?yàn)閷S糜谂c操作系統(tǒng)進(jìn)行通信的虛擬機(jī)尊重操作系統(tǒng)先前發(fā)現(xiàn)的關(guān) 于物理資源的信息。
在某些情況下并對于某些受保護(hù)的物理資源,可能對操作系統(tǒng)來說不使用 系統(tǒng)管理程序則不可能發(fā)現(xiàn)受保護(hù)的物理資源,并且因此也不可能以透明的方 式稍后通過系統(tǒng)管理程序與同一受保護(hù)的物理資源間接地進(jìn)行接口。在這種情 況下,操作系統(tǒng)可被配置為理解其稍后將通過系統(tǒng)管理程序來操作,并且因而 忽略稍后不能以透明的方式虛擬化的任何物理資源。例如,操作系統(tǒng)加載器可 被配置為通知其它操作系統(tǒng)組件不要使用特定受保護(hù)的物理資源。
10回頭參考圖2,方法200在根操作系統(tǒng)啟動(動作201)時(shí)開始。"根"操 作系統(tǒng)是啟動系統(tǒng)管理程序的操作系統(tǒng),而非可在系統(tǒng)管理程序工作之后啟動 的操作系統(tǒng)。圖4A示出在其中操作系統(tǒng)401在沒有系統(tǒng)管理程序時(shí)與計(jì)算系 統(tǒng)的物理資源402直接進(jìn)行通信404的操作階段的配置400A。
根操作系統(tǒng)隨后執(zhí)行在圖2的左邊一欄中欄標(biāo)題"根操作系統(tǒng)"下示出的 若干動作。例如,根操作系統(tǒng)發(fā)現(xiàn)至少一個(gè)物理資源(動作211A)。操作系 統(tǒng)通常具有在啟動操作系統(tǒng)不久之后執(zhí)行的發(fā)現(xiàn)計(jì)算系統(tǒng)的物理資源的指令。
例如,參考圖4A,操作系統(tǒng)401發(fā)現(xiàn)物理資源狀態(tài)403。發(fā)現(xiàn)計(jì)算系統(tǒng)的物理 資源可能是復(fù)雜的工作。
為在啟動系統(tǒng)管理程序之前的狀態(tài)下恢復(fù)操作系統(tǒng),操作系統(tǒng)捕獲在啟動 系統(tǒng)管理程序之前的物理機(jī)器的狀態(tài)。在一實(shí)施例中,所捕獲的狀態(tài)包括所有 物理處理器和物理APIC (高級可編程中斷控制器)的狀態(tài)。物理處理器狀態(tài) 包括-
1. 通用寄存器。
2. 浮點(diǎn)和XMM寄存器。
3. 控制寄存器(CR)。
4. 調(diào)試寄存器(DR)。
5. 指令指針寄存器(RIP)、棧指針寄存器(RIP)和標(biāo)志寄存器(RFLAGS)
6. CS、 DS、 SS、 ES、 FS、 GS和TR段的段狀態(tài),包括段基礎(chǔ)、限制和 訪問權(quán)限。
7. 全局描述符表寄存器(GDTR)、中斷描述符表寄存器(IDTR)和局 部描述符表寄存器(LDTR)。
8. 包括KernelGsBase, Star, Lstar, Cstar, Sfmask, SysenterCs, SysenterEip, SysenterEsp和ApicBaseMSR的特定模型專用寄存器(MSR)。
物理本地APIC狀態(tài)可以包括
1. 本地APICID
2. 請求寄存器
3. 服務(wù)寄存器
4. 任務(wù)優(yōu)先級寄存器另外,在啟動系統(tǒng)管理程序時(shí),可以將硬件的某些其它方面作為引導(dǎo)參數(shù) 提供給系統(tǒng)管理程序。這些可以包括
1. 當(dāng)前和可能的邏輯處理器,包括可運(yùn)行時(shí)熱插入的那些
2. 是否在BIOS中啟用或禁用超線程
3. 當(dāng)前物理RAM范圍一在引導(dǎo)系統(tǒng)管理程序時(shí)用RAM填充的系統(tǒng)物理 地址范圍
4. 物理節(jié)點(diǎn)(包括在引導(dǎo)時(shí)不具有相關(guān)聯(lián)的資源但可能在運(yùn)行時(shí)填充的那
些)
5. 物理節(jié)點(diǎn)之間的存儲器存取比率
6. 系統(tǒng)管理程序必須訪問的特定硬件特征(例如,電源管理定時(shí)器)的地
址
操作系統(tǒng)還啟動要插入到操作系統(tǒng)和物理資源之間的系統(tǒng)管理程序(動作 211B)。例如,參考圖4B,系統(tǒng)管理程序405被插入到根操作系統(tǒng)401和物 理資源402之間。作為該啟動的一部分,操作系統(tǒng)向系統(tǒng)管理程序提供關(guān)于至 少要被保護(hù)的物理資源的狀態(tài)信息。該狀態(tài)信息包括系統(tǒng)管理程序發(fā)現(xiàn)要由系 統(tǒng)管理程序來防護(hù)的受保護(hù)的物理資源的相關(guān)狀態(tài)所需的所有信息。在一實(shí)施 例中,狀態(tài)信息可以包括上述的捕獲狀態(tài)。至少,狀態(tài)信息至少包括對應(yīng)的物 理資源的標(biāo)識。
同樣,作為啟動的一部分,操作系統(tǒng)將控制傳遞給系統(tǒng)管理程序。系統(tǒng)管 理程序隨后執(zhí)行圖2的右邊一欄中標(biāo)題"系統(tǒng)管理程序"下示出的動作。具體地, 系統(tǒng)管理程序隨后執(zhí)行向根操作系統(tǒng)虛擬化計(jì)算系統(tǒng)的受保護(hù)的物理資源所 必需的任務(wù)(動作221)。
例如,系統(tǒng)管理程序可以創(chuàng)建關(guān)于根操作系統(tǒng)的虛擬機(jī)實(shí)例(動作231)。 參考圖4B,框421表示關(guān)于操作系統(tǒng)401的虛擬機(jī)實(shí)例。 一旦被初始化并工 作之后,虛擬機(jī)實(shí)例421將用作關(guān)于操作系統(tǒng)401的物理資源402的代理。虛 擬機(jī)實(shí)例421將從操作系統(tǒng)401接收對物理資源的服務(wù)請求,并將取決于虛擬 機(jī)實(shí)例421可訪問的狀態(tài)信息來執(zhí)行適當(dāng)?shù)恼埱笞儞Q和緩沖。虛擬機(jī)實(shí)例421 隨后將使得系統(tǒng)管理程序405從物理資源請求適當(dāng)?shù)姆?wù)。虛擬機(jī)實(shí)例421還 可以視需要用適當(dāng)?shù)淖儞Q和緩沖來將請求結(jié)果報(bào)告回操作系統(tǒng)401 。取決于虛擬機(jī)實(shí)例可訪問的狀態(tài)信息,虛擬機(jī)實(shí)例421將不同地工作。系 統(tǒng)管理程序尊重操作系統(tǒng)401已發(fā)現(xiàn)的關(guān)于物理資源402的狀態(tài)信息。因此, 系統(tǒng)管理程序405用操作系統(tǒng)提供的至少某些狀態(tài)信息來初始化虛擬機(jī)實(shí)例 421 (動作232)。例如,系統(tǒng)管理程序405可以用操作系統(tǒng)所提供的捕獲狀態(tài) 來初始化虛擬機(jī)。以此方式,用與表示操作系統(tǒng)所檢測到的物理資源的信息相 一致的狀態(tài)初始化了虛擬機(jī)實(shí)例421。隨后在虛擬機(jī)環(huán)境中恢復(fù)操作系統(tǒng)(動 作233和動作214)。在該環(huán)境中,如圖4B中可見的,取代操作系統(tǒng)401直 接地與物理資源402進(jìn)行接口 ,通過使用虛擬機(jī)實(shí)例421和系統(tǒng)管理程序405 來為操作系統(tǒng)401虛擬化物理資源402。由于虛擬機(jī)421所使用的狀態(tài)信息與 操作系統(tǒng)401所發(fā)現(xiàn)的狀態(tài)信息相一致,所以在某些實(shí)施例中改變對于操作系 統(tǒng)401來說是透明的。
在一實(shí)施例中,經(jīng)由仿真物理處理器行為的虛擬處理器抽象來提供虛擬 化。類似地,其提供仿真物理APIC的行為的虛擬APIC。這如下實(shí)現(xiàn)
1. 將虛擬處理器的狀態(tài)初始化為所捕獲的物理處理器的狀態(tài)。
2. 將虛擬ACPI的狀態(tài)初始化為所捕獲的物理本地APIC的狀態(tài)。
3. 系統(tǒng)管理程序安裝截取來防止操作系統(tǒng)訪問特許物理硬件資源。例如, 本地APIC在啟動系統(tǒng)管理程序之前所處的客物理地址被標(biāo)記為不存在以使所 有對本地ACPI的訪問都被俘獲到系統(tǒng)管理程序。
在啟動系統(tǒng)管理程序之后,系統(tǒng)管理程序可以啟動附加操作系統(tǒng),這些附 加操作系統(tǒng)或是同一操作系統(tǒng)的實(shí)例或是不同的操作系統(tǒng)的實(shí)例。例如,參考 圖4C,可以附加地啟動操作系統(tǒng)412和413以及可能的由省略號414所表示 的其它操作系統(tǒng)。圖3示出用于同樣為附加操作系統(tǒng)虛擬化物理資源的方法 300的流程圖。在要啟動附加操作系統(tǒng)時(shí),系統(tǒng)管理程序首先啟動對應(yīng)的虛擬 機(jī)實(shí)例(動作301),隨后通過該動作啟動操作系統(tǒng)(動作302)。系統(tǒng)管理 程序使用對應(yīng)的虛擬機(jī)實(shí)例來向?qū)?yīng)的附加操作系統(tǒng)虛擬化物理資源(動作 303)。
在啟動操作系統(tǒng)后每一操作系統(tǒng)都執(zhí)行物理資源的發(fā)現(xiàn)時(shí),各種信息請求 由對應(yīng)的虛擬機(jī)實(shí)例來截取。取代找出與物理資源相關(guān)聯(lián)的實(shí)際狀態(tài)信息,對 應(yīng)的虛擬機(jī)向操作系統(tǒng)提供虛擬化的狀態(tài)信息。
13有時(shí),啟動系統(tǒng)管理程序的操作系統(tǒng)可能處于不同的環(huán)境類型。例如,可
能操作系統(tǒng)以32位模式操作,而要啟動的系統(tǒng)管理程序要以64位模式操作,
或相反。類似地,操作系統(tǒng)和系統(tǒng)管理程序能以不同的分頁模式操作。即使操 作系統(tǒng)和系統(tǒng)管理程序在不同的環(huán)境中操作時(shí),本發(fā)明的某些實(shí)施例也允許操 作系統(tǒng)啟動系統(tǒng)管理程序。
圖5示出供操作系統(tǒng)進(jìn)入系統(tǒng)管理程序的環(huán)境以準(zhǔn)備啟動系統(tǒng)管理程序 的方法500的流程圖。從圖5的啟動操作系統(tǒng)的動作201,操作系統(tǒng)首先使任 何不可屏蔽的中斷無法起作用(動作501),并屏蔽任何可屏蔽中斷。能以多 種不同的方法來使不可屏蔽中斷無法起作用。畢竟,在操作系統(tǒng)轉(zhuǎn)移到系統(tǒng)管 理程序操作環(huán)境時(shí),應(yīng)該注意,要確保在加載系統(tǒng)管理程序的初始階段之前沒 有中斷和異常發(fā)生。如果在離開操作系統(tǒng)環(huán)境后而在進(jìn)入系統(tǒng)管理程序環(huán)境前 發(fā)生中斷或異常,處理器可能不能夠處理該中斷或異常,因?yàn)闆]有中斷描述符 表或棧。大部分異常都可被容易地避免,因?yàn)樗鼈兪擒浖跏蓟?。可以在?過程期間通過將RFLAGS寄存器中的IF位清零來抑制可屏蔽的硬件中斷。
可以通過以下兩種機(jī)制的任一種來抑制不可屏蔽中斷(NMI):
1. 自傳遞一NMI并且不執(zhí)行IRET指令這可以通過臨時(shí)地修改操作系 統(tǒng)的中斷描述符表中的NMI處理程序地址以指向不同的處理程序來達(dá)到。隨 后NMI可被傳遞到當(dāng)前處理器。這將使得處理器跳轉(zhuǎn)到NMI處理程序所提供 的地址。在NMI處理程序中,可以還原原始NMI處理程序地址并繼續(xù)。這將 有效地屏蔽進(jìn)一步的NMI,因?yàn)樵趚86架構(gòu)上,在接收到一個(gè)NMI之后則屏 蔽各NMI,直到執(zhí)行了 IRET指令為止。
2. 總是以有效的中斷描述符表(IDT)和棧來運(yùn)行這可通過創(chuàng)建臨時(shí)IDT 和棧來達(dá)到。臨時(shí)頁表可以將臨時(shí)IDT、 NMI處理程序地址和棧映射在其原始 虛擬地址及其各自的物理地址。這確保如果NMI在處理器以臨時(shí)頁表運(yùn)行時(shí) 到達(dá),則其將被正確地傳遞到處理程序。
一旦中斷被屏蔽或以其它方式變?yōu)闊o法起作用(動作501),則創(chuàng)建臨時(shí) 虛擬機(jī)實(shí)例(動作502)。操作系統(tǒng)隨后用引起截取的指令來初始化臨時(shí)虛擬 機(jī)實(shí)例(動作503)。截取是從操作系統(tǒng)到系統(tǒng)管理程序的控制傳輸。在恢復(fù) 了臨時(shí)虛擬機(jī)實(shí)例時(shí)(動作504),該虛擬機(jī)實(shí)例執(zhí)行引起截取的指令,且截取被由此生成(動作505)。因此,臨時(shí)虛擬機(jī)實(shí)例開始使用系統(tǒng)管理程序狀
態(tài)來執(zhí)行(動作506),從而使得操作系統(tǒng)繼續(xù)以系統(tǒng)管理程序模式操作(動 作507)。操作系統(tǒng)隨后可以啟動系統(tǒng)管理程序??扇芜x地,可以毀去臨時(shí)虛 擬機(jī)實(shí)例,因?yàn)槠渲皇菍⒉僮飨到y(tǒng)置于啟動系統(tǒng)管理程序所需要的系統(tǒng)管理程 序模式所需要的。
因此,本發(fā)明的各實(shí)施例即使在已有運(yùn)行中的操作系統(tǒng)存在于計(jì)算系統(tǒng)上 時(shí)仍準(zhǔn)許啟動系統(tǒng)管理程序。在某些實(shí)施例中,即使操作系統(tǒng)和系統(tǒng)管理程序 處于不同的環(huán)境中,操作系統(tǒng)也可以啟動系統(tǒng)管理程序。
本發(fā)明可具體化為其它具體形式而不背離其精神或本質(zhì)特征。所述實(shí)施例 在所有方面都應(yīng)被認(rèn)為僅是說明性而非限制性的。從而,本發(fā)明的范圍由所附 權(quán)利要求書而非前述描述指示。落入權(quán)利要求書的等效方式的含義和范圍內(nèi)的 所有改變應(yīng)被權(quán)利要求書的范圍涵蓋。
權(quán)利要求
1. 一種包括具有一個(gè)或多個(gè)計(jì)算機(jī)可執(zhí)行指令的一種或多種計(jì)算機(jī)可讀介質(zhì)(104)的計(jì)算機(jī)程序產(chǎn)品,所述一個(gè)或多個(gè)計(jì)算機(jī)可執(zhí)行指令在由計(jì)算系統(tǒng)(100)的一個(gè)或多個(gè)處理器(102)執(zhí)行時(shí),使得所述計(jì)算系統(tǒng)(100)執(zhí)行一種用于使用運(yùn)行中的操作系統(tǒng)來啟動系統(tǒng)管理程序的方法,所述方法包括操作系統(tǒng)(401)啟動(211B)系統(tǒng)管理程序(405)的動作;以及所啟動的系統(tǒng)管理程序(405)向啟動所述系統(tǒng)管理程序(405)的操作系統(tǒng)(401)虛擬化(221)所述計(jì)算系統(tǒng)(100)的至少一個(gè)物理資源(402)的動作。
2. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個(gè)或多個(gè)計(jì) 算機(jī)可讀介質(zhì)是物理存儲器或存儲介質(zhì)。
3. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個(gè)或多個(gè)計(jì) 算機(jī)可讀介質(zhì)是物理存儲器介質(zhì)。
4. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個(gè)或多個(gè)計(jì) 算機(jī)可讀介質(zhì)是物理存儲介質(zhì)。
5. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)可執(zhí)行 指令被進(jìn)一步結(jié)構(gòu)化,以便在由所述計(jì)算系統(tǒng)的一個(gè)或多個(gè)處理器執(zhí)行時(shí),使 得所述計(jì)算系統(tǒng)進(jìn)一步執(zhí)行以下動作所述操作系統(tǒng)發(fā)現(xiàn)所述至少一個(gè)物理資源的動作;以及 所述操作系統(tǒng)向所述系統(tǒng)管理程序提供關(guān)于所述至少一個(gè)物理資源的狀 態(tài)信息的動作,所述狀態(tài)信息至少包括對應(yīng)的物理資源的標(biāo)識。
6. 如權(quán)利要求5所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)可執(zhí)行 指令被進(jìn)一步結(jié)構(gòu)化,以便在由所述計(jì)算系統(tǒng)的一個(gè)或多個(gè)處理器執(zhí)行時(shí),使 得所述計(jì)算系統(tǒng)進(jìn)一步執(zhí)行以下動作所述系統(tǒng)管理程序啟動關(guān)于所述操作系統(tǒng)的虛擬機(jī)實(shí)例的動作; 用所述操作系統(tǒng)提供的狀態(tài)信息來初始化所述虛擬機(jī)實(shí)例的動作; 在初始化所述虛擬機(jī)實(shí)例之后,所述系統(tǒng)管理程序恢復(fù)所述操作系統(tǒng)的動 作;以及在恢復(fù)了所述操作系統(tǒng)之后,所述系統(tǒng)管理程序使用所述虛擬機(jī)實(shí)例來虛 擬化所述至少一個(gè)物理資源的動作。
7. 如權(quán)利要求6所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)可執(zhí)行指令被進(jìn)一步結(jié)構(gòu)化,以便在由所述計(jì)算系統(tǒng)的一個(gè)或多個(gè)處理器執(zhí)行時(shí),使 得所述計(jì)算系統(tǒng)進(jìn)一步為在所述計(jì)算系統(tǒng)上啟動的每一附加操作系統(tǒng)執(zhí)行以下動作所述系統(tǒng)管理程序啟動關(guān)于每一附加操作系統(tǒng)的對應(yīng)的虛擬機(jī)實(shí)例的動作;在啟動所述對應(yīng)的虛擬機(jī)實(shí)例之后,啟動所述對應(yīng)的附加操作系統(tǒng)的動作;以及所述系統(tǒng)管理程序使用所述對應(yīng)的虛擬機(jī)實(shí)例來向所述對應(yīng)的附加操作 系統(tǒng)虛擬化所述至少一個(gè)物理資源的動作。
8. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)可執(zhí)行 指令被進(jìn)一步結(jié)構(gòu)化,以便在由所述計(jì)算系統(tǒng)的一個(gè)或多個(gè)處理器執(zhí)行時(shí),使 得所述計(jì)算系統(tǒng)進(jìn)一步執(zhí)行以下動作所啟動的系統(tǒng)管理程序向啟動所述系統(tǒng)管理程序的操作系統(tǒng)虛擬化所述 計(jì)算系統(tǒng)的至少一個(gè)物理資源的動作。
9. 如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)可執(zhí)行 指令還包括在由所述計(jì)算系統(tǒng)的一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得所述計(jì)算系統(tǒng) 執(zhí)行以下動作的計(jì)算機(jī)可執(zhí)行指令,所述動作包括所述操作系統(tǒng)創(chuàng)建臨時(shí)虛擬機(jī)實(shí)例的動作; 用生成截取的指令來初始化所述臨時(shí)虛擬機(jī)實(shí)例的動作; 在所述初始化動作之后恢復(fù)所述臨時(shí)虛擬機(jī)實(shí)例的動作; 在檢測到得自所述恢復(fù)所述臨時(shí)虛擬機(jī)實(shí)例的動作的截取后,使用系統(tǒng)管 理程序狀態(tài)來啟動所述臨時(shí)虛擬機(jī)實(shí)例來操作的動作。
10. 如權(quán)利要求9所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)可 執(zhí)行指令還包括在由所述計(jì)算系統(tǒng)的一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得所述計(jì)算 系統(tǒng)在創(chuàng)建所述臨時(shí)虛擬機(jī)實(shí)例之前執(zhí)行以下動作的計(jì)算機(jī)可執(zhí)行指令,所述 動作包括使任何不可屏蔽中斷無法起作用的動作。
11. 如權(quán)利要求9所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)可 執(zhí)行指令還包括在由所述計(jì)算系統(tǒng)的一個(gè)或多個(gè)處理器執(zhí)行時(shí),使得所述計(jì)算 系統(tǒng)在使用所述系統(tǒng)管理程序狀態(tài)啟動所述臨時(shí)虛擬機(jī)實(shí)例之后執(zhí)行以下動 作的計(jì)算機(jī)可執(zhí)行指令,所述動作包括啟動所述系統(tǒng)管理程序的動作;以及 毀去所述臨時(shí)虛擬機(jī)實(shí)例的動作。
12. 如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述操作系統(tǒng)和系統(tǒng)管理程序中的一個(gè)以32位模式操作,而所述操作系統(tǒng)和系統(tǒng)管理程 序中的另 一個(gè)以64位模式操作。
13. 如權(quán)利要求11所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述操作系 統(tǒng)和系統(tǒng)管理程序使用不同的分頁機(jī)制來操作。
14. 一種用于使用運(yùn)行中的操作系統(tǒng)(401)來啟動系統(tǒng)管理程序(405) 的啟動系統(tǒng)管理程序(405)的方法(200),所述方法包括系統(tǒng)管理程序(405)從根操作系統(tǒng)(401)接收表示所述操作系統(tǒng)(401) 檢測到的多個(gè)物理資源(212)的信息的動作;所述系統(tǒng)管理程序(401)啟動(231)關(guān)于所述根操作系統(tǒng)的虛擬機(jī)實(shí)例 的動作;用與所述表示所述操作系統(tǒng)檢測到的所述多個(gè)物理資源的信息相一致的 狀態(tài)來初始化(232)所述虛擬機(jī)的動作;恢復(fù)(233)所述根操作系統(tǒng)以使所述根操作系統(tǒng)經(jīng)由使用所述狀態(tài)初始 化的所述虛擬機(jī)實(shí)例與所述多個(gè)物理資源間接地進(jìn)行接口的動作。
15. 如權(quán)利要求14所述的方法,其特征在于,在所述系統(tǒng)管理程序運(yùn) 行后,還包括啟動一個(gè)或多個(gè)附加操作系統(tǒng)的動作。
16. 如權(quán)利要求15所述的方法,其特征在于,還包括關(guān)于所述一個(gè)或 多個(gè)附加操作系統(tǒng)的每一個(gè)的以下動作初始化對應(yīng)的虛擬機(jī)實(shí)例以與所述對應(yīng)的附加操作系統(tǒng)進(jìn)行接口的動作。
17. —種包括一種或多種計(jì)算機(jī)可讀介質(zhì)(104)的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)可讀介質(zhì)上具有 操作系統(tǒng)(401);以及由所述操作系統(tǒng)(401)啟動并被配置為向所述操作系統(tǒng)(401)虛擬化所 述計(jì)算系統(tǒng)的至少一個(gè)物理資源(402)的系統(tǒng)管理程序(405)。
18. 如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個(gè)或 多個(gè)計(jì)算機(jī)可讀介質(zhì)是物理存儲器或存儲介質(zhì)。
19. 如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個(gè)或 多個(gè)計(jì)算機(jī)可讀介質(zhì)是物理存儲器介質(zhì)。
20. 如權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述一個(gè) 或多個(gè)計(jì)算機(jī)可讀介質(zhì)是物理存儲介質(zhì)。
全文摘要
在已有運(yùn)行中的操作系統(tǒng)之后啟動系統(tǒng)管理程序。操作系統(tǒng)自身可以啟動系統(tǒng)管理程序??梢允褂眠\(yùn)行中的操作系統(tǒng)來取代系統(tǒng)管理程序來發(fā)現(xiàn)運(yùn)行在計(jì)算系統(tǒng)上的物理資源??梢栽谙到y(tǒng)管理程序工作之后啟動其它操作系統(tǒng)或操作系統(tǒng)實(shí)例。
文檔編號G06F9/44GK101449240SQ200780017791
公開日2009年6月3日 申請日期2007年5月14日 優(yōu)先權(quán)日2006年5月15日
發(fā)明者A·J·桑頓, J·F·維德赫納, K·D·雷, S·甘吉利 申請人:微軟公司