專(zhuān)利名稱(chēng):用于超級(jí)管理器加載的存儲(chǔ)器管理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及個(gè)人計(jì)算機(jī)和共享相似架構(gòu)的設(shè)備。本發(fā)明更特別地涉及一種方法、一種制造的計(jì)算機(jī)程序產(chǎn)品、和一種電子設(shè)備,其用于實(shí)現(xiàn)超級(jí)管理器(hypervisor) 程序和相關(guān)應(yīng)用程序中的改善的性能和安全性。
背景技術(shù):
在現(xiàn)代,PC (個(gè)人計(jì)算機(jī))的使用十分常見(jiàn),而且仍然在增長(zhǎng)。一年一年地,買(mǎi)得起的硬件變得更快并具有更大的能力和容量。用于處理新任務(wù)的應(yīng)用軟件和用于處理新設(shè)備的系統(tǒng)軟件繼續(xù)出現(xiàn)。典型用戶可能遇到軟件的新版本,其與老版本相比,已經(jīng)被部署有優(yōu)點(diǎn)和缺點(diǎn)二者??梢哉f(shuō),隨著時(shí)間的過(guò)去,典型用戶部署具有更大的能力和數(shù)量日益增加的軟件的計(jì)算機(jī)。該典型用戶面臨的問(wèn)題是采用新版本的硬件或軟件(或完全新的應(yīng)用)的益處 (和財(cái)務(wù)費(fèi)用)相比于繼續(xù)使用其已經(jīng)學(xué)會(huì)順利使用的較老產(chǎn)品的益處。進(jìn)入這種選擇的因素是復(fù)雜的(并且超出本發(fā)明的范圍),但集成軟件解決方案引起額外的關(guān)注,因?yàn)樗鼈儍A向于限制不同應(yīng)用(或甚至是同一應(yīng)用的不同變體)的能力以和平共存。如果某人例如具有被設(shè)計(jì)為只與Microsoft Windows ; XP OS (操作系統(tǒng))一起工作的用于特定硬件的設(shè)備驅(qū)動(dòng)程序以及被設(shè)計(jì)為只與Microsoft Windows φ Vista OS 一起工作的應(yīng)用程序,那么這類(lèi)型的常見(jiàn)問(wèn)題可能出現(xiàn)。沒(méi)有解決方案是完全令人滿意的,并且將不得不容許折衷。典型用戶的另一個(gè)考慮是計(jì)算機(jī)啟動(dòng)時(shí)間。一般,容許的永久常駐軟件越多,計(jì)算機(jī)從上電到準(zhǔn)備好使用的狀況所花費(fèi)的時(shí)間將越長(zhǎng)。即使在多個(gè)軟件(尤其是多個(gè)0S)是可互操作的和有用的(或至少和平共存)并且提供足夠性能的情況下,相比于使用單個(gè)0S, 它們可能還要花費(fèi)太多時(shí)間去初始化并進(jìn)入準(zhǔn)備就緒狀態(tài)。計(jì)算機(jī)啟動(dòng)時(shí)間能容易地令僅僅希望繼續(xù)做手邊的任務(wù)的用戶變得不愉快。另一增長(zhǎng)的問(wèn)題是惡意軟件(malware)。針對(duì)惡意軟件的多種改進(jìn)已經(jīng)被建議,但是它們太經(jīng)常地依賴(lài)于綁定到特定廠家一或者更糟糕的,綁定到來(lái)自特定廠家的特定版本的軟件一的集成解決方案。這會(huì)使得管理多個(gè)軟件變體甚至更加困難。而且,這種解決方案可能太經(jīng)常地使用“隱晦式安全”(security by obscurity)的方法,這種方法讓用戶對(duì)他或她命運(yùn)的控制減少了并且不太適合與開(kāi)源產(chǎn)品一起使用。
發(fā)明內(nèi)容
因此,本發(fā)明提供了初始化計(jì)算機(jī)以支持虛擬機(jī)的方法。也可以使用其他電子設(shè)備,其可包括計(jì)算機(jī)或完全不同的數(shù)字控制器。本發(fā)明的方法可包括分配存儲(chǔ)器區(qū)域并從非易失性存儲(chǔ)器向其中加載程序。這種程序可包括超級(jí)管理器程序,用于加載超級(jí)管理器的程序,和Appliance (應(yīng)用工具)程序。也可為了各種目的創(chuàng)建存儲(chǔ)器堆,并且非易失性存儲(chǔ)器(例如盤(pán)驅(qū)動(dòng)器)可被處理以例如用于加載操作系統(tǒng)。根據(jù)一個(gè)方面,提供了一種用于初始化計(jì)算機(jī)以支持虛擬機(jī)的方法,包括步驟分配讀寫(xiě)存儲(chǔ)器的第一區(qū)域;從第一非易失性存儲(chǔ)器向該第一區(qū)域中加載第一程序,其選自由以下項(xiàng)組成的列表超級(jí)管理器程序,HV,和操作以把超級(jí)管理器程序加載到第一區(qū)域中的程序,HSC ;創(chuàng)建排除第一區(qū)域的讀寫(xiě)存儲(chǔ)器的存儲(chǔ)器堆;和傳遞控制給第一程序。根據(jù)另一方面,提供了一種制造的計(jì)算機(jī)程序產(chǎn)品,包括至少一個(gè)其中編碼有計(jì)算機(jī)指令的計(jì)算機(jī)可讀介質(zhì),所述指令當(dāng)被至少一個(gè)計(jì)算機(jī)執(zhí)行時(shí)通過(guò)包含以下動(dòng)作的步驟使得所述至少一個(gè)計(jì)算機(jī)變得初始化以支持虛擬機(jī)分配讀寫(xiě)存儲(chǔ)器的第一區(qū)域;從第一非易失性存儲(chǔ)器向第一區(qū)域中加載第一程序,其選自由以下項(xiàng)組成的列表超級(jí)管理器程序和操作以把超級(jí)管理器程序加載到第一區(qū)域中的程序;創(chuàng)建排除第一區(qū)域的讀寫(xiě)存儲(chǔ)器的存儲(chǔ)器堆;和傳遞控制給第一程序。根據(jù)另一方面,提供了一種電子設(shè)備,包含用于執(zhí)行編程指令的裝置;和用于存儲(chǔ)計(jì)算機(jī)指令的非易失性裝置,所述指令當(dāng)被所述用于執(zhí)行的裝置執(zhí)行時(shí),通過(guò)包含以下動(dòng)作的步驟使所述電子設(shè)備變得初始化以支持虛擬機(jī)分配讀寫(xiě)存儲(chǔ)器的第一區(qū)域;從第一非易失性存儲(chǔ)器向第一區(qū)域中加載第一程序,其選自由以下項(xiàng)組成的列表超級(jí)管理器程序和操作以把超級(jí)管理器程序加載到第一區(qū)域中的程序;創(chuàng)建排除第一區(qū)域的讀寫(xiě)存儲(chǔ)器的存儲(chǔ)器堆;和傳遞控制給第一程序。超級(jí)管理器程序,HV,可在分配和/或劃分存儲(chǔ)器堆之前或之后被加載。在一個(gè)實(shí)施例中,該堆可明確地排除專(zhuān)門(mén)用于HV的存儲(chǔ)器,這用于消除(或充分減小)如從后來(lái)加載的程序尤其是從通用操作系統(tǒng)看到的HV的可見(jiàn)性。在一個(gè)實(shí)施例中,在建立堆之后,BIOS可把控制傳遞回HSC,HSC然后將加載和啟動(dòng)HV的受保護(hù)的和/或虛擬存儲(chǔ)器模式。典型地,一起行動(dòng)的HV和/或BIOS將從用于BIOS 配置的存儲(chǔ)器(或某個(gè)其他隱藏良好的非易失性存儲(chǔ)器)中讀取參數(shù)導(dǎo)向(steering)信息,該信息可被用于劃分堆。因此,使得用于引導(dǎo)導(dǎo)向的信息對(duì)于HSC或HV可用,或是直接可用或是通過(guò)它們的相應(yīng)加載器可用。
還與可選的示例性實(shí)施例一起討論了這些方面的幾個(gè)變體。所公開(kāi)的對(duì)于固件和 /或軟件的改進(jìn)設(shè)計(jì)實(shí)現(xiàn)了關(guān)于上面概述的問(wèn)題的優(yōu)良折衷和其他益處。
在結(jié)合以下附圖閱讀了本發(fā)明的以下詳細(xì)描述后,將會(huì)更好地理解和認(rèn)識(shí)到本發(fā)明的上述和相關(guān)的優(yōu)點(diǎn)和特征,附圖被并入說(shuō)明書(shū)中并構(gòu)成說(shuō)明書(shū)的一部分,其示出本發(fā)明的實(shí)施例,并且其中相同的數(shù)字表示相同的元件,并且其中圖1是電子設(shè)備的示意性框圖,該電子設(shè)備被配置為實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的初始化計(jì)算機(jī)的計(jì)算機(jī)程序產(chǎn)品和/或方法。圖2是舉例說(shuō)明當(dāng)實(shí)現(xiàn)本發(fā)明實(shí)施例時(shí)電子設(shè)備所執(zhí)行的步驟的流程圖。圖3是舉例說(shuō)明當(dāng)在本發(fā)明的示例性實(shí)施例中實(shí)現(xiàn)超級(jí)管理器,appliance和主操作系統(tǒng)的加載和運(yùn)行時(shí)所執(zhí)行的步驟的流程圖。圖4是舉例說(shuō)明當(dāng)在本發(fā)明的示例性實(shí)施例中虛擬化來(lái)自VM(虛擬機(jī))的存儲(chǔ)器消息請(qǐng)求時(shí)所執(zhí)行的步驟的流程圖。圖5是舉例說(shuō)明當(dāng)在本發(fā)明的示例性實(shí)施例中切換到減少設(shè)施模式 (reduced-facilities mode)時(shí)所執(zhí)行的步驟的流程圖。圖6A示出本發(fā)明的示例性實(shí)施例如何可以被編碼到計(jì)算機(jī)介質(zhì)上。圖6B示出如何可以利用電磁波編碼,傳輸,接收和解碼本發(fā)明的示例性實(shí)施例。為了方便描述,在各個(gè)附圖中,同樣的組件已經(jīng)被給予相同的參考編號(hào)。
具體實(shí)施例方式在下面的描述中,為了描述清楚和簡(jiǎn)明的目的,并沒(méi)有描述所有在示意圖和/或圖示中示出的眾多的組件。在圖示中示出了眾多組件以向本領(lǐng)域普通技術(shù)人員提供本發(fā)明的詳盡的能夠?qū)崿F(xiàn)的公開(kāi)。這些組件中的許多組件的操作對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)是可被理解和顯而易見(jiàn)的?,F(xiàn)在將參考圖1來(lái)描述本發(fā)明的示例性實(shí)施例。圖1是根據(jù)本發(fā)明的實(shí)施例的實(shí)現(xiàn)存儲(chǔ)器使用功能性的電子設(shè)備的示意性框圖。 在示例性實(shí)施例中,該電子設(shè)備10被實(shí)現(xiàn)為個(gè)人計(jì)算機(jī),例如,桌上型計(jì)算機(jī),膝上型計(jì)算機(jī),平板PC或其他適合的計(jì)算設(shè)備。雖然說(shuō)明書(shū)概述了個(gè)人計(jì)算機(jī)的操作,但是本領(lǐng)域普通技術(shù)人員將理解,該電子設(shè)備10可以被實(shí)現(xiàn)為PDA,無(wú)線通信設(shè)備(例如蜂窩電話),嵌入式控制器或設(shè)備(例如機(jī)頂盒),打印設(shè)備或適于與本發(fā)明一起操作或互操作的其他適合的設(shè)備或它們的組合。個(gè)人計(jì)算機(jī)10可包括被配置為控制電子設(shè)備10的全部操作的至少一個(gè)控制器或處理器12。這樣的處理器或控制器經(jīng)常被稱(chēng)為CPU(中央處理單元)或MPU(微處理器單元)。處理器12可包括用于執(zhí)行計(jì)算的ALU(算術(shù)/邏輯單元),用于臨時(shí)存儲(chǔ)數(shù)據(jù)和指令的一個(gè)或多個(gè)寄存器,和用于控制個(gè)人計(jì)算機(jī)10的操作的定序器或控制器。在一個(gè)實(shí)施例中,處理器12可包括英特爾公司(Intel Corporation)制造的Celeron 和Centrino 微處理器,或國(guó)際商業(yè)機(jī)器(International Business Machines, )出售的Power-PC 處理器中的任一個(gè)。此外,包括那些來(lái)自Sun Microsystems , MIPS ,NEC , Cyrix. 和其他公司的那些的其他各種處理器中的任一個(gè)可被用于實(shí)現(xiàn)處理器12。處理器12并不限于微處理器,而是可采用其他形式,例如微控制器,數(shù)字信號(hào)處理器,專(zhuān)用硬件(例如ASIC (專(zhuān)用集成電路)),狀態(tài)機(jī)或在分布于網(wǎng)絡(luò)上的一個(gè)或多個(gè)處理器上執(zhí)行的軟件。處理器12可經(jīng)由CPU總線13耦合到總線控制器14??偩€控制器14可包括集成在其中的存儲(chǔ)器控制器15。在替換的實(shí)施例中,存儲(chǔ)器控制器15可與總線控制器14相分離。存儲(chǔ)器控制器15可提供接口以用于由處理器12或其他設(shè)備對(duì)讀寫(xiě)系統(tǒng)存儲(chǔ)器16 (例如RAM (隨機(jī)存取存儲(chǔ)器))進(jìn)行訪問(wèn)??偩€控制器14可耦合到系統(tǒng)總線18,例如PCI (外圍部件互連總線)。耦合到系統(tǒng)總線18的可以是外圍設(shè)備控制器24,其也稱(chēng)為輸入/輸出控制器。外圍設(shè)備控制器24 又耦合到各種其他設(shè)備25,26,27,例如鍵盤(pán),鼠標(biāo),打印機(jī)等。其他組件(圖1中未示出) 可能存在,例如,耦合到顯示器的顯示控制器和網(wǎng)絡(luò)通信控制器將是常見(jiàn)的。系統(tǒng)總線18也可耦合到許多非易失性存儲(chǔ)器30,31,32,33。圖1作為例子示出了四個(gè)非易失性存儲(chǔ)器,實(shí)際上可能有更少或更多的非易失性存儲(chǔ)器。在其他實(shí)施例中,存儲(chǔ)器可用其他方式耦合,例如,直接耦合到總線控制器14。如圖1所示,示例性的非易失性存儲(chǔ)器30,31,32,33可以是各種技術(shù)的以及具有相應(yīng)的能力。如圖1所示,非易失性存儲(chǔ)器30可被實(shí)現(xiàn)為R0M(只讀存儲(chǔ)器)并且其中可以記錄POST (上電自檢)40和CSS (核心系統(tǒng)軟件)41,以及例如DD (設(shè)備驅(qū)動(dòng)程序)的其他組件。仍然參考圖1,另一非易失性存儲(chǔ)器31可被實(shí)現(xiàn)為具有一體盤(pán)驅(qū)動(dòng)機(jī)制31的盤(pán)控制器?;诒P(pán)的非易失性存儲(chǔ)器可典型地包含MBR(主引導(dǎo)記錄)51,和OS(操作系統(tǒng)軟件)52和更多的包括程序和數(shù)據(jù)的內(nèi)容。再次參考圖1,第三和第四非易失性存儲(chǔ)器32,33可包含各種組件。典型地,所述非易失性存儲(chǔ)器之一可被實(shí)現(xiàn)為閃速存儲(chǔ)器或SDM(安全數(shù)字存儲(chǔ)器),并且被用于存儲(chǔ)主要由POST使用的系統(tǒng)配置信息,該P(yáng)OST可典型地被包含在BIOS (基本輸入輸出系統(tǒng)固件)42中。閃速存儲(chǔ)器通常實(shí)施為面向塊(block oriented)類(lèi)型的EEPR0M(電可擦除可編程只讀存儲(chǔ)器)。其他軟件組件(例如來(lái)自Phoenix Technologies Ltd.的 Hyperspace )可被存儲(chǔ)在任一非易失性存儲(chǔ)器中,例如第三非易失性存儲(chǔ)器32可包含超級(jí)管理器程序61 (也稱(chēng)為VMM(虛擬機(jī)監(jiān)控器))和/或稱(chēng)為Appliance 62 (或小應(yīng)用程序)的相對(duì)較小的應(yīng)用程序的拷貝。雖然固件和軟件可被存儲(chǔ)在非易失性存儲(chǔ)器中,但是在執(zhí)行前,通常通過(guò)本領(lǐng)域熟知的面向塊的設(shè)備驅(qū)動(dòng)程序或通過(guò)影子存儲(chǔ)器技術(shù)將其轉(zhuǎn)移到系統(tǒng)存儲(chǔ)器16。例外地, 指令(尤其是用于早期的計(jì)算機(jī)設(shè)置的POST指令)可直接從ROM等中執(zhí)行,例如用于實(shí)現(xiàn)影子存儲(chǔ)器操作本身的指令。通過(guò)合并和許多改變,圖1的非易失性存儲(chǔ)器可包含用于執(zhí)行在下面參考其他圖而描述的步驟或動(dòng)作的指令(固件和軟件)。圖2是舉例說(shuō)明當(dāng)實(shí)施本發(fā)明的實(shí)施例時(shí)由電子設(shè)備執(zhí)行的步驟的流程圖,其從上電狀況200開(kāi)始。圖2完全是示例性的,并且在本發(fā)明的一般范圍內(nèi)許多可替換實(shí)施例是可能的。而且,圖2是相當(dāng)高級(jí)的并且以下參考其他圖示描述進(jìn)一步的細(xì)節(jié)。
在步驟210,作為提升(bring up)硬件的早期動(dòng)作,初始化硬件,以便可達(dá)到其他能力。然后接著開(kāi)始POST (上電自檢)220,其具有許多未顯示在圖2中的特征。在POST過(guò)程中的某個(gè)點(diǎn)處,存在人為干預(yù)240的時(shí)機(jī)230以允許手動(dòng)重配置非易失性存儲(chǔ)器參數(shù),例如迷你SDM(迷你安全數(shù)字存儲(chǔ)器)。典型地,這之后是返回到加電初始化序列210的開(kāi)始處。在步驟250,檢查是否請(qǐng)求超級(jí)管理器服務(wù),例如Phoenix Technologies Ltd. Hypercore .這種請(qǐng)求可以是引導(dǎo)時(shí)間服務(wù),例如可以響應(yīng)于BIOS配置參數(shù)。由此做出確定(步驟260),如果超級(jí)管理器服務(wù)沒(méi)有被請(qǐng)求,那么在步驟270,執(zhí)行常規(guī)的存儲(chǔ)器設(shè)置, 在步驟280例如引導(dǎo)加載OS (操作系統(tǒng)),并且在步驟299從BIOS放棄控制(在這個(gè)例子中將控制傳到0S)。在步驟300,超級(jí)管理器服務(wù)已經(jīng)被請(qǐng)求,并且在下面參考圖3討論響應(yīng)的 Hypercore設(shè)置和超級(jí)管理器引導(dǎo)加載。在那之后完成設(shè)置299。圖3示出了依照本發(fā)明實(shí)施例的具有超級(jí)管理器引導(dǎo)加載和關(guān)聯(lián)動(dòng)作的 Hypercore設(shè)置,并且起始300于開(kāi)始Hypercore設(shè)置。典型地,在執(zhí)行的這個(gè)階段,指令代碼是BIOS的一部分或其他固件,并且可被影子復(fù)制(shadow)在存儲(chǔ)器中。在步驟303,在SMM(系統(tǒng)管理存儲(chǔ)器)分區(qū)中為HV(超級(jí)管理器)安全數(shù)據(jù)而分配空間。在時(shí)間上較少使用的CPU模式一系統(tǒng)管理模式中訪問(wèn)SMM存儲(chǔ)器,該模式打算用于例如CPU溫度監(jiān)控之類(lèi)的低級(jí)服務(wù)。接下來(lái),在步驟305,從空閑存儲(chǔ)器中為HV (超級(jí)管理器)例如PVMM(Phoenix虛擬機(jī)監(jiān)控器)分配空間。在所示的例子中,該分配可以是來(lái)自TSEG(存儲(chǔ)器段的頂部)RAM空間。這個(gè)新分配的空間可以被稱(chēng)為PVMMS (Phoenix虛擬機(jī)監(jiān)控器段)。在步驟310,從非易失性存儲(chǔ)器(例如閃速存儲(chǔ)器)向PVMMS加載HSC (超級(jí)管理器起動(dòng)代碼)。軟件重定位技術(shù)是本領(lǐng)域熟知的,包括把調(diào)整過(guò)的基地址應(yīng)用到偏移和相似技術(shù)以使得代碼獨(dú)立于絕對(duì)存儲(chǔ)器地址。在實(shí)施例中,HSC在Intel X86和相似的小字節(jié)序CPU架構(gòu)中主要在大真實(shí)模式(Big Real Mode)(也稱(chēng)為非真實(shí)或平坦真實(shí)模式)下執(zhí)行。在一些實(shí)施方式中,尤其在其中支持Unix 隱語(yǔ)的環(huán)境中,代碼的重定位也被稱(chēng)為加載。嚴(yán)格地講,加載比重定位略寬泛,因?yàn)樗槐匕ǖ刂氛{(diào)整-即使在大部分情形下進(jìn)行這種調(diào)整。在實(shí)施例中,該HSC然后可以操作(步驟315)以加載HV(超級(jí)管理器)程序。有時(shí),HV不被直接加載,而是改為加載加載器,所述加載器操作從而例如以級(jí)聯(lián)加載布置加載 HV。HV程序是本領(lǐng)域中常見(jiàn)的,它們被用于創(chuàng)建和主控(host)VM(虛擬機(jī))環(huán)境,在該環(huán)境中,基本上能夠在計(jì)算機(jī)中“裸”(即沒(méi)有HV)運(yùn)行的程序由HV主控。眾所周知VM是一種用于防止VM的實(shí)例之間的可見(jiàn)性的機(jī)制,以致于運(yùn)行在VM中的程序不會(huì)“意識(shí)”到它們?cè)谟?jì)算機(jī)里在相似的對(duì)等程序之中不是單獨(dú)的(事實(shí)的可見(jiàn)性)。雖然沒(méi)有在圖3中示出,控制然后可從HSC返回到BIOS線程,其中系統(tǒng)存儲(chǔ)器 (RAM)被分配以用于進(jìn)一步的空間需要,例如用于ACPI (高級(jí)配置和電源接口)的空間。典型地,BIOS代碼的新近動(dòng)作是建立(圖3,步驟320) “存儲(chǔ)器堆”,也被稱(chēng)為“空閑存儲(chǔ)區(qū)”。該堆往往由可供操作系統(tǒng)和它們加載的程序利用的基本上所有的空閑存儲(chǔ)區(qū) (通常為RAM)組成。在計(jì)算機(jī)科學(xué)中,動(dòng)態(tài)存儲(chǔ)器分配是在計(jì)算機(jī)程序的運(yùn)行時(shí)期間用于該程序的存儲(chǔ)器存儲(chǔ)區(qū)域的分配。它也可以被視為一種在許多數(shù)據(jù)和代碼片段之間分布有限的存儲(chǔ)器資源的所有權(quán)的方式。在本發(fā)明實(shí)施例中,該堆明確地排除專(zhuān)門(mén)用于HV 的存儲(chǔ)器,這用于消除(或充分減小)如從后來(lái)加載的程序尤其是從通用操作系統(tǒng)(例如 MicrosoftWindows ⑧或 Linux )看到的 HV 的可見(jiàn)性。在實(shí)施例中,在建立堆之后,BIOS將把控制傳遞回HSC,HSC然后將加載和啟動(dòng)HV 的受保護(hù)的和/或虛擬存儲(chǔ)器模式。典型地,一起行動(dòng)的HV和/或BIOS將從用于BIOS配置的存儲(chǔ)器(或某個(gè)其他隱藏良好的非易失性存儲(chǔ)器)中讀取參數(shù)導(dǎo)向(steering)信息, 該信息可被用于將堆劃分(步驟325)為專(zhuān)門(mén)用于多個(gè)VM的存儲(chǔ)器。因此,使得用于引導(dǎo)導(dǎo)向的信息對(duì)于HSC或HV可用,或是直接可用或是通過(guò)它們的相應(yīng)加載器可用。仍然參考圖3,在步驟330,加載超級(jí)管理器程序;典型地它可以由HSC加載。在其他實(shí)施例中,該超級(jí)管理器可在分配和/或劃分存儲(chǔ)器堆(步驟320,325)之前被加載。在一個(gè)實(shí)施方式中,HSC可運(yùn)行在CPU大真實(shí)模式下,但HV可主要地或完全地運(yùn)行在更普通的CPU模式(例如受保護(hù)的或虛擬存儲(chǔ)器模式)中。進(jìn)入HV時(shí)離開(kāi)真實(shí)模式的步驟335 主要是實(shí)施方式特定的。因此在步驟340中能夠使用VM的存儲(chǔ)器堆分區(qū)信息,HV可以著手繼續(xù)建立VM。 在步驟345,稱(chēng)為Appliance或小應(yīng)用程序的小型應(yīng)用程序可從非易失性存儲(chǔ)器加載,該非易失性存儲(chǔ)器是為了該目的而留出的,或者否則與典型地是硬盤(pán)驅(qū)動(dòng)器的主非易失性存儲(chǔ)器相分離且被保護(hù)以不受其影響。當(dāng)然,HV加載的程序典型地可以(如果它們希望這樣的話)將它們的存儲(chǔ)器分配當(dāng)作它自己的堆,并且可以在各種應(yīng)用、設(shè)備驅(qū)動(dòng)程序等之間進(jìn)一步對(duì)其進(jìn)行劃分。此時(shí),HV可遵循非HV CPU引導(dǎo)加載過(guò)程的路徑,例如,在步驟350,其可以發(fā)出19h 中斷。該19h中斷然后被代碼“捕獲”,該代碼(步驟355)可以從主非易失性存儲(chǔ)器(典型地為硬盤(pán))加載MBR并傳遞控制(步驟360)給使用MBR發(fā)現(xiàn)的程序(并且該程序例如可以是包括在MBR中的引導(dǎo)-加載器,或它可以是MBR為其包含某種形式的間接尋址信息(例如“盤(pán)指針”)的程序)。在步驟399,這完成了分配空間以用于加載和運(yùn)行HSC和HV以及 HV主控的appliance和/或主OS程序的動(dòng)作。當(dāng)然,多數(shù)的HV做的遠(yuǎn)多于這里所述的,如本領(lǐng)域中熟知的,包括1-0(輸入-輸出)請(qǐng)求(不管尋址到硬件還是設(shè)備驅(qū)動(dòng)程序)的虛擬化和其他系統(tǒng)請(qǐng)求的半虛擬化。 例如,在x86架構(gòu)中,HV可掛鉤到中斷15h,以致于它可以虛擬化熟知的” Int. 15h/EAX = E820h”存儲(chǔ)器請(qǐng)求,以使得OS看得見(jiàn)堆中它自己的分區(qū)但看不見(jiàn)整個(gè)堆。BIOS典型地將提供對(duì)整個(gè)堆的可見(jiàn)性,并且HV可用以防止這種可見(jiàn)性(除了源自該HV自身的請(qǐng)求之外 (或至少不是來(lái)自被該HV加載的代碼里,也不是來(lái)自駐留于該堆內(nèi)的代碼里)。因此,一旦其具有控制,該HV可保持對(duì)計(jì)算機(jī)的控制,直到下一個(gè)系統(tǒng)重置,該重置常常是響應(yīng)于SMM(系統(tǒng)管理模式)控制的干預(yù)(其典型地用于例如過(guò)熱檢測(cè)或初期系統(tǒng)關(guān)機(jī)之類(lèi)的主要事件)。圖4示出了利用本發(fā)明的HV執(zhí)行的虛擬化的例子。在步驟400,響應(yīng)于存儲(chǔ)器請(qǐng)求而進(jìn)入服務(wù)功能,該請(qǐng)求將被HV虛擬化。這種存儲(chǔ)器請(qǐng)求典型地被實(shí)現(xiàn)為用于Int 15h
9軟件中斷的ISR(中斷服務(wù)例程)(步驟410)。在步驟420,檢查該請(qǐng)求是否是所支持的特定格式的存儲(chǔ)器信息請(qǐng)求(Int = 15h/ EAX = E820h),許多所述格式是本領(lǐng)域所熟知的。如果中斷請(qǐng)求是某種其他種類(lèi)的,那么在步驟425退出控制到該鏈的下一個(gè)ISR。然后假設(shè)要服務(wù)于該請(qǐng)求,那么在步驟430,確定哪一個(gè)VM正在請(qǐng)求存儲(chǔ)器信息。 如果該請(qǐng)求根本不是來(lái)自m步驟440),那么該請(qǐng)求不被虛擬化,而是在步驟445,其僅僅被傳遞給該鏈中的另一個(gè)ISR(如果有的話)去操作。在步驟450,針對(duì)Int = 15h/EAX = E820h請(qǐng)求,編譯(compile)響應(yīng)但對(duì)于特定的VM而虛擬化該響應(yīng)。實(shí)際上,為了編譯針對(duì)存儲(chǔ)器請(qǐng)求的虛擬化響應(yīng)的目的,該VM的存儲(chǔ)器分區(qū)被當(dāng)做好像它是整個(gè)堆。在步驟499,這完成了服務(wù)虛擬機(jī)存儲(chǔ)器請(qǐng)求的ISR?,F(xiàn)在轉(zhuǎn)到圖5,這描述了當(dāng)執(zhí)行與運(yùn)行時(shí)轉(zhuǎn)換到減少設(shè)施的、精簡(jiǎn)形式的操作關(guān)聯(lián)的Hypercore服務(wù)時(shí)HV的動(dòng)作。這種能力是對(duì)上面參考其他附圖描述的設(shè)施的補(bǔ)充并且所述設(shè)施在很大程度上啟用這種能力。本發(fā)明的示例性實(shí)施例可使用減少設(shè)施模式,其中經(jīng)由MBR加載的主OS被掛起/ 禁用,并且關(guān)聯(lián)的(能量貧乏)硬盤(pán)被置于功率下降(power-down)狀態(tài),但是Appliance 程序繼續(xù)使用半導(dǎo)體非易失性存儲(chǔ)器運(yùn)行。然而,具有低功率操作的減少設(shè)施狀態(tài)的使用僅僅是一個(gè)例子,這兩個(gè)方面潛在地是彼此相當(dāng)可分的。在圖5的步驟500,進(jìn)入用于切換到低功率狀態(tài)操作的過(guò)程。在步驟510,通知計(jì)算機(jī)用戶該計(jì)算機(jī)將進(jìn)入Applicance模式,可能是對(duì)請(qǐng)求這樣做的激勵(lì)進(jìn)行應(yīng)答。然后在步驟520,發(fā)送信號(hào)給被加載到VM中的(一個(gè)或多個(gè))OS以警告它們結(jié)束可能包括完成未決1-0(輸入-輸出)操作的操作。典型地,在機(jī)器根據(jù)硬件和/或軟件實(shí)施選擇進(jìn)入“睡眠狀態(tài)”或類(lèi)似狀態(tài)的方面,OS具有用于該目的的鉤子。在步驟530,做出請(qǐng)求以關(guān)閉磁盤(pán),以及可能減小CPU計(jì)時(shí)速度或活動(dòng)的多處理器 CPU的數(shù)目,或其他適當(dāng)?shù)墓?jié)能改變。典型地,由運(yùn)行在SMM中的軟件處理這種控制,假如這樣的話,可能有必要發(fā)出具有針對(duì)所需服務(wù)的適當(dāng)請(qǐng)求塊的SMI。在步驟540,要被掛起的VM被標(biāo)記為不具有或幾乎不具有可用的CPU時(shí)間(以及換入的虛擬存儲(chǔ)器頁(yè)面等等)的份額。以及在步驟599,通過(guò)合適的退出/返回代碼,恢復(fù)Appliance執(zhí)行。關(guān)于圖6A,可以使用多種可能的介質(zhì)630將電子設(shè)備10中的計(jì)算機(jī)指令作為制造的固件和/或軟件計(jì)算機(jī)產(chǎn)品610而分發(fā),使用存儲(chǔ)裝置記錄器620在介質(zhì)630上記錄所述指令。通常,在與部署本發(fā)明的那些產(chǎn)品一樣復(fù)雜的產(chǎn)品中,在分發(fā)和制造有關(guān)產(chǎn)品時(shí), 多于一個(gè)的介質(zhì)可以被使用。為了清楚起見(jiàn),在圖6A中示出僅一個(gè)介質(zhì),但可使用多于一個(gè)的介質(zhì),并且單個(gè)計(jì)算機(jī)產(chǎn)品可被分到多個(gè)介質(zhì)中。關(guān)于圖6B,附加地,并且尤其是因?yàn)橐蛱鼐W(wǎng)使用的增加,計(jì)算機(jī)產(chǎn)品610通過(guò)將它們編碼成調(diào)制為波的信號(hào)而被分發(fā)。然后,所得的波形可以由發(fā)射器640發(fā)射,作為調(diào)制的電磁載波650傳播,并且被接收器660接收。在接收后,它們可以被解調(diào)并且在存儲(chǔ)器或存儲(chǔ)設(shè)備11中信號(hào)被解碼成計(jì)算機(jī)產(chǎn)品611的另一版本或拷貝。其他拓?fù)湓O(shè)備也可被用于構(gòu)造本發(fā)明的可替換實(shí)施例。
權(quán)利要求
1.一種用于初始化計(jì)算機(jī)(10)以支持虛擬機(jī)的方法,包括步驟 分配讀寫(xiě)存儲(chǔ)器的第一區(qū)域;從第一非易失性存儲(chǔ)器向該第一區(qū)域加載 第一程序,其選自由以下項(xiàng)組成的列表 超級(jí)管理器程序和操作以加載超級(jí)管理器程序到所述第一區(qū)域中的程序; 創(chuàng)建排除所述第一區(qū)域的讀寫(xiě)存儲(chǔ)器的存儲(chǔ)器堆;和傳遞控制給所述第一程序。
2.根據(jù)權(quán)利要求1的方法,進(jìn)一步包含響應(yīng)于計(jì)算機(jī)內(nèi)的BIOS程序所知的參數(shù)劃分該堆以創(chuàng)建多個(gè)分區(qū);并且使劃分結(jié)果對(duì)第一程序可見(jiàn)。
3.根據(jù)權(quán)利要求1或2的方法,其中所述分配和加載基本上在CPU(中央處理器單元) 真實(shí)模式下操作;以及超級(jí)管理器程序至少部分地在受保護(hù)模式或虛擬地址模式下操作。
4.根據(jù)權(quán)利要求1到3中任一項(xiàng)的方法,進(jìn)一步包含響應(yīng)于超級(jí)管理器程序的動(dòng)作, 執(zhí)行第二程序,該第二程序或者被包含在MBR(主引導(dǎo)記錄)中或者使用該MBR定位,其中該MBR駐留在第二非易失性存儲(chǔ)器上。
5.根據(jù)權(quán)利要求1到4中任一項(xiàng)的方法,進(jìn)一步包含使得第一區(qū)域?qū)χ辽僖恍┏绦虿豢梢?jiàn),所述至少一些程序晚于第一程序,但在更晚的重置條件出現(xiàn)在計(jì)算機(jī)中之前被加載到計(jì)算機(jī)中。
6.根據(jù)權(quán)利要求1到5中任一項(xiàng)的方法,進(jìn)一步包含使得第一區(qū)域?qū)?lái)自位于該堆中的指令的存儲(chǔ)器位置查詢(xún)不可見(jiàn)。
7.根據(jù)權(quán)利要求2的方法,其中超級(jí)管理器程序 創(chuàng)建用于第一虛擬機(jī)的第一環(huán)境;向第一虛擬機(jī)分配從所述多個(gè)分區(qū)中選擇的分區(qū),并且虛擬化來(lái)自第一虛擬機(jī)的對(duì)關(guān)于讀寫(xiě)存儲(chǔ)器可用性的信息的請(qǐng)求。
8.根據(jù)權(quán)利要求1的方法,其中超級(jí)管理器程序 創(chuàng)建用于第一虛擬機(jī)的第一環(huán)境;創(chuàng)建用于第二虛擬機(jī)的第二環(huán)境;使用MBR(主引導(dǎo)記錄),虛擬化被加載到第一環(huán)境中的第二程序,其中所述MBR駐留在第二非易失性存儲(chǔ)器上;并且虛擬化從非易失性存儲(chǔ)器加載到第二環(huán)境中的第三程序,該非易失性存儲(chǔ)器選自由以下存儲(chǔ)器組成的列表第一非易失性存儲(chǔ)器和第三非易失性存儲(chǔ)器。
9.根據(jù)權(quán)利要求8的方法,其中超級(jí)管理器程序通過(guò)以下方式對(duì)激勵(lì)作出響應(yīng) 去激活主控第二非易失性存儲(chǔ)器的設(shè)備;并且去激活第一虛擬機(jī)或第二程序。
10.根據(jù)權(quán)利要求1到9中任一項(xiàng)的方法,進(jìn)一步包括,在加載第一程序之前從電磁波中解調(diào)信號(hào)的動(dòng)作,所述信號(hào)中編碼有計(jì)算機(jī)指令,所述指令當(dāng)被計(jì)算機(jī)執(zhí)行時(shí)通過(guò)權(quán)利要求1中定義的步驟使得該計(jì)算機(jī)變得初始化。
11.根據(jù)權(quán)利要求10的方法,進(jìn)一步包括,在解調(diào)的動(dòng)作之前將所述信號(hào)調(diào)制到被壓印到有形介質(zhì)中的電磁波上的動(dòng)作。
12.一種制造的計(jì)算機(jī)程序產(chǎn)品,包含至少一個(gè)其中編碼有計(jì)算機(jī)指令的計(jì)算機(jī)可讀介質(zhì),所述指令當(dāng)被至少一個(gè)計(jì)算機(jī)執(zhí)行時(shí),通過(guò)包含以下動(dòng)作的步驟使得所述至少一個(gè)計(jì)算機(jī)變得初始化以支持虛擬機(jī) 分配讀寫(xiě)存儲(chǔ)器的第一區(qū)域; 從第一非易失性存儲(chǔ)器向該第一區(qū)域加載 第一程序,其選自由以下項(xiàng)組成的列表 超級(jí)管理器程序和操作以加載超級(jí)管理器程序到所述第一區(qū)域中的程序; 創(chuàng)建排除所述第一區(qū)域的讀寫(xiě)存儲(chǔ)器的存儲(chǔ)器堆;和傳遞控制給所述第一程序。
13.根據(jù)權(quán)利要求12的制造的計(jì)算機(jī)程序產(chǎn)品,其中所述動(dòng)作進(jìn)一步包含響應(yīng)于計(jì)算機(jī)內(nèi)的BIOS程序所知的參數(shù)劃分該堆以創(chuàng)建多個(gè)分區(qū);并且使劃分結(jié)果對(duì)第一程序可見(jiàn)。
14.一種電子設(shè)備(10),包含: 用于執(zhí)行編程指令的裝置(12);和用于存儲(chǔ)計(jì)算機(jī)指令的非易失性裝置,所述指令當(dāng)被所述用于執(zhí)行的裝置執(zhí)行時(shí),通過(guò)包含以下動(dòng)作的步驟使所述電子設(shè)備變得初始化以支持虛擬機(jī) 分配讀寫(xiě)存儲(chǔ)器的第一區(qū)域; 從第一非易失性存儲(chǔ)器向該第一區(qū)域加載 第一程序,其選自由以下項(xiàng)組成的列表 超級(jí)管理器程序和操作以加載超級(jí)管理器程序到所述第一區(qū)域中的程序; 創(chuàng)建排除所述第一區(qū)域的讀寫(xiě)存儲(chǔ)器的存儲(chǔ)器堆;和傳遞控制給所述第一程序。
15.根據(jù)權(quán)利要求14的電子設(shè)備,其中所述動(dòng)作進(jìn)一步包含響應(yīng)于所述電子設(shè)備內(nèi)的BIOS程序所知的參數(shù)劃分該堆以創(chuàng)建多個(gè)分區(qū);并且使劃分結(jié)果對(duì)第一程序可見(jiàn)。
全文摘要
涉及個(gè)人計(jì)算機(jī)和共享相似架構(gòu)的設(shè)備的技術(shù)被公開(kāi)。特別示出了一種用于在超級(jí)管理器程序和相關(guān)應(yīng)用程序中實(shí)現(xiàn)改善的性能和安全性的方法和設(shè)備,所述改善的性能和安全性是通過(guò)使用多個(gè)非易失性存儲(chǔ)器實(shí)現(xiàn)的。
文檔編號(hào)G06F9/455GK102203735SQ200980125784
公開(kāi)日2011年9月28日 申請(qǐng)日期2009年6月25日 優(yōu)先權(quán)日2008年7月2日
發(fā)明者K·巴德 申請(qǐng)人:惠普公司