專(zhuān)利名稱(chēng):通過(guò)部分虛擬化機(jī)器的統(tǒng)一存儲(chǔ)設(shè)備的制作方法
通過(guò)部分虛擬化機(jī)器的統(tǒng)一存儲(chǔ)設(shè)備
背景技術(shù):
1.領(lǐng)域本發(fā)明的實(shí)施例一般涉及計(jì)算機(jī)系統(tǒng),且尤其涉及系統(tǒng)固件和虛擬化。2.描述歷史上,包括個(gè)人計(jì)算機(jī)(PC)的計(jì)算機(jī)系統(tǒng)已經(jīng)使用很多不同設(shè)備用于數(shù)據(jù)存儲(chǔ)。每種存儲(chǔ)設(shè)備提供某些能力且表現(xiàn)出諸如連接接口、訪問(wèn)速度、容量等特性。例如,存儲(chǔ)設(shè)備包括軟盤(pán)驅(qū)動(dòng)器、硬盤(pán)驅(qū)動(dòng)器、固態(tài)盤(pán)驅(qū)動(dòng)器、CDROM驅(qū)動(dòng)器、通用串行總線(xiàn)(USB) “拇指(thumb)”驅(qū)動(dòng)器等等。正不斷開(kāi)發(fā)新的存儲(chǔ)設(shè)備。為實(shí)現(xiàn)對(duì)每種新存儲(chǔ)設(shè)備的訪問(wèn),操作系統(tǒng)(OS)也必須發(fā)展,通常是通過(guò)提供設(shè)備驅(qū)動(dòng)程序軟件。設(shè)備驅(qū)動(dòng)程序軟件允許通過(guò) OS通信的應(yīng)用程序從存儲(chǔ)設(shè)備讀取數(shù)據(jù)和向存儲(chǔ)設(shè)備寫(xiě)入數(shù)據(jù)。隨著存儲(chǔ)設(shè)備的數(shù)量和類(lèi)型激增,OS開(kāi)發(fā)方面的負(fù)擔(dān)變得很大。此外,經(jīng)由設(shè)備驅(qū)動(dòng)程序?qū)Υ鎯?chǔ)設(shè)備進(jìn)行訪問(wèn)可能是不安全的,由此允許惡意用戶(hù)讀取和/或修改輸入/輸出(I/O)通信量。
從本發(fā)明的以下詳細(xì)描述,本發(fā)明的特征和優(yōu)點(diǎn)將變得顯而易見(jiàn),其中圖1是在根據(jù)本發(fā)明的實(shí)施例的計(jì)算系統(tǒng)中的安全飛地會(huì)話(huà)(Secure Enclave session)的圖;圖2是根據(jù)本發(fā)明的實(shí)施例的計(jì)算系統(tǒng)的圖;圖3是根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)器映射的圖;圖4是根據(jù)本發(fā)明的實(shí)施例的部分虛擬化機(jī)器的圖;以及圖5是根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)處理的流程圖。
具體實(shí)施例方式本發(fā)明的實(shí)施例包括通過(guò)實(shí)現(xiàn)部分虛擬化機(jī)器(partial virtualization machine (PVM))來(lái)提供統(tǒng)一存儲(chǔ)設(shè)備的系統(tǒng)和方法。PVM可用于在耦合到計(jì)算系統(tǒng)的各種物理存儲(chǔ)設(shè)備上生成至少一個(gè)虛擬存儲(chǔ)設(shè)備。取代為每個(gè)所支持的存儲(chǔ)設(shè)備提供特定設(shè)備驅(qū)動(dòng)程序,OS可訪問(wèn)至統(tǒng)一存儲(chǔ)設(shè)備的接口。PVM可在安全飛地會(huì)話(huà)內(nèi)執(zhí)行,從而提供優(yōu)于現(xiàn)有的存儲(chǔ)設(shè)備接口的安全性。在本發(fā)明的實(shí)施例中,統(tǒng)一存儲(chǔ)設(shè)備可以是在引導(dǎo)時(shí)間以及運(yùn)行時(shí)間中可用的,且可以獨(dú)立于OS。在本說(shuō)明書(shū)中對(duì)本發(fā)明的“一個(gè)實(shí)施例”或“實(shí)施例”的引用意味著結(jié)合該實(shí)施例描述的特定特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個(gè)實(shí)施例中。在本說(shuō)明書(shū)各處出現(xiàn)的短語(yǔ)“在一個(gè)實(shí)施例中”并不一定均指代同一實(shí)施例。對(duì)于與特定存儲(chǔ)設(shè)備連接的0S,通常由設(shè)備的制造者定義用于該存儲(chǔ)設(shè)備的標(biāo)準(zhǔn) I/O接口。存在多年來(lái)已經(jīng)使用的若干種I/O接口,諸如可在誦.113. org/獲得的并行PC/ AT附件/AT附件分組接口(ATAPI)(通常稱(chēng)為ΑΤΑ) (ΑΤΑΡΙ用作ATA的一部分,在INCITS 317-1998 中,具有分組接口擴(kuò)展的 AT 附件(AT Attachment with Packet InterfaceExtension,ATA/ATAPI-4))。在ansi. org可用的小型計(jì)算機(jī)系統(tǒng)接口(SCSI)、通用串行總線(xiàn)(USB)、串行ATA(SATA)及其它。在本發(fā)明的一個(gè)實(shí)施例中,可使用ATA接口。在一個(gè)實(shí)施例中,PVM針對(duì)耦合到計(jì)算系統(tǒng)的每種不同物理存儲(chǔ)設(shè)備來(lái)列舉虛擬ATA設(shè)備以供OS訪問(wèn)。這些存儲(chǔ)設(shè)備可在引導(dǎo)時(shí)間或在之后的任意時(shí)間耦合到計(jì)算系統(tǒng),或者可從系統(tǒng)去除。 例如,USB拇指驅(qū)動(dòng)器可由PVM在引導(dǎo)時(shí)間或在運(yùn)行時(shí)間中列舉為集成驅(qū)動(dòng)電子(IDE)硬盤(pán)。因此,例如,將USB拇指驅(qū)動(dòng)器熱插入計(jì)算系統(tǒng)可導(dǎo)致USB拇指驅(qū)動(dòng)器對(duì)OS呈現(xiàn)為作為硬盤(pán)可見(jiàn)。為了保護(hù)統(tǒng)一存儲(chǔ)設(shè)備免受至I/O的惡意訪問(wèn),在本發(fā)明的實(shí)施例中,可在計(jì)算系統(tǒng)的處理器封裝內(nèi)的安全飛地(SE)會(huì)話(huà)內(nèi)執(zhí)行PVM。圖1是在根據(jù)本發(fā)明的實(shí)施例的計(jì)算系統(tǒng)中的安全飛地會(huì)話(huà)(Secure Enclave session)的圖。為了解釋的目的,在圖1 中以簡(jiǎn)化形式示出計(jì)算系統(tǒng)100的部分。處理器封裝102包括在安全周界內(nèi)的一個(gè)或多個(gè)處理核。在一個(gè)實(shí)施例中,安全周界可以是處理器封裝邊界(在圖1中示為粗線(xiàn))。處理器封裝與存儲(chǔ)器104和平臺(tái)控制中樞(PCH) 106連接。PCH與一個(gè)或多個(gè)I/O設(shè)備108 連接。安全飛地能力的實(shí)現(xiàn)包括提供若干處理器指令,其產(chǎn)生安全飛地并強(qiáng)制隔離并提供對(duì)指令執(zhí)行和數(shù)據(jù)訪問(wèn)的保護(hù)??蓪?duì)處理器封裝外的數(shù)據(jù)和代碼進(jìn)行加密和完整性檢查。處理器封裝內(nèi)的數(shù)據(jù)和代碼可能是未加密的且受到模式和高速緩存保護(hù)機(jī)制保護(hù)。 在實(shí)施例中,數(shù)據(jù)不從安全飛地“泄露”。處理器封裝內(nèi)的微代碼保存飛地內(nèi)的飛地狀態(tài)信息,用于中斷、異常、捕集和虛擬機(jī)管理器(VMM)退出。在題為“Method and Apparatus to Provide Secure Application Execution(提供安全應(yīng)用執(zhí)行的方法和裝置)”的由 Francis X. McKeen等人于2009年12月22日提交到美國(guó)專(zhuān)利商標(biāo)局作為受理局的PCT專(zhuān)利申請(qǐng)PCT/US2009/069212中描述了安全飛地能力,該申請(qǐng)通過(guò)引用結(jié)合與此。圖2是根據(jù)本發(fā)明的實(shí)施例的計(jì)算系統(tǒng)的圖。在計(jì)算系統(tǒng)200中,一個(gè)或多個(gè)應(yīng)用程序202在計(jì)算系統(tǒng)上執(zhí)行。計(jì)算系統(tǒng)包括諸如操作系統(tǒng)(OS) 204和計(jì)算平臺(tái)206之類(lèi)的常規(guī)組件。計(jì)算平臺(tái)包括處理器封裝208、存儲(chǔ)器210和固件212以及未示出的其它常規(guī)組件。計(jì)算系統(tǒng)200還包括一個(gè)或多個(gè)1/0設(shè)備214 (例如,硬盤(pán)驅(qū)動(dòng)器、⑶-ROM驅(qū)動(dòng)器、DVD 驅(qū)動(dòng)器、USB拇指驅(qū)動(dòng)器、藍(lán)光播放器、固態(tài)驅(qū)動(dòng)器、網(wǎng)絡(luò)接口控制器(NIC)等)。在本發(fā)明的實(shí)施例中,當(dāng)應(yīng)用程序需要從1/0設(shè)備之一讀取數(shù)據(jù)或向其寫(xiě)入數(shù)據(jù)時(shí),應(yīng)用程序202與 OS 204連接。OS然后調(diào)用1/0驅(qū)動(dòng)程序組件216來(lái)處理1/0請(qǐng)求。1/0驅(qū)動(dòng)程序216轉(zhuǎn)換 OS請(qǐng)求并將該請(qǐng)求轉(zhuǎn)發(fā)到部分虛擬機(jī)(PVM) 218.在本發(fā)明的實(shí)施例中,1/0驅(qū)動(dòng)程序調(diào)用PVM 218來(lái)進(jìn)一步處理1/0請(qǐng)求并與所選的1/0設(shè)備214通信。與高端服務(wù)器計(jì)算系統(tǒng)中使用的完全虛擬化和準(zhǔn)虛擬化的概念不同, 本文中使用的部分虛擬化表示僅計(jì)算系統(tǒng)的硬件組件中的一些被虛擬化,而其它的未被虛擬化。虛擬化的組件可由0S(通過(guò)其1/0驅(qū)動(dòng)程序組件)經(jīng)由PVM直接訪問(wèn)。因此,在一個(gè)實(shí)施例中,PVM包括輕量級(jí)虛擬機(jī)(LVMM)且可作為代碼組件包括在系統(tǒng)固件212中。在比典型的LVMM簡(jiǎn)單的變型中,本發(fā)明的實(shí)施例的PVM不包括服務(wù)OS (Service OS)。通過(guò)僅提供部分虛擬化,與先前的虛擬化方案相比,PVM提供更好的性能,使得PVM能夠用于低性能計(jì)算系統(tǒng)。在虛擬機(jī)管理器(VMM)通常整體地捕集并表示系統(tǒng)的情況下,PVM旨在是非常輕量的解決方案(也可簡(jiǎn)單地稱(chēng)為微管理程序),其中實(shí)際上平臺(tái)的非常小的子集被虛擬化,使得1/0周期的捕集限于特定范圍(例如,與對(duì)特定控制器的訪問(wèn)相關(guān)聯(lián)),但可能不提供對(duì)抗無(wú)效存儲(chǔ)器訪問(wèn)的其它“保護(hù)”,或者否則可能更具入侵性、需要更多系統(tǒng)資源或慢的平臺(tái)操作的其它事物。在實(shí)施例中,PVM可生成類(lèi)似于計(jì)算系統(tǒng)具有的其它設(shè)備的稱(chēng)為虛擬I/O設(shè)備217 的統(tǒng)一存儲(chǔ)設(shè)備的實(shí)例用于0S,且OS將無(wú)限制地檢測(cè)并使用它們。在一個(gè)實(shí)施例中,被實(shí)例化的虛擬I/O設(shè)備217是虛擬ATA設(shè)備。因此,在物理I/O設(shè)備(例如,SATA控制器)和虛擬I/O設(shè)備之間具有1 1映射。可被實(shí)例化的虛擬I/O設(shè)備的數(shù)量可依賴(lài)于實(shí)現(xiàn)。由于這種部分虛擬化,一次僅可運(yùn)行一個(gè)OS實(shí)例,這與同時(shí)運(yùn)行多個(gè)操作系統(tǒng)實(shí)例的典型完全虛擬模式不同。這種情況是因?yàn)樵诓糠痔摂M化情況中,僅非常小的系統(tǒng)子集被實(shí)現(xiàn)在PVM中。當(dāng)計(jì)算平臺(tái)被完全虛擬化時(shí),整個(gè)計(jì)算平臺(tái)被包圍在軟件模型中且可被重復(fù)復(fù)制,使得系統(tǒng)可被分成η塊,運(yùn)行OS目標(biāo)的η個(gè)實(shí)例。在PVM中,資源可能是有限的。在本發(fā)明的實(shí)施例中,PVM操作為OS和底層硬件之間的轉(zhuǎn)換器,且通信“語(yǔ)言”可以是ATA接口規(guī)范的(當(dāng)虛擬I/O設(shè)備是虛擬ATA設(shè)備時(shí))。在其它實(shí)施例中,虛擬I/O設(shè)備可針對(duì)其它接口規(guī)范而實(shí)例化。當(dāng)OS需要從統(tǒng)一存儲(chǔ)設(shè)備(在此示例中是虛擬ATA設(shè)備)讀取數(shù)據(jù)或向其寫(xiě)入數(shù)據(jù)時(shí),遵循ATA接口規(guī)范,OS 204中的I/O驅(qū)動(dòng)程序216通過(guò)讀或?qū)懱囟ǖ腎/O端口(諸如0xlF7或0x3F7)來(lái)將ATA命令發(fā)送到統(tǒng)一存儲(chǔ)設(shè)備。PVM 218 然后將這些請(qǐng)求變換成對(duì)底層物理I/O設(shè)備(例如,USB拇指驅(qū)動(dòng)、⑶-ROM驅(qū)動(dòng)器等)所理解的那些命令的讀或?qū)懖僮?。處理器封裝支持的虛擬技術(shù)(VT)可用于實(shí)現(xiàn)PVM。VT是本領(lǐng)域公知的且在本文中將不再進(jìn)一步予以描述。通過(guò)在處理器中編程虛擬機(jī)控制結(jié)構(gòu)(VMCQ (本領(lǐng)域已知的), PVM能夠捕獲這些相關(guān)的I/O端口訪問(wèn),因此在使用本發(fā)明的實(shí)施例時(shí)不需要修改OS內(nèi)核。 得益于VT,PVM是獨(dú)立于OS的,這表示與計(jì)算系統(tǒng)兼容的所有OS可運(yùn)行在啟用PVM的計(jì)算系統(tǒng)上。為了實(shí)例化統(tǒng)一存儲(chǔ)設(shè)備,可在計(jì)算系統(tǒng)初始化處理期間(即,在引導(dǎo)時(shí)間中)并且在OS加載之前,由系統(tǒng)固件開(kāi)始PVM。在實(shí)施例中,PVM至少執(zhí)行若干初始化步驟。在OS加載之前,系統(tǒng)固件212保留一定范圍的存儲(chǔ)器以供PVM使用。圖3是根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)器映射的圖。在實(shí)施例中,可如圖所示的劃分計(jì)算系統(tǒng)的物理存儲(chǔ)器空間。OS可訪問(wèn)OS范圍302。在一個(gè)實(shí)施例中,該范圍可在存儲(chǔ)器的起始處開(kāi)始。可保留共享的存儲(chǔ)空間304用于在OS和PVM之間的數(shù)據(jù)交換。在一個(gè)實(shí)施例中,共享的存儲(chǔ)器空間可在比OS范圍更連續(xù)的存儲(chǔ)器中。在一個(gè)實(shí)施例中,PVM存儲(chǔ)器空間306可保留在存儲(chǔ)器的頂部。在其它實(shí)施例中,還可使用其它存儲(chǔ)器分配和布置。PVM存儲(chǔ)器對(duì)OS隱藏。 OS不能訪問(wèn)PVM存儲(chǔ)器306。PVM列舉至少一個(gè)虛擬I/O控制器并當(dāng)啟動(dòng)期間OS掃描關(guān)于虛擬I/O控制器的信息時(shí)報(bào)告I/O設(shè)備。在一個(gè)實(shí)施例中,虛擬I/O控制器是虛擬ATA控制器且I/O設(shè)備是ATA 設(shè)備。一旦對(duì)I/O的請(qǐng)求被PVM捕獲,處理I/O請(qǐng)求的任務(wù)可由稱(chēng)為I/O控制器仿真器和與實(shí)例化虛擬I/O設(shè)備對(duì)應(yīng)的I/O設(shè)備仿真器(以下描述)的PVM組件執(zhí)行。底層物理I/ 0設(shè)備的存在和對(duì)底層物理I/O設(shè)備的訪問(wèn)可通過(guò)PVM隱藏。物理I/O設(shè)備不應(yīng)被OS檢測(cè)到以避免PVM和OS的沖突訪問(wèn)。在OS發(fā)起之前,建立I/O控制器的軟件模型,使得設(shè)備的 “發(fā)現(xiàn)” / “配置” / “交互”由于其被虛擬化正常發(fā)生,但是實(shí)際上OS (在不知道的情況下) 與真實(shí)I/O硬件的軟件仿真交互。PVM控制OS中的定時(shí)器中斷,使得當(dāng)執(zhí)行I/O請(qǐng)求轉(zhuǎn)換任務(wù)時(shí),PVM能夠從OS “竊取”處理器執(zhí)行周期。一旦已經(jīng)執(zhí)行這些初始化步驟,則PVM等待來(lái)自O(shè)S的I/O請(qǐng)求。PVM包括若干功能組件來(lái)處理I/O請(qǐng)求從虛擬I/O設(shè)備至底層物理I/O設(shè)備的轉(zhuǎn)換。圖4是根據(jù)本發(fā)明的實(shí)施例的部分虛擬化機(jī)器400的圖.I/O端口捕集器組件402捕獲由OS發(fā)出的對(duì)I/O端口的讀或?qū)懖僮?。然后可將I/O請(qǐng)求傳送到仿真器。I/O控制器仿真器組件404處理作為對(duì)實(shí)例化虛擬I/O控制器的I/O控制請(qǐng)求的I/O請(qǐng)求。在虛擬I/O 控制器包括虛擬ATA控制器的實(shí)施例中,I/O控制器仿真器組件包括ATA控制器仿真器。I/ 0設(shè)備仿真器組件406仿真被訪問(wèn)的特定物理I/O設(shè)備并處理作為I/O訪問(wèn)請(qǐng)求的I/O請(qǐng)求。在實(shí)施例中,I/O設(shè)備仿真器包括ATA設(shè)備仿真器,且被仿真的設(shè)備可以是諸如虛擬硬盤(pán)、虛擬CDROM等支持ATA接口的任何設(shè)備。兩個(gè)仿真器包括事件驅(qū)動(dòng)狀態(tài)機(jī),且I/O訪問(wèn)是仿真器的動(dòng)作的觸發(fā)源。取決于依賴(lài)于實(shí)現(xiàn)的使用情況,不同的設(shè)備驅(qū)動(dòng)程序408可包括在PVM中。例如,如果用戶(hù)想要在USB拇指驅(qū)動(dòng)器上實(shí)例化虛擬硬盤(pán),則USB拇指驅(qū)動(dòng)器的設(shè)備驅(qū)動(dòng)程序和相應(yīng)的USB控制器可包括在PVM中。設(shè)備驅(qū)動(dòng)程序至少部分地基于I/O 控制請(qǐng)求和I/O訪問(wèn)請(qǐng)求與物理I/O設(shè)備通信。圖4中示出的其他PVM組件包括幫助將I/O請(qǐng)求和訪問(wèn)轉(zhuǎn)換至物理I/O設(shè)備的互補(bǔ)模塊。其它組件包括調(diào)度器410,以調(diào)度在對(duì)虛擬化域的若干訪問(wèn)期間可能發(fā)生的事件。 例如,可以有一 I/O請(qǐng)求,該I/O請(qǐng)求出現(xiàn)四次,只要一個(gè)正常保留在PVM的上下文中即可。 如果已經(jīng)完成僅一部分I/O事務(wù),則調(diào)度器可跟蹤并管理它連同其它待決的事務(wù)。還包括用于管理PVM存儲(chǔ)空間的分配和取消分配的存儲(chǔ)器管理412、用于處理由隱藏的I/O設(shè)備觸發(fā)的中斷的中斷管理414以及用于對(duì)OS隱藏I/O設(shè)備的PCI設(shè)備管理416。這些PVM組件可類(lèi)似于OS內(nèi)的相應(yīng)模塊,但較小、較快且較簡(jiǎn)單。在一個(gè)實(shí)施例中,所處理的I/O接口可以是ATA接口。在PVM內(nèi)作為虛擬ATA控制器的統(tǒng)一存儲(chǔ)設(shè)備的實(shí)現(xiàn)可由于若干原因而有用。第一,大多數(shù)可用操作系統(tǒng)包括ATA 設(shè)備驅(qū)動(dòng)程序并在ATA存儲(chǔ)設(shè)備(例如,硬盤(pán))上存儲(chǔ)系統(tǒng)或用戶(hù)數(shù)據(jù)。ATA設(shè)備驅(qū)動(dòng)程序是基本的設(shè)備驅(qū)動(dòng)程序且長(zhǎng)遠(yuǎn)來(lái)看將是大多數(shù)操作系統(tǒng)的一部分。第二,ATA接口定義異步方法來(lái)讀寫(xiě)數(shù)據(jù),其包括直接存儲(chǔ)器訪問(wèn)(DMA)。得益于這種DMA模式,PVM異步地處理讀/寫(xiě)請(qǐng)求,這表示當(dāng)訪問(wèn)大量數(shù)據(jù)時(shí),PVM將不阻礙OS運(yùn)行。當(dāng)ATA讀/寫(xiě)命令被PVM 捕獲時(shí),PVM調(diào)用適當(dāng)?shù)脑O(shè)備驅(qū)動(dòng)程序來(lái)開(kāi)始讀/寫(xiě)進(jìn)程。PVM在數(shù)據(jù)準(zhǔn)備好傳送之前不會(huì)等待。相反,PVM立即將控制返回給OS。在下一定時(shí)器片(timer slice),PVM竊取處理器周期來(lái)執(zhí)行數(shù)據(jù)的讀/寫(xiě)。在數(shù)據(jù)準(zhǔn)備好用于OS之后,PVM創(chuàng)建中斷來(lái)通知OS。第三,ATA 規(guī)范支持即插即用特征。當(dāng)從計(jì)算平臺(tái)去除底層物理I/O設(shè)備時(shí),PVM具有通過(guò)改變虛擬 ATA控制器的狀態(tài)寄存器來(lái)通知OS該事件的能力。圖5是根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)處理的流程圖。在502,OS 204經(jīng)由I/O驅(qū)動(dòng)程序216向所選I/O端口寫(xiě)入,指示需要執(zhí)行讀或?qū)懻?qǐng)求。在504,PVM 218的I/O端口捕集器402檢測(cè)到I/O端口的寫(xiě)入并“鉤住”寫(xiě)操作。在504,PVM還開(kāi)始安全飛地會(huì)話(huà)以保護(hù)隨后的I/O處理。盡管PVM在安全飛地內(nèi)操作,但PVM的處理受到保護(hù),且OS和應(yīng)用程序不能看到PVM正在做什么(即,PVM活動(dòng)不能被跟蹤)。在506,如果I/O請(qǐng)求參考I/O控制器寄存器(可用I/O端口之一),則處理繼續(xù)到框508。典型的請(qǐng)求可包括ReadBlock (讀塊)、WriteBlock (寫(xiě)塊)和ConfigureDevice (配置設(shè)備)。請(qǐng)求可根據(jù)控制器的類(lèi)型而改變。其它不經(jīng)常使用的請(qǐng)求可包括復(fù)位和轉(zhuǎn)儲(chǔ)清除,且可根據(jù)I/O硬件而改變。在508,I/O控制器仿真器404處理I/O請(qǐng)求。接下來(lái),在510,PVM更新其內(nèi)部PVM 狀態(tài)機(jī)以反映I/O請(qǐng)求的處理。在一個(gè)實(shí)施例中,狀態(tài)可以是如下1)排隊(duì)的事務(wù)(隊(duì)列中的事務(wù),但還未起作用;2)待決事務(wù)(已經(jīng)活動(dòng)但還未完成的事務(wù));這通常在完成請(qǐng)求需要若干迭代時(shí)發(fā)生(這可能不是罕見(jiàn)的)。當(dāng)在PVM上下文中時(shí)它還是待運(yùn)行的下一事務(wù);以及3)完成的事務(wù)(已經(jīng)無(wú)差錯(cuò)地處理的事務(wù))。事務(wù)可另外作為FIFO(先入/先出)隊(duì)列被處理——其中#2被處理(如果存在的話(huà))然后將處理#1最老的事務(wù)(排隊(duì)狀態(tài))。在512,處理繼續(xù),且PVM停止當(dāng)前安全飛地會(huì)話(huà)并將控制返回給OS。在506,如果I/O請(qǐng)求不參考I/O控制器寄存器,則在框514處理繼續(xù)。在514,如果I/O請(qǐng)求參考I/ 0命令塊端口(可用I/O端口之一),則處理繼續(xù)到框516。如果I/O請(qǐng)求不參考I/O命令塊端口,則在512,PVM停止當(dāng)前安全飛地會(huì)話(huà)并將控制返回給OS。在516,I/O設(shè)備仿真器 406處理I/O請(qǐng)求。在518,I/O設(shè)備仿真器確定I/O請(qǐng)求是否要讀或?qū)懘罅繑?shù)據(jù)(什么是 “大”取決于實(shí)現(xiàn))。如果讀或?qū)懻?qǐng)求是針對(duì)大量數(shù)據(jù)的,則在520,PVM調(diào)度器410從OS竊取CPU周期。這表示由于以某種頻率基礎(chǔ)的周期性定時(shí)器,PVM的實(shí)現(xiàn)將調(diào)度要被再次訪問(wèn)的PVM,使得它能處理所請(qǐng)求的事務(wù)。因?yàn)橥ǔVM很大程度上是被動(dòng)的,當(dāng)事務(wù)處于待決狀態(tài)時(shí),PVM將確保它獲得更多關(guān)注,使得它能夠通過(guò)使系統(tǒng)頻繁地切換到其上下文來(lái)處理事務(wù)。它不能在整個(gè)時(shí)間中保持在上下文中,因?yàn)榇蠖鄶?shù)OS不能在從其“竊取”計(jì)算機(jī)平臺(tái)達(dá)延長(zhǎng)的時(shí)間段時(shí)維持穩(wěn)定性。因此,PVM將獲得足夠的處理器周期來(lái)完成其工作,但不足以引起OS上下文內(nèi)的資源分配問(wèn)題。在522,PVM開(kāi)始設(shè)備驅(qū)動(dòng)程序408中的適當(dāng)?shù)囊粋€(gè)以讀或?qū)憯?shù)據(jù)。如果在518要讀或?qū)懙臄?shù)據(jù)量不大,則跳過(guò)框520和522。PVM具有在將控制返回給OS之前允許系統(tǒng)保持在PVM上下文中多長(zhǎng)時(shí)間的先驗(yàn)知識(shí)。因?yàn)镻VM將與真實(shí)I/O硬件直接交互,所以PVM將知道特定事務(wù)是否已經(jīng)通過(guò)I/O硬件完成。在任一情況下,在510,PVM更新其內(nèi)部PVM狀態(tài)機(jī)以反映I/O請(qǐng)求的處理。最后,在512,處理繼續(xù), 且PVM停止當(dāng)前安全飛地會(huì)話(huà)并將控制返回給OS。利用包括在計(jì)算系統(tǒng)中的本發(fā)明的實(shí)施例,可啟用各種使用模型。例如,對(duì)于很多移動(dòng)因特網(wǎng)設(shè)備(MID),沒(méi)有足夠的存儲(chǔ)器來(lái)安裝內(nèi)部CDROM驅(qū)動(dòng)器,因此計(jì)算系統(tǒng)供應(yīng)商需要為用戶(hù)開(kāi)發(fā)另外的軟件工具來(lái)安裝操作系統(tǒng)(通常經(jīng)由可引導(dǎo)USB拇指驅(qū)動(dòng)器)。利用本發(fā)明的實(shí)施例,PVM可配置成使PVM至少部分地基于USB拇指驅(qū)動(dòng)器中的圖像文件來(lái)生成虛擬CDROM驅(qū)動(dòng)器,從而允許以傳統(tǒng)方式安裝OS。OS的很多安裝程序具有關(guān)于他們從哪里安裝的推斷。本發(fā)明的實(shí)施例實(shí)現(xiàn)獲取駐留在USB拇指驅(qū)動(dòng)器上的線(xiàn)性信息集的能力, 并且使PVM為其呈現(xiàn)CD軟件模型,使得底層信息似乎源自CD設(shè)備,但實(shí)際上當(dāng)OS認(rèn)為其正與⑶設(shè)備對(duì)話(huà)時(shí)PVM充當(dāng)至物理USB設(shè)備的中轉(zhuǎn)。通常OS從特定位置處的硬盤(pán)驅(qū)動(dòng)器加載,且OS假設(shè)這是事實(shí)。然而,在某些情況下,可能期望從另一個(gè)存儲(chǔ)設(shè)備(例如,從USB拇指驅(qū)動(dòng)器)加載0S。這種使用情況在某些計(jì)算系統(tǒng)的支持工程師間是流行的。一旦計(jì)算系統(tǒng)的OS變得損壞且不能開(kāi)始,支持工程師可開(kāi)始OS的純凈版以便診斷計(jì)算系統(tǒng)的硬件和軟件。傳統(tǒng)上,由于關(guān)于OS加載位置(例如,在硬盤(pán)驅(qū)動(dòng)器上)的假設(shè),這種診斷環(huán)境需要由計(jì)算系統(tǒng)的制造商開(kāi)發(fā)或定制。然而,在本發(fā)明的實(shí)施例中,支持工程師可配置PVM基于USB拇指驅(qū)動(dòng)器生成虛擬硬盤(pán)驅(qū)動(dòng)器,且純凈OS可從USB拇指驅(qū)動(dòng)器直接開(kāi)始,而無(wú)需制造商的進(jìn)一步開(kāi)發(fā)努力。PVM還可用于保護(hù)存儲(chǔ)設(shè)備供應(yīng)商的知識(shí)產(chǎn)權(quán)。在一個(gè)示例中,Linux內(nèi)核具有通用公共許可證(General Public License (GPL)),因此為L(zhǎng)inux開(kāi)發(fā)的任何內(nèi)核模塊也應(yīng)對(duì)內(nèi)核模塊的代碼開(kāi)放資源。如果供應(yīng)商想要在Linux上啟用該供應(yīng)商的存儲(chǔ)設(shè)備,則供應(yīng)商需要開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序,這通常是內(nèi)核模塊。該內(nèi)核模塊的源代碼然后可變?yōu)楣驳模?這是供應(yīng)商不期望的。在本發(fā)明的實(shí)施例中,供應(yīng)商可開(kāi)發(fā)用于供應(yīng)商的存儲(chǔ)設(shè)備的包括在PVM中的設(shè)備驅(qū)動(dòng)程序,且PVM可配置成生成供應(yīng)商的物理存儲(chǔ)設(shè)備上的虛擬ATA設(shè)備。 因?yàn)楣?yīng)商的設(shè)備驅(qū)動(dòng)程序在PVM中,且經(jīng)由安全飛地保護(hù)PVM的操作,所以供應(yīng)商的設(shè)備驅(qū)動(dòng)程序受到保護(hù)。因此,供應(yīng)商通過(guò)避免開(kāi)發(fā)專(zhuān)用于GPL OS的設(shè)備驅(qū)動(dòng)程序來(lái)保護(hù)其知識(shí)產(chǎn)權(quán)。擴(kuò)展該使用模型,供應(yīng)商可僅開(kāi)發(fā)一個(gè)設(shè)備驅(qū)動(dòng)程序用于PVM,且各種OS能夠經(jīng)由PVM訪問(wèn)供應(yīng)商的存儲(chǔ)設(shè)備,從而代替供應(yīng)商為每個(gè)所支持的OS開(kāi)發(fā)單獨(dú)的設(shè)備驅(qū)動(dòng)程序。另外,如果底層物理設(shè)備是硬盤(pán)驅(qū)動(dòng)器,則PVM可用于在硬盤(pán)驅(qū)動(dòng)器上保留存儲(chǔ)區(qū),并且隱藏該區(qū)域用于特定用途,諸如系統(tǒng)恢復(fù)或數(shù)據(jù)保護(hù)。本領(lǐng)域的技術(shù)人員將意識(shí)到在不背離本發(fā)明的范圍的情況下實(shí)現(xiàn)用于經(jīng)由PVM 提供統(tǒng)一存儲(chǔ)設(shè)備的不同方案的選擇。本領(lǐng)域的技術(shù)人員還將意識(shí)到所公開(kāi)的發(fā)明可應(yīng)用到純軟件或硬件輔助的可采用計(jì)算機(jī)系統(tǒng)或編程環(huán)境的部分或完全虛擬化的不同類(lèi)型的虛擬化環(huán)境和虛擬化系統(tǒng)。此外,本領(lǐng)域的技術(shù)人員將意識(shí)到本發(fā)明的實(shí)施例可按其他方式以及利用其他編程語(yǔ)言來(lái)實(shí)現(xiàn)。本文所述的技術(shù)不限于任何特定的硬件或軟件配置;他們可在任何計(jì)算或處理環(huán)境中的找到應(yīng)用。這些技術(shù)可實(shí)現(xiàn)在嵌入在硬件、軟件或固件組件或上述組合中的邏輯中。 這些技術(shù)可實(shí)現(xiàn)在可編程機(jī)器上執(zhí)行的程序中,該可編程機(jī)器諸如移動(dòng)或固定計(jì)算機(jī)、個(gè)人數(shù)字助理、機(jī)頂盒、蜂窩電話(huà)和尋呼機(jī)以及其它電子設(shè)備,每個(gè)均包括處理器、處理器可讀的存儲(chǔ)介質(zhì)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入設(shè)備以及一個(gè)或多個(gè)輸出設(shè)備。程序代碼被施加到利用輸入設(shè)備輸入的數(shù)據(jù)以執(zhí)行所述功能并生成輸出信息。輸出信息可被應(yīng)用到一個(gè)或多個(gè)輸出設(shè)備。本領(lǐng)域的技術(shù)人員可意識(shí)到本發(fā)明可利用包括多核處理器、多處理器系統(tǒng)、小型計(jì)算機(jī)、大型計(jì)算機(jī)等的各種計(jì)算機(jī)系統(tǒng)配置來(lái)實(shí)施。本發(fā)明還可在分布式計(jì)算環(huán)境中實(shí)施,其中任務(wù)可由通過(guò)通信網(wǎng)絡(luò)連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行。每個(gè)程序可按高級(jí)過(guò)程或面向?qū)ο蟮木幊陶Z(yǔ)言來(lái)實(shí)現(xiàn)以與處理系統(tǒng)通信。然而, 如果需要的話(huà),程序可按匯編或機(jī)器語(yǔ)言來(lái)實(shí)現(xiàn)。在任何情況下,語(yǔ)言可被編譯或解釋。程序指令可被用于使利用這些指令編程的通用或?qū)S锰幚硐到y(tǒng)執(zhí)行本文所述的操作。替代地,操作可通過(guò)包含用于執(zhí)行這些操作的硬接線(xiàn)邏輯的特定硬件部件來(lái)執(zhí)行,或通過(guò)已編程計(jì)算機(jī)組件和定制硬件組件的任何組合來(lái)執(zhí)行。本文所述的方法可作為計(jì)算機(jī)程序產(chǎn)品來(lái)提供,該計(jì)算機(jī)程序產(chǎn)品可包括具有指令存儲(chǔ)于其上的機(jī)器可讀介質(zhì),該指令用于編程處理系統(tǒng)或其它電子設(shè)備以執(zhí)行該方法。本文所使用的術(shù)語(yǔ)“機(jī)器可讀介質(zhì)”應(yīng)包括能夠存儲(chǔ)和編碼指令序列供機(jī)器執(zhí)行并導(dǎo)致機(jī)器執(zhí)行本文所述的任一種方法的任何介質(zhì)。術(shù)語(yǔ)“機(jī)器可讀介質(zhì)”因此應(yīng)包括但不限于固態(tài)存儲(chǔ)器、光盤(pán)和磁盤(pán)。此外,本領(lǐng)域中通常將一種形式或另一種形式的軟件(例如,程序、過(guò)程、進(jìn)程、應(yīng)用、模塊、邏輯等等)表述為采取動(dòng)作或?qū)е陆Y(jié)果。這種表達(dá)僅僅是闡述通過(guò)處理系統(tǒng)執(zhí)行軟件以使處理器執(zhí)行動(dòng)作或產(chǎn)生結(jié)果的簡(jiǎn)化方式。 盡管已經(jīng)參考所示實(shí)施例描述本發(fā)明,但不打算以限制的含義解釋本說(shuō)明書(shū)。對(duì)本發(fā)明所述技術(shù)領(lǐng)域中的技術(shù)人員顯而易見(jiàn)的所示實(shí)施例的各種修改以及本發(fā)明的其它實(shí)施例被認(rèn)為落在本發(fā)明的范圍內(nèi)。
權(quán)利要求
1.一種包括處理器封裝的計(jì)算系統(tǒng),包括 操作系統(tǒng);物理I/O設(shè)備;以及部分虛擬機(jī),用于實(shí)例化與物理I/O設(shè)備對(duì)應(yīng)的虛擬I/O設(shè)備,所述虛擬I/O設(shè)備具有虛擬I/O控制器,包括I/O端口捕集器組件,用于捕獲由操作系統(tǒng)對(duì)虛擬I/O設(shè)備的I/O請(qǐng)求; 耦合到所述I/O端口捕集器組件的I/O控制器仿真器組件,用于當(dāng)I/O請(qǐng)求包括I/O 控制請(qǐng)求時(shí)處理對(duì)虛擬I/O控制器的I/O控制請(qǐng)求;耦合到所述I/O端口捕集器組件的I/O設(shè)備仿真器組件,用于當(dāng)I/O請(qǐng)求包括I/O訪問(wèn)請(qǐng)求時(shí)處理用于與虛擬I/O設(shè)備通信的I/O訪問(wèn)請(qǐng)求;以及耦合到I/O控制器仿真器組件和I/O設(shè)備仿真器組件的設(shè)備驅(qū)動(dòng)程序組件,用于至少部分地基于I/O控制請(qǐng)求和I/O訪問(wèn)請(qǐng)求與物理I/O設(shè)備通信;其中部分虛擬機(jī)在所述處理器封裝內(nèi)的安全飛地會(huì)話(huà)內(nèi)執(zhí)行,防止操作系統(tǒng)對(duì)部分虛擬機(jī)的訪問(wèn)。
2.如權(quán)利要求1所述的計(jì)算系統(tǒng),其特征在于,所述虛擬I/O設(shè)備包括虛擬ATA設(shè)備, 所述虛擬I/O控制器包括虛擬ATA控制器,且所述物理I/O設(shè)備包括ATA設(shè)備。
3.如權(quán)利要求1所述的計(jì)算系統(tǒng),其特征在于,所述虛擬I/O設(shè)備包括虛擬SCSI設(shè)備, 所述虛擬I/O控制器包括虛擬SCSI控制器,且所述物理I/O設(shè)備包括SCSI設(shè)備。
4.如權(quán)利要求1所述的計(jì)算系統(tǒng),其特征在于,所述虛擬I/O設(shè)備包括虛擬USB設(shè)備, 所述虛擬I/O控制器包括虛擬USB控制器,且所述物理I/O設(shè)備包括USB設(shè)備。
5.如權(quán)利要求1所述的計(jì)算系統(tǒng),其特征在于,還包括存儲(chǔ)器,所述存儲(chǔ)器被劃分成用于由操作系統(tǒng)使用的第一部分、用于在操作系統(tǒng)和部分虛擬機(jī)之間的共享數(shù)據(jù)的第二部分、以及用于由部分虛擬機(jī)使用的第三部分,其中第三部分對(duì)操作系統(tǒng)隱藏。
6.如權(quán)利要求1所述的計(jì)算系統(tǒng),其特征在于,所述物理I/O設(shè)備對(duì)操作系統(tǒng)隱藏。
7.如權(quán)利要求1所述的計(jì)算系統(tǒng),其特征在于,所述部分虛擬機(jī)是獨(dú)立于OS的。
8.在具有操作系統(tǒng)和處理器封裝的計(jì)算系統(tǒng)中,一種提供與物理I/O設(shè)備對(duì)應(yīng)的虛擬 I/O設(shè)備的方法,包括由部分虛擬機(jī)實(shí)例化虛擬I/O設(shè)備,所述虛擬I/O設(shè)備具有虛擬I/O控制器,部分虛擬機(jī)在處理器封裝內(nèi)的安全飛地會(huì)話(huà)內(nèi)執(zhí)行,從而防止操作系統(tǒng)對(duì)部分虛擬機(jī)的訪問(wèn); 由部分虛擬機(jī)的I/O端口捕集器組件捕捉從操作系統(tǒng)至虛擬I/O設(shè)備的I/O請(qǐng)求; 當(dāng)I/O請(qǐng)求包括對(duì)虛擬I/O控制器的I/O控制請(qǐng)求時(shí),由部分虛擬機(jī)的I/O控制器仿真器組件處理I/O控制請(qǐng)求;以及當(dāng)I/O請(qǐng)求包括I/O訪問(wèn)請(qǐng)求時(shí),由部分虛擬機(jī)的I/O設(shè)備仿真器組件處理I/O訪問(wèn)請(qǐng)求,I/O訪問(wèn)設(shè)備仿真器與關(guān)聯(lián)于物理I/O設(shè)備的部分虛擬機(jī)的設(shè)備驅(qū)動(dòng)程序通信以執(zhí)行I/O訪問(wèn)請(qǐng)求。
9.如權(quán)利要求8所述的方法,其特征在于,所述虛擬I/O設(shè)備包括虛擬ATA設(shè)備,所述虛擬I/O控制器包括虛擬ATA控制器,且所述物理I/O設(shè)備包括ATA設(shè)備。
10.如權(quán)利要求8所述的方法,其特征在于,所述虛擬I/O設(shè)備包括虛擬SCSI設(shè)備,所述虛擬I/O控制器包括虛擬SCSI控制器,且所述物理I/O設(shè)備包括SCSI設(shè)備。
11.如權(quán)利要求8所述的方法,其特征在于,所述虛擬I/O設(shè)備包括虛擬USB設(shè)備,所述虛擬I/O控制器包括虛擬USB控制器,且所述物理I/O設(shè)備包括USB設(shè)備。
12.如權(quán)利要求8所述的方法,其特征在于,所述計(jì)算系統(tǒng)包括存儲(chǔ)器,所述存儲(chǔ)器被劃分成用于由操作系統(tǒng)使用的第一部分、用于在操作系統(tǒng)和部分虛擬機(jī)之間的共享數(shù)據(jù)的第二部分、以及用于由部分虛擬機(jī)使用的第三部分,其中第三部分對(duì)操作系統(tǒng)隱藏。
13.如權(quán)利要求8所述的方法,其特征在于,還包括通過(guò)部分虛擬機(jī)對(duì)操作系統(tǒng)隱藏物理I/O設(shè)備。
14.如權(quán)利要求8所述的方法,其特征在于,所述部分虛擬機(jī)是獨(dú)立于OS的。
15.如權(quán)利要求8所述的方法,其特征在于,還包括在捕捉到I/O請(qǐng)求后由部分虛擬機(jī)開(kāi)始安全飛地會(huì)話(huà),且在處理I/O請(qǐng)求后在將控制返回給操作系統(tǒng)之前由部分虛擬機(jī)停止安全飛地會(huì)話(huà)。
全文摘要
本發(fā)明公開(kāi)了一種通過(guò)部分虛擬化機(jī)器的統(tǒng)一存儲(chǔ)設(shè)備。在具有處理器封裝、操作系統(tǒng)和物理I/O設(shè)備的計(jì)算系統(tǒng)中,提供部分虛擬機(jī)以實(shí)例化與物理I/O設(shè)備對(duì)應(yīng)的虛擬I/O設(shè)備,該虛擬I/O設(shè)備具有虛擬I/O控制器。部分虛擬機(jī)包括I/O端口捕集器,用于捕獲由操作系統(tǒng)對(duì)虛擬I/O設(shè)備的I/O請(qǐng)求;耦合到I/O端口捕集器的I/O控制器仿真器,用于當(dāng)I/O請(qǐng)求包括I/O控制請(qǐng)求時(shí)處理對(duì)虛擬I/O控制器的I/O控制請(qǐng)求;耦合到I/O端口捕集器組件的I/O設(shè)備仿真器,用于當(dāng)I/O請(qǐng)求包括I/O訪問(wèn)請(qǐng)求時(shí)處理用于與虛擬I/O設(shè)備通信的I/O訪問(wèn)請(qǐng)求;以及耦合到I/O控制器仿真器和I/O設(shè)備仿真器的設(shè)備驅(qū)動(dòng)程序,用于至少部分地基于I/O控制請(qǐng)求和I/O訪問(wèn)請(qǐng)求與物理I/O設(shè)備通信。部分虛擬機(jī)在處理器封裝內(nèi)的安全飛地會(huì)話(huà)內(nèi)執(zhí)行,通過(guò)防止操作系統(tǒng)對(duì)部分虛擬機(jī)的訪問(wèn)來(lái)提高I/O會(huì)話(huà)的安全性。
文檔編號(hào)G06F9/455GK102289386SQ20111017906
公開(kāi)日2011年12月21日 申請(qǐng)日期2011年6月20日 優(yōu)先權(quán)日2010年6月21日
發(fā)明者F·黃, H·周, J·S·陳, M·A·羅斯曼, V·J·齊默, Y·錢(qián) 申請(qǐng)人:英特爾公司