專利名稱:虛擬化系統(tǒng)中關(guān)閉中斷的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)領(lǐng)域,尤其涉及虛擬化系統(tǒng)中關(guān)閉中斷的方法和裝置。
背景技術(shù):
為了防止重要的系統(tǒng)程序代碼執(zhí)行時不被打斷或者為了保證數(shù)據(jù)一致性,操作系統(tǒng)(Operating System, OS)需要執(zhí)行關(guān)閉中斷的操作。在非虛擬化的環(huán)境下,OS可直接關(guān)物理硬件中斷。然而,一旦部署了實時嵌入式虛擬化構(gòu)件即Hypervisor,中斷的分發(fā)便由Hypervisor統(tǒng)一管理,OS并不能直接去關(guān)閉物理硬件中斷。例如,在虛擬化系統(tǒng),多個客戶操作系統(tǒng)(Guest OS)會運(yùn)行在單個物理中央處理器(Central Processing Unit,CPU)上,單個Guest OS執(zhí)行關(guān)閉中斷時不能影響同一個物理CPU上其他Guest OS的運(yùn)行,這就需要由Hypervisor統(tǒng)一協(xié)調(diào)處理關(guān)閉中斷這一操作。在部署了 Hypervisor的虛擬化系統(tǒng)中,現(xiàn)有技術(shù)提供的一種關(guān)閉中斷方法是Hypervisor和Guest OS獨(dú)立編譯、鏈接映像,通過引導(dǎo)程序(BootLoader)將Hypervisor和Guest OS的映像加載到內(nèi)存,BootLoader啟動Hypervisor, Hypervisor再分別啟動各個Guest OS。由于在虛擬化系統(tǒng)中,中斷是由Hypervisor統(tǒng)一分發(fā),因此,需要Hypervisor提供中斷通知(Hyper Call)的通訊方式,即,Guest OS通過Hyper Call向Hypervisor發(fā)送關(guān)閉中斷的請求。Hypervisor收到關(guān)閉中斷的請求后,再設(shè)置禁止向相關(guān)Guest OS內(nèi)核分發(fā)中斷,即關(guān)閉中斷。Hyper Call—般應(yīng)用在不共享一個代碼段的跨映像接口調(diào)用的場景(例如,XEN提供的跨映像接口調(diào)用)以及不同特權(quán)級模式之間的接口調(diào)用的場景(例如,Linux提供的syscall調(diào)用)等,目前,在上述應(yīng)用場景下,Hyper Call存在多種實現(xiàn)方式,例如,通過消息通訊、通過中斷通訊或通過實現(xiàn)跨模式間的接口調(diào)用功能等。由于Hyper Call的實現(xiàn)方式一般都涉及對內(nèi)存和隊列等通用通訊機(jī)制的應(yīng)用,因此,如果Guest OS需要頻繁地執(zhí)行打開或關(guān)閉中斷這一操作,則上述現(xiàn)有技術(shù)提供的關(guān)閉中斷方法使得系統(tǒng)運(yùn)行效率較低。
發(fā)明內(nèi)容
本發(fā)明實施例提供虛擬化系統(tǒng)中關(guān)閉中斷的方法和裝置,以更好地支持Guest OS開/關(guān)中斷,同時降低對系統(tǒng)運(yùn)行效率的影響。本發(fā)明實施例提供一種虛擬化系統(tǒng)中關(guān)閉中斷的方法,所述方法包括向虛擬化操作系統(tǒng)Guest OS提供接口以使所述Guest OS調(diào)用所述接口將共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志,所述共享內(nèi)存為實時嵌入式虛擬化構(gòu)件Hypervisor與至少一個Guest OS共享并用于記錄中斷標(biāo)志的物理內(nèi)存,所述共享內(nèi)存中不同的Guest OS與所述Hypervisor共享的內(nèi)存空間互相隔離;檢查所述中斷標(biāo)志位寄存器;若所述中斷標(biāo)志位寄存器表明所述Guest OS需要關(guān)閉中斷,則禁止向所述Guest OS發(fā)送虛擬中斷。
本發(fā)明實施例提供一種虛擬化系統(tǒng)中關(guān)閉中斷的裝置,所述裝置包括接口提供模塊,用于向虛擬化操作系統(tǒng)Guest OS提供接口以使所述Guest OS調(diào)用所述接口將共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志,所述共享內(nèi)存為實時嵌入式虛擬化構(gòu)件Hypervisor與至少一個Guest OS共享并用于記錄中斷標(biāo)志的物理內(nèi)存,所述共享內(nèi)存中不同的Guest OS與所述Hypervisor共享的內(nèi)存空間互相隔離;標(biāo)志位檢查模塊,用于檢查所述中斷標(biāo)志位寄存器;中斷截止發(fā)送模塊,用于若所述標(biāo)志位檢查模塊檢查所述中斷標(biāo)志位寄存器表明所述Guest OS需要關(guān)閉中斷,則禁止向所述Guest OS發(fā)送虛擬中斷。從上述本發(fā)明實施例可知,由于實時嵌入式虛擬化構(gòu)件Hypervisor向虛擬化操作系統(tǒng)Guest OS提供接口,所述Guest OS可以將Hypervisor與至少一個Guest OS共享并用于記錄中斷標(biāo)志的物理內(nèi)存即共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志。與現(xiàn)有技術(shù)通過提供中斷通知的通訊方式關(guān)閉中斷的方法相比,本發(fā)明實施 例提供的方法不依賴Hypervisor與Guest OS共同編譯,Hypervisor不需與Guest OS共享代碼段;由于虛擬化層與Guest OS映像分離,對共享內(nèi)存的訪問通過虛擬地址進(jìn)行,因此,在關(guān)閉/打開中斷時速度快,系統(tǒng)運(yùn)行效率高。
為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對現(xiàn)有技術(shù)或?qū)嵤├枋鲋兴枰褂玫母綀D作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域技術(shù)人員來講,還可以如這些附圖獲得其他的附圖。圖I是本發(fā)明實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的方法流程示意圖;圖2是本發(fā)明實施例提供的單個物理CPU上運(yùn)行多個Guest OS和單個Guest OS運(yùn)行于多個物理CPU上的場景示意圖;圖3是本發(fā)明實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的裝置結(jié)構(gòu)示意圖;圖4是本發(fā)明另一實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的裝置結(jié)構(gòu)示意圖;圖5是本發(fā)明另一實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的裝置結(jié)構(gòu)示意圖;圖6a是本發(fā)明另一實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的裝置結(jié)構(gòu)示意圖;圖6b是本發(fā)明另一實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的裝置結(jié)構(gòu)示意圖;圖7是本發(fā)明另一實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的裝置結(jié)構(gòu)示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域技術(shù)人員所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。請參閱附圖1,是本發(fā)明實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的方法流程示意圖,主要包括步驟S101、步驟S102和步驟S103 S101,向虛擬化操作系統(tǒng)Guest OS提供接口以使所述Guest OS調(diào)用所述接口將共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志,所述共享內(nèi)存為實時嵌入式虛擬化構(gòu)件Hypervisor與至少一個Guest OS共享并用于記錄中斷標(biāo)志的物理內(nèi)存。
在本發(fā)明實施例中,Guest OS是一種虛擬化操作系統(tǒng),這類操作系統(tǒng)與一般操作系統(tǒng)不同之處在于,不是單個物理CPU上只運(yùn)行一個這樣的虛擬化操作系統(tǒng)或者一個這樣的虛擬化操作系統(tǒng)只運(yùn)行在單個物理CPU上,即不是直接運(yùn)行于硬件層(Hardware)之上,而是運(yùn)行于硬件層之上的實時嵌入式虛擬化構(gòu)件Hypervisor,如附圖2所示,是單個物理CPU上運(yùn)行多個Guest OS和單個Guest OS運(yùn)行于多個物理CPU上的場景示意圖。例如,Guest OS0 和 Guest OS1 通過 Hypervisor 運(yùn)行于物理 CPU。(Core。)上,而 Guest OSn 通過Hypervisor 運(yùn)行于物理 CPU1 (Core1)、物理 CPU2 (Core2)和物理 CPUn (Coren)上。與現(xiàn)有技術(shù)通過中斷通知(Hyper Cal I)的通訊方式關(guān)閉中斷不同,在本發(fā)明實施例中,實時嵌入式虛擬化構(gòu)件Hypervisor提供一層中間地址,這種中間地址以影子頁表來管理;由Guest OS建立Guest OS至中間地址的映射以及Hypervisor建立中間地址至物理內(nèi)存地址的映射,這里將Guest OS至中間地址的映射稱為第一層地址映射,將中間地址至物理內(nèi)存地址的映射稱為第二層地址映射。第一層地址映射的作用在于實時嵌入式虛擬化構(gòu)件Hypervisor可以感知實時嵌入式虛擬化構(gòu)件Hypervisor之上所有Guest OS對物理內(nèi)存的需求并統(tǒng)一管理,第二層地址映射的作用在于實時嵌入式虛擬化構(gòu)件Hypervisor可以根據(jù)Guest OS對物理內(nèi)存的需求,有規(guī)劃性地劃分物理內(nèi)存資源。建立了第一層地址映射和第二層地址映射之后,可以建立實時嵌入式虛擬化構(gòu)件Hypervisor與至少一個Guest OS共享并用于記錄中斷標(biāo)志的物理內(nèi)存。在以下的說明中,為了描述的方便,將實時嵌入式虛擬化構(gòu)件Hypervisor與至少一個Guest OS共享并用于記錄中斷標(biāo)志的物理內(nèi)存簡稱為“共享內(nèi)存”,顯然,共享內(nèi)存是物理內(nèi)存的一部分。如附圖3所示,是本發(fā)明實施例提供的方法中在物理內(nèi)存建立了共享內(nèi)存的示意圖。共享內(nèi)存可以被Hypervisor以及至少一個Guest OS共同訪問,并且,所述共享內(nèi)存中不同的Guest OS與所述Hypervisor共享的內(nèi)存空間互相隔離,即共享內(nèi)存中任意一個Guest OS與Hypervisor共享的內(nèi)存空間和另一個Guest OS與Hypervisor共享的內(nèi)存空間是互相隔離的。例如,在附圖3中,Guest OStl與Hypervisor共享并用于記錄中斷標(biāo)志的物理內(nèi)存即共享內(nèi)存中的“VMd中斷標(biāo)志位空間”、Guest OS1與Hypervisor共享并用于記錄中斷標(biāo)志的物理內(nèi)存即共享內(nèi)存中的“VMi中斷標(biāo)志位空間”以及Guest OS2與Hypervisor共享并用于記錄中斷標(biāo)志的物理內(nèi)存即共享內(nèi)存中的“ VM2中斷標(biāo)志位空間”是互相隔離的。作為本發(fā)明一個實施例,向虛擬化操作系統(tǒng)Guest OS提供接口以使所述Guest OS調(diào)用所述接口將共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志可以是實時嵌入式虛擬化構(gòu)件Hypervisor向Guest OS提供接口以使所述Guest OS調(diào)用所述接口,根據(jù)所述接口提供的中間地址信息,通過第一層地址映射訪問中間地址,根據(jù)所述中間地址并通過第二層地址映射訪問所述共享內(nèi)存,將與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志,例如,使用邏輯“0”表示關(guān)閉中斷,使用邏輯“I”表示打開中斷。需要說明的是,由于實時嵌入式虛擬化構(gòu)件Hypervisor建立了第一層地址映射和第二層地址映射,因此,Guest OS在設(shè)置中斷標(biāo)志時,雖然是通過前述第一層地址映射和實時嵌入式虛擬化構(gòu)件Hypervisor提供的接口訪問中間地址,然后,通過第二層地址映射最終訪問到共享內(nèi)存,但在系統(tǒng)運(yùn)行過程中,對Guest OS而言,與直接訪問共享內(nèi)存并沒有不同,即GuestOS認(rèn)為是直接訪問共享內(nèi)存,將與該Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志。S102,檢查所述中斷標(biāo)志位寄存器。作為本發(fā)明一個實施例,檢查所述中斷標(biāo)志位寄存器時,可以是執(zhí)行異常向量指定的異常處理函數(shù)以檢查所述中斷標(biāo)志位寄存器。具體地,硬件產(chǎn)生的物理中斷,例如,通用物理中斷或快速物理中斷等首先通過GIC路由到物理核,物理核上運(yùn)行Hypervisor程序,然后進(jìn)入到Hypervisor的異常向量表,并跳轉(zhuǎn)到Hypervisor的異常向量指定的異常處理函數(shù),在Hypervisor的中斷處理過程中檢查中斷標(biāo)志位寄存器的內(nèi)容。
在上述檢查中斷標(biāo)志位寄存器的實施例中,可以是按照實時嵌入式虛擬化構(gòu)件Hypervisor提供的時鐘,周期性地輪詢所述中斷標(biāo)志位寄存器,即主動檢查所述中斷標(biāo)志位寄存器,也可以是在硬件產(chǎn)生的物理中斷的觸發(fā)下,檢查所述中斷標(biāo)志位寄存器,即被動檢查所述中斷標(biāo)志位寄存器。S103,若所述中斷標(biāo)志位寄存器表明所述Guest OS需要關(guān)閉中斷,則禁止向所述Guest OS發(fā)送虛擬中斷。例如,若使用邏輯“0”表示關(guān)閉中斷,使用邏輯“I”表示打開中斷,則檢查到中斷標(biāo)志位寄存器的內(nèi)容為邏輯“0”,則禁止向所述Guest OS發(fā)送硬件產(chǎn)生的物理中斷。從上述本發(fā)明實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的方法可知,由于實時嵌入式虛擬化構(gòu)件Hypervisor向虛擬化操作系統(tǒng)Guest OS提供接口,所述Guest OS可以將Hypervisor與至少一個Guest OS共享并用于記錄中斷標(biāo)志的物理內(nèi)存即共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志。與現(xiàn)有技術(shù)通過提供中斷通知的通訊方式關(guān)閉中斷的方法相比,本發(fā)明實施例提供的方法不依賴Hypervisor與Guest OS共同編譯,Hypervisor不需與Guest OS共享代碼段;由于虛擬化層與Guest OS映像分離,對共享內(nèi)存的訪問通過虛擬地址進(jìn)行,因此,在關(guān)閉/打開中斷時速度快,系統(tǒng)運(yùn)行效率高。請參閱附圖4,是本發(fā)明實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的裝置結(jié)構(gòu)示意圖。為了便于說明,僅僅示出了與本發(fā)明實施例相關(guān)的部分。附圖4示例的虛擬化系統(tǒng)中關(guān)閉中斷的裝置包括接口提供模塊401、標(biāo)志位檢查模塊402和中斷截止發(fā)送模塊403,其中接口提供模塊401,用于向虛擬化操作系統(tǒng)Guest OS提供接口以使所述Guest OS調(diào)用所述接口將共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志,所述共享內(nèi)存為實時嵌入式虛擬化構(gòu)件Hypervisor與至少一個Guest OS共享并用于記錄中斷標(biāo)志的物理內(nèi)存,其中,所述共享內(nèi)存中不同的Guest OS與所述Hypervisor共享的內(nèi)存空間互相隔離。標(biāo)志位檢查模塊402,用檢查所述中斷標(biāo)志位寄存器。中斷截止發(fā)送模塊403,用于若所述標(biāo)志位檢查模塊402檢查所述中斷標(biāo)志位寄存器表明所述Guest OS需要關(guān)閉中斷,則禁止向所述Guest OS發(fā)送虛擬中斷。需要說明的是,以上虛擬化系統(tǒng)中關(guān)閉中斷的裝置的實施方式中,各功能模塊的劃分僅是舉例說明,實際應(yīng)用中可以根據(jù)需要,例如相應(yīng)硬件的配置要求或者軟件的實現(xiàn)的便利考慮,而將上述功能分配由不同的功能模塊完成,即將所述電纜調(diào)制解調(diào)器上線裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。而且,實際應(yīng)用中,本實施例中的相應(yīng)的功能模塊可以是由相應(yīng)的硬件實現(xiàn),也可以由相應(yīng)的硬件執(zhí)行相應(yīng)的軟件完成,例如,前述的接口提供模塊,可以是具有執(zhí)行前述向虛擬化操作系統(tǒng)Guest OS提供接口以使所述Guest OS調(diào)用所述接口將共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志的硬件,例如接口提供器,也可以是能夠執(zhí)行相應(yīng)計算機(jī)程序從而完成前述功能的一般處理器或者其他硬件設(shè)備;再如前述的標(biāo)志位檢查模塊,可以是具有執(zhí)行前述檢查所述中斷標(biāo)志位寄存器功能的硬件,例如標(biāo)志位檢查器,也可以是能夠執(zhí)行相應(yīng)計算機(jī)程序從而完成前述功能的一般處理器或者其他硬件設(shè)備(本說明書提供的各個實施例都可應(yīng)用上述描述原則)。附圖4示例的接口提供模塊401可以包括接口調(diào)用單元501和中斷標(biāo)志設(shè)置單元502,如附圖5所示本發(fā)明另一實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的裝置,其中接口調(diào)用單元501,用于向虛擬化操作系統(tǒng)Guest OS提供接口以使所述Guest OS調(diào)用所述接口;
中斷標(biāo)志設(shè)置單元502,用于根據(jù)所述接口提供的中間地址信息,通過第一層地址映射訪問中間地址,根據(jù)所述中間地址并通過第二層地址映射,將與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志,所述第一層地址映射為所述Guest OS至中間地址的映射,所述第二層地址映射是所述中間地址至物理內(nèi)存地址的映射,所述物理內(nèi)存包括所述共享內(nèi)存。附圖4或附圖5示例的虛擬化系統(tǒng)中關(guān)閉中斷的裝置還可以包括映射建立模塊601和共享內(nèi)存建立模塊602,如附圖6a或附圖6b所示本發(fā)明另一實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的裝置,其中映射建立模塊601,用于建立Guest OS至中間地址的映射以及所述中間地址至物理內(nèi)存地址的映射。共享內(nèi)存建立模塊602,用于建立所述共享內(nèi)存,所述共享內(nèi)存中不同的Guest OS與所述Hypervisor共享的內(nèi)存空間互相隔離。附圖4示例的標(biāo)志位檢查模塊402可以按照實時嵌入式虛擬化構(gòu)件Hypervisor提供的時鐘,周期性地輪詢所述中斷標(biāo)志位寄存器,也可以在硬件產(chǎn)生的物理中斷的觸發(fā)下,檢查所述中斷標(biāo)志位寄存器。標(biāo)志位檢查模塊402可以包括第一執(zhí)行單元701,如附圖7所示本發(fā)明另一實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的裝置,執(zhí)行單元701,用于執(zhí)行異常向量指定的異常處理函數(shù)以檢查所述中斷標(biāo)志位寄存器。具體地,硬件產(chǎn)生的物理中斷,例如,通用物理中斷或快速物理中斷等首先通過GIC路由到物理核,物理核上運(yùn)行Hypervisor程序,然后進(jìn)入到Hypervisor的異常向量表,并跳轉(zhuǎn)到Hypervisor的異常向量指定的異常處理函數(shù),在Hypervisor的中斷處理過程中執(zhí)行單元701執(zhí)行異常向量表中異常向量指定的異常處理函數(shù)以檢查中斷標(biāo)志位寄存器的內(nèi)容。需要說明的是,上述裝置各模塊/單元之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實施例基于同一構(gòu)思,其帶來的技術(shù)效果與本發(fā)明方法實施例相同,具體內(nèi)容可參見本發(fā)明方法實施例中的敘述,此處不再贅述。本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,比如以下各種方法的一種或多種或全部向虛擬化操作系統(tǒng)Guest OS提供接口以使所述Guest OS調(diào)用所述接口將共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志,所述共享內(nèi)存為實時嵌入式虛擬化構(gòu)件Hypervisor與至少一個Guest OS共享并用于記錄中斷標(biāo)志的物理內(nèi)存;檢查所述中斷標(biāo)志位寄存器;若所述中斷標(biāo)志位寄存器表明所述Guest OS需要關(guān)閉中斷,則禁止向所述GuestOS發(fā)送虛擬中斷。本領(lǐng)域普通技術(shù)人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計算機(jī)可讀存儲介質(zhì)中,存儲介質(zhì)可以包括只讀存儲器(ROM,Read Only Memory)、隨機(jī)存取存儲器(RAM,RandomAccess Memory)、磁盤或光盤等。 以上對本發(fā)明實施例提供的虛擬化系統(tǒng)中關(guān)閉中斷的方法和裝置進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1.一種虛擬化系統(tǒng)中關(guān)閉中斷的方法,其特征在于,所述方法包括 向虛擬化操作系統(tǒng)Guest OS提供接口以使所述Guest OS調(diào)用所述接口將共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志,所述共享內(nèi)存為實時嵌入式虛擬化構(gòu)件Hypervisor與至少一個Guest OS共享并用于記錄中斷標(biāo)志的物理內(nèi)存,且所述共享內(nèi)存中不同的Guest OS與所述Hypervisor共享的內(nèi)存空間互相隔離; 檢查所述中斷標(biāo)志位寄存器; 若所述中斷標(biāo)志位寄存器表明所述Guest OS需要關(guān)閉中斷,則禁止向所述Guest OS發(fā)送虛擬中斷。
2.如權(quán)利要求I所述的方法,其特征在于,所述向虛擬化操作系統(tǒng)GuestOS提供接口以使所述Guest OS調(diào)用所述接口將共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志,包括 向虛擬化操作系統(tǒng)Guest OS提供接口以使所述Guest OS調(diào)用所述接口 ; 根據(jù)所述接口提供的中間地址信息,通過第一層地址映射訪問中間地址,根據(jù)所述中間地址并通過第二層地址映射訪問所述共享內(nèi)存,將與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志。
3.如權(quán)利要求2所述的方法,其特征在于,所述向虛擬化操作系統(tǒng)GuestOS提供接口以使所述Guest OS將共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志之前還包括 建立Guest OS至中間地址的映射及所述中間地址至物理內(nèi)存地址的映射; 建立所述共享內(nèi)存。
4.如權(quán)利要求I所述的方法,其特征在于,所述檢查所述中斷標(biāo)志位寄存器包括 按照所述Hypervisor提供的時鐘,周期性地輪詢所述中斷標(biāo)志位寄存器;或者 在硬件產(chǎn)生的物理中斷的觸發(fā)下,檢查所述中斷標(biāo)志位寄存器。
5.如權(quán)利要求4所述的方法,其特征在于,所述檢查所述中斷標(biāo)志位寄存器包括 執(zhí)行異常向量指定的異常處理函數(shù)以檢查所述中斷標(biāo)志位寄存器。
6.一種虛擬化系統(tǒng)中關(guān)閉中斷的裝置,其特征在于,所述裝置包括接口提供模塊,用于向虛擬化操作系統(tǒng)Guest OS提供接口以使所述Guest OS調(diào)用所述接口將共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志,所述共享內(nèi)存為實時嵌入式虛擬化構(gòu)件Hypervisor與至少一個Guest OS共享并用于記錄中斷標(biāo)志的物理內(nèi)存,所述共享內(nèi)存中不同的Guest OS與所述Hypervisor共享的內(nèi)存空間互相隔離;標(biāo)志位檢查模塊,用于檢查所述中斷標(biāo)志位寄存器; 中斷截止發(fā)送模塊,用于若所述標(biāo)志位檢查模塊檢查所述中斷標(biāo)志位寄存器表明所述Guest OS需要關(guān)閉中斷,貝U禁止向所述Guest OS發(fā)送虛擬中斷。
7.如權(quán)利要求6所述的裝置,其特征在于,所述接口提供模塊包括 接口調(diào)用單元,用于向虛擬化操作系統(tǒng)Guest OS提供接口以使所述Guest OS調(diào)用所述接口 ; 中斷標(biāo)志設(shè)置單元,用于根據(jù)所述接口提供的中間地址信息,通過第一層地址映射訪問中間地址,根據(jù)所述中間地址并通過第二層地址映射訪問所述共享內(nèi)存,將與所述GuestOS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志。
8.如權(quán)利要求6或7所述的裝置,其特征在于,所述裝置還包括 映射建立模塊,用于建立Guest OS至中間地址的映射以及所述中間地址至物理內(nèi)存地址的映射; 共享內(nèi)存建立模塊,用于建立所述共享內(nèi)存。
9.如權(quán)利要求6所述的裝置,其特征在于,所述標(biāo)志位檢查模塊按照所述Hypervisor提供的時鐘,周期性地輪詢所述中斷標(biāo)志位寄存器;或者 標(biāo)志位檢查模塊在硬件產(chǎn)生的物理中斷的觸發(fā)下,檢查所述中斷標(biāo)志位寄存器。
10.如權(quán)利要求9所述的裝置,其特征在于,所述標(biāo)志位檢查模塊包括 執(zhí)行單元,用于執(zhí)行異常向量指定的異常處理函數(shù)以檢查所述中斷標(biāo)志位寄存器。
全文摘要
本發(fā)明提供虛擬化系統(tǒng)中關(guān)閉中斷的方法和裝置,更好地支持Guest OS開/關(guān)中斷,降低對系統(tǒng)運(yùn)行效率的影響。所述方法包括向虛擬化操作系統(tǒng)Guest OS提供接口以使所述Guest OS調(diào)用所述接口將共享內(nèi)存中與所述Guest OS對應(yīng)的中斷標(biāo)志位寄存器設(shè)置中斷標(biāo)志;檢查所述中斷標(biāo)志位寄存器;若所述中斷標(biāo)志位寄存器表明所述Guest OS需要關(guān)閉中斷,則禁止向所述Guest OS發(fā)送虛擬中斷。本發(fā)明提供的方法不依賴Hypervisor與Guest OS共同編譯,Hypervisor不需與Guest OS共享代碼段,對共享內(nèi)存的訪問通過虛擬地址進(jìn)行,在關(guān)閉/打開中斷時速度快,系統(tǒng)運(yùn)行效率高。
文檔編號G06F9/48GK102799480SQ20121020713
公開日2012年11月28日 申請日期2012年6月21日 優(yōu)先權(quán)日2012年6月21日
發(fā)明者馬彬, 鄭章孝, 白云鵬 申請人:華為技術(shù)有限公司