亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

多虛擬機同時運行的方法、裝置及電子設(shè)備與流程

文檔序號:11208714閱讀:1009來源:國知局
多虛擬機同時運行的方法、裝置及電子設(shè)備與流程

本申請涉及虛擬化技術(shù)領(lǐng)域,特別涉及一種多虛擬機同時運行的方法、裝置及電子設(shè)備。



背景技術(shù):

kvm(kernelvirtualmachine)技術(shù)是一個開源的虛擬化解決方案,圖1示出了現(xiàn)有技術(shù)中基于kvm技術(shù)的虛擬化方案架構(gòu)示意圖,如圖所示,通常由一個主機(host)操作系統(tǒng)和若干個虛擬出來的客戶機(guest)操作系統(tǒng)組成,這些操作系統(tǒng)運行在同一套硬件處理器芯片上,共享處理器以及外設(shè)資源。

支持虛擬化架構(gòu)的arm處理器至少包含el(exceptionlevel)2、el1、el0三種模式,el2模式下運行hypervisor程序,el1模式下運行l(wèi)inuxkernel程序,el0模式下運行用戶空間程序(usermode的application)。hypervisor層管理cpu、內(nèi)存、定時器,中斷等硬件資源,通過cpu、內(nèi)存、定時器、中斷的虛擬化資源,可以把不同的操作系統(tǒng)分時加載到物理處理器上運行,從而實現(xiàn)系統(tǒng)虛擬化的功能。

現(xiàn)有技術(shù)的不足在于:虛擬化方案在hypervisor層只能執(zhí)行一個平臺platformhypervisor,無法執(zhí)行第三方hypervisor軟件。



技術(shù)實現(xiàn)要素:

本申請實施例的一個目的在于解決現(xiàn)有技術(shù)中虛擬化方案在hypervisor層只能執(zhí)行一個平臺platformhypervisor,無法執(zhí)行第三方hypervisor軟件這一技術(shù)問題。

第一個方面,本申請實施例提供了一種多虛擬機同時運行的方法,包括:

在qemu中,發(fā)起運行第二操作系統(tǒng)的請求;

在kvm模塊中,觸發(fā)異常到當前運行的第一操作系統(tǒng)的hypervisor;

在所述第一操作系統(tǒng)的hypervisor中保存第一操作系統(tǒng)的hypervisor的上下文并加載所述第二操作系統(tǒng)的hypervisor的上下文;

在所述第二操作系統(tǒng)的hypervisor中保存第一操作系統(tǒng)的上下文并加載第二操作系統(tǒng)的上下文。

第二個方面,本申請實施例提供了一種多虛擬機同時運行的裝置,包括:

接收模塊,用于在qemu中,發(fā)起運行第二操作系統(tǒng)的請求;

虛擬機切換模塊,用于在kvm模塊中,觸發(fā)異常到當前運行的第一操作系統(tǒng)的hypervisor;

第一切換接口模塊,用于在所述第一操作系統(tǒng)的hypervisor中保存第一操作系統(tǒng)的hypervisor的上下文并加載所述第二操作系統(tǒng)的hypervisor的上下文;

第二切換接口模塊,用于在所述第二操作系統(tǒng)的hypervisor中保存第一操作系統(tǒng)的上下文并加載第二操作系統(tǒng)的上下文。

第三個方面,本申請實施例提供了一種電子設(shè)備,包括:存儲器、一個或多個處理器、以及一個或多個模塊;所述一個或多個模塊被存儲于所述存儲器中,并被配置成由所述一個或多個處理器執(zhí)行,所述一個或多個模塊包括用于執(zhí)行如上所述方法中各個步驟的指令。

第四個方面,本申請實施例提供了一種與電子設(shè)備結(jié)合使用的計算機程序產(chǎn)品,所述計算機程序產(chǎn)品包括內(nèi)嵌于計算機可讀的存儲介質(zhì)中的計算機程序,所述計算機程序包括用于使所述電子設(shè)備執(zhí)行如上所述方法中各個步驟的指令。

有益效果如下:

本申請實施例在qemu中發(fā)起運行第二操作系統(tǒng)的請求后可以在kvm模塊中觸發(fā)異常到當前運行的第一操作系統(tǒng)的hypervisor,再在所述第一hypervisor中保存第一操作系統(tǒng)的hypervisor的上下文并加載所述第二操作系統(tǒng)的hypervisor的上下文,并在所述第二操作系統(tǒng)的hypervisor中保存第一操作系統(tǒng)的上下文并加載第二操作系統(tǒng)的上下文,實現(xiàn)hypervisor及其虛擬操作系統(tǒng)的上下文管理,從而實現(xiàn)了虛擬機的動態(tài)切換運行,即使在硬件只支持一個虛擬化擴展的情況下,也可以讓多個虛擬機同時運行并保證各自的功能獨立運行。

附圖說明

下面將參照附圖描述本申請的具體實施例,其中:

圖1示出了現(xiàn)有技術(shù)中基于kvm技術(shù)的虛擬化架構(gòu)示意圖;

圖2示出了本申請實施例一中多虛擬機同時運行的方法實施的流程示意圖;

圖3示出了本申請實施例二中多虛擬機同時運行的裝置的結(jié)構(gòu)示意圖;

圖4示出了本申請實施例三中電子設(shè)備的結(jié)構(gòu)示意圖;

圖5示出了本申請實施例五中虛擬化架構(gòu)示意圖;

圖6示出了本申請實施例五中多虛擬機同時運行的框架示意圖;

圖7示出了本申請實施例五中多虛擬機同時運行的流程示意圖;

圖8示出了本申請實施例六中多核處理器的虛擬化架構(gòu)示意圖。

具體實施方式

為了使本申請的技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖對本申請的示例性實施例進行進一步詳細的說明,顯然,所描述的實施例僅是本申請的一部分實施例,而不是所有實施例的窮舉。并且在不沖突的情況下,本說明中的實施例及實施例中的特征可以互相結(jié)合。

發(fā)明人在發(fā)明過程中注意到:

現(xiàn)有技術(shù)中,kvm/hypervisormodule跨越hostlinuxkernel和hypervisor兩層,一方面為qemu提供接口節(jié)點,允許qemu通過kvm節(jié)點創(chuàng)建虛擬cpu,管理虛擬化資源;另一方面kvm/hypervisor實現(xiàn)了把hostlinux系統(tǒng)從物理cpu上切換出去,然后把guestlinux系統(tǒng)加載到物理處理器上運行,最后處理guestlinux系統(tǒng)異常退出的后續(xù)事務(wù)。

qemu作為hostlinux的一個應(yīng)用運行,為guestlinux的運行提供虛擬的硬件設(shè)備資源,通過kvm/hypervisormodule的設(shè)備kvm節(jié)點,創(chuàng)建虛擬cpu,分配物理硬件資源,實現(xiàn)把一個未經(jīng)修改的guestlinux加載到物理硬件處理器上去運行。

通過上面的描述,要想在一個硬件平臺上實現(xiàn)虛擬化,在hypervisor層要實現(xiàn)一個非常關(guān)鍵的功能是,對當前運行在物理硬件上的操作系統(tǒng)的運行上下文進行現(xiàn)場保護,然后把另外一個操作系統(tǒng)的運行上下文恢復(fù)到物理硬件上并開始執(zhí)行代碼,從而實現(xiàn)操作系統(tǒng)的動態(tài)切換運行。如果一個硬件平臺在hypervisor層已實現(xiàn)了比較復(fù)雜的邏輯功能,而且不支持虛擬化功能,在這樣的平臺上想運行虛擬化軟件,將會遇到非常大的困難。

現(xiàn)有的手機平臺軟件,已經(jīng)運行了非常復(fù)雜的邏輯,已有軟件已占據(jù)了所有hypervisor層的物理硬件資源,比如stage2mmu頁表,異常向量表,這樣的話,第三方hypervisor軟件沒有任何權(quán)限和機會在hypervisor層去執(zhí)行。

針對現(xiàn)有技術(shù)的不足,本申請實施例提出了一種多虛擬機同時運行的方法、裝置及電子設(shè)備,實現(xiàn)了在硬件只支持一個虛擬化擴展的情況下,可以讓多個虛擬機同時運行,并保證各自的功能獨立運行。

下面進行詳細說明。

實施例一、

圖2示出了本申請實施例一中多虛擬機同時運行的方法實施的流程示意圖,如圖所示,所述多虛擬機同時運行的方法可以包括如下步驟:

步驟201、在qemu中,發(fā)起運行第二操作系統(tǒng)的請求;

步驟202、在kvm模塊中,觸發(fā)異常到當前運行的第一操作系統(tǒng)的hypervisor;

步驟203、在所述第一操作系統(tǒng)的hypervisor中保存第一操作系統(tǒng)的hypervisor的上下文并加載所述第二操作系統(tǒng)的hypervisor的上下文;

步驟204、在所述第二操作系統(tǒng)的hypervisor中保存第一操作系統(tǒng)的上下文并加載第二操作系統(tǒng)的上下文。

具體實施時,qemu可以作為第一操作系統(tǒng)的一個進程,在qemu啟動后,可以發(fā)起運行第二操作系統(tǒng)的請求,本申請實施例可以在kvm模塊中增加一個用于切換的功能模塊hypervisorswapcontroller(簡稱swapcontroller),由hypervisorswapcontroller負責觸發(fā)異常到當前運行的第一操作系統(tǒng)的hypervisor,每個hypervisor均可以擁有一個用于上下文處理的功能模塊hypervisorswapentry(簡稱swapentry),通過swapentry實現(xiàn)了對hypervisor軟件的動態(tài)切換運行,當一個操作系統(tǒng)需要加載到cpu運行時,swapcontroller通過異常調(diào)用執(zhí)行該操作系統(tǒng)的hypervisor中swapentry的代碼,保存當前操作系統(tǒng)的hypervisor的上下文,然后把要運行的hypervisor的上下文寫到物理硬件cpu的寄存器并開始運行,由要運行的hypervisor的swapentry保存要之前運行的操作系統(tǒng)的上下文并加載要運行的操作系統(tǒng)的上下文。

與現(xiàn)有虛擬化架構(gòu)的方案相比,本申請實施例在保持原有硬件平臺的hypervisor軟件框架不變的情況下,增加了hypervisorswapcontroller和hypervisorswapentry的功能,實現(xiàn)了在單一的硬件虛擬化擴展的基礎(chǔ)上同時運行多個虛擬機、hypervisor層的軟件動態(tài)切換運行,進而支持不同的上層虛擬操作系統(tǒng)即獨立功能的實現(xiàn)。

本申請實施例可以應(yīng)用于硬件平臺為多核處理器的情況,對于多核處理器來說,每一個core可以獨立運行一個不同功能類型的虛擬機。

實施中,所述方法可以進一步包括:

在qemu中監(jiān)測到第二操作系統(tǒng)運行結(jié)束時,在所述第二操作系統(tǒng)的hypervisor中保存第二操作系統(tǒng)的上下文并加載第一操作系統(tǒng)的上下文;

在kvm模塊中,觸發(fā)異常到第二操作系統(tǒng)的hypervisor;

在所述第二操作系統(tǒng)的hypervisor中保存所述第二操作系統(tǒng)的hypervisor的上下文并加載第一操作系統(tǒng)的hypervisor的上下文。

具體實施時,當?shù)诙僮飨到y(tǒng)運行結(jié)束后,退回到qemu,本申請實施例在qemu監(jiān)測到第二操作系統(tǒng)運行結(jié)束后,可以在所述第二操作系統(tǒng)的hypervisor中保存第二操作系統(tǒng)的上下文并加載第一操作系統(tǒng)的上下文,然后在kvm模塊中觸發(fā)異常到第二操作系統(tǒng)的hypervisor,在所述第二操作系統(tǒng)的hypervisor中保存所述第二操作系統(tǒng)的hypervisor的上下文并加載第一操作系統(tǒng)的hypervisor的上下文,恢復(fù)第一操作系統(tǒng)的hypervisor及第一操作系統(tǒng)的正常運行。

實施中,在所述第一操作系統(tǒng)的hypervisor中保存第一操作系統(tǒng)的hypervisor的上下文并加載第二操作系統(tǒng)的hypervisor的上下文,具體可以為:

在所述第一操作系統(tǒng)的hypervisor中回調(diào)kvm模塊,在kvm模塊中保存第一操作系統(tǒng)的hypervisor的上下文并加載第二操作系統(tǒng)的hypervisor的上下文。

具體實施時,在qemu中發(fā)起運行第二操作系統(tǒng)的請求后可以在kvm模塊中異常調(diào)用觸發(fā)第一操作系統(tǒng)的hypervisor,由第一操作系統(tǒng)的hypervisor回調(diào)kvm模塊,在kvm模塊中對第一操作系統(tǒng)的hypervisor的上下文進行保存,并加載所述第二操作系統(tǒng)的hypervisor的上下文到物理硬件處理器的進程中,開始運行第二操作系統(tǒng)的hypervisor的軟件代碼;第二操作系統(tǒng)的hypervisor保存第一操作系統(tǒng)的上下文并加載第二操作系統(tǒng)的上下文到物理硬件上,處理器開始運行第二操作系統(tǒng)。

在第二操作系統(tǒng)運行結(jié)束后,可以退回到第二操作系統(tǒng)的hypervisor中,保存第二操作系統(tǒng)的上下文,同時恢復(fù)第一操作系統(tǒng)的上下文。

kvm模塊中通過異常調(diào)用觸發(fā)第二操作系統(tǒng)的hypervisor回調(diào)kvm模塊,在kvm模塊中對第二操作系統(tǒng)的hypervisor的上下文進行保護,同時恢復(fù)第一操作系統(tǒng)的hypervisor的上下文到物理硬件處理器上,此時,第一操作系統(tǒng)及其hypervisor恢復(fù)正常運行。

實施中,所述第一操作系統(tǒng)可以為主機host操作系統(tǒng),所述第一操作系統(tǒng)的hypervisor可以為平臺hypervisor,所述第二操作系統(tǒng)可以為客戶機guest操作系統(tǒng),所述第二操作系統(tǒng)的hypervisor可以為第三方hypervisor。

具體實施時,系統(tǒng)運行時,可以在host操作系統(tǒng)以及平臺hypervisor處于正常運行狀態(tài),然后收到guest操作系統(tǒng)的運行請求后,動態(tài)切換至第三方hypervisor,實現(xiàn)guest操作系統(tǒng)的運行目的;也可以在系統(tǒng)運行時guest操作系統(tǒng)以及第三方hypervisor處于正常運行狀態(tài),然后收到host操作系統(tǒng)的運行請求后,動態(tài)切換至平臺hypervisor,實現(xiàn)host操作系統(tǒng)的運行目的。

在guest操作系統(tǒng)運行結(jié)束后,本申請實施例可以自動切換回host操作系統(tǒng)運行。

實施中,所述第一操作系統(tǒng)的內(nèi)核為hostlinuxkernel,所述第二操作系統(tǒng)的內(nèi)核為guestlinuxkernel。

具體實施時,操作系統(tǒng)可以為linux系統(tǒng),第一虛擬操作系統(tǒng)的內(nèi)核為hostlinuxkernel,所述第二虛擬操作系統(tǒng)的內(nèi)核為guestlinuxkernel,本領(lǐng)域技術(shù)人員還可以采用其他操作系統(tǒng)內(nèi)核,本申請對此不作限制。

具體實施時,對于hypervisor的切換過程,可以預(yù)先設(shè)置一塊空間來保存hypervisor各自的上下文,本申請實施例可以將兩個要切換的hypervisor的上下文保存到即將加載到cpu上運行的hypervisor中的棧(stack)空間中,也可以保存在kvm模塊的存儲空間中。

實施中,所述第三方hypervisor可以用于對上層支持的主機host操作系統(tǒng)以及至少一個guest虛擬操作系統(tǒng)進行切換。

具體實施時,所述平臺hypervisor可以為高通qualcommplatformhypervisor等,所述第三方hypervisor可以為xen架構(gòu)hypervisor、kvmhypervisor等。

實施例二、

基于同一發(fā)明構(gòu)思,本申請實施例中還提供了一種多虛擬機同時運行的裝置,由于這些設(shè)備解決問題的原理與一種多虛擬機同時運行的方法相似,因此這些設(shè)備的實施可以參見方法的實施,重復(fù)之處不再贅述。

圖3示出了本申請實施例二中多虛擬機同時運行的裝置的結(jié)構(gòu)示意圖,如圖所示,所述多虛擬機同時運行的裝置可以包括如下步驟:

接收模塊301,用于在qemu中,發(fā)起運行第二操作系統(tǒng)的請求;

虛擬機切換模塊hypervisorswapcontroller302,用于在kvm模塊中,觸發(fā)異常到當前運行的第一操作系統(tǒng)的hypervisor;

第一切換接口模塊swapentry303,用于在所述第一操作系統(tǒng)的hypervisor中保存第一操作系統(tǒng)的hypervisor的上下文并加載所述第二操作系統(tǒng)的hypervisor的上下文;

第二切換接口模塊swapentry304,用于在所述第二操作系統(tǒng)的hypervisor中保存第一操作系統(tǒng)的上下文并加載第二操作系統(tǒng)的上下文。

實施中,所述第二切換接口模塊swapentry可以進一步用于在qemu中監(jiān)測到第二操作系統(tǒng)運行結(jié)束時,在所述第二操作系統(tǒng)的hypervisor中保存第二操作系統(tǒng)的上下文并加載第一操作系統(tǒng)的上下文;

所述虛擬機切換模塊hypervisorswapcontroller可以進一步用于在kvm模塊中,觸發(fā)異常到第二操作系統(tǒng)的hypervisor;

所述第二切換接口模塊swapentry還可以進一步用于在所述第二操作系統(tǒng)的hypervisor中保存所述操作系統(tǒng)的hypervisor的上下文并加載第一操作系統(tǒng)的hypervisor的上下文。

實施中,第一切換接口模塊swapentry具體可以用于在所述第一操作系統(tǒng)的hypervisor中回調(diào)kvm模塊,在kvm模塊中保存第一操作系統(tǒng)的hypervisor的上下文并加載第二操作系統(tǒng)的hypervisor的上下文。

實施中,所述第一操作系統(tǒng)可以為主機host操作系統(tǒng),所述第一操作系統(tǒng)的hypervisor可以為平臺hypervisor,所述第二操作系統(tǒng)可以為客戶機guest操作系統(tǒng),所述第二操作系統(tǒng)的hypervisor可以為第三方hypervisor。

實施中,所述第一操作系統(tǒng)的內(nèi)核可以為hostlinuxkernel,所述第二操作系統(tǒng)的內(nèi)核可以為guestlinuxkernel。

為了描述的方便,以上所述裝置的各部分以功能分為各種模塊或單元分別描述。當然,在實施本申請時可以把各模塊或單元的功能在同一個或多個軟件或硬件中實現(xiàn)。

實施例三、

基于同一發(fā)明構(gòu)思,本申請實施例還提供了一種電子設(shè)備,下面進行說明。

圖4示出了本申請實施例三中電子設(shè)備的結(jié)構(gòu)示意圖,如圖所示,所述電子設(shè)備可以包括:存儲器401、一個或多個處理器402、以及一個或多個模塊;

所述一個或多個模塊被存儲于所述存儲器402中,并被配置成由所述一個或多個處理器402執(zhí)行,所述一個或多個模塊包括用于執(zhí)行上述多虛擬機同時運行的方法中各個步驟的指令。

具體實施時,所述電子設(shè)備可以為手機、pad、平板電腦、個人計算機pc、智能機器人等產(chǎn)品。

實施中,所述電子設(shè)備還可以進一步包括:顯示屏,所述顯示屏可以用于顯示圖形用戶界面,所述顯示屏具體可以為觸摸touch屏幕、也可以為非觸摸屏。

采用本申請實施例所提供的電子設(shè)備,即使在硬件只支持一個虛擬化擴展的情況下,也可以讓多個虛擬機同時運行并保證各自的功能獨立運行。

實施例四、

基于同一發(fā)明構(gòu)思,本申請實施例還提供了一種與電子設(shè)備結(jié)合使用的計算機程序產(chǎn)品,下面進行說明。

本申請實施例所提供的與電子設(shè)備結(jié)合使用的計算機程序產(chǎn)品,包括:內(nèi)嵌于計算機可讀的存儲介質(zhì)中的計算機程序,所述計算機程序包括用于使所述電子設(shè)備執(zhí)行上述多虛擬機同時運行的方法中各個步驟的指令。

為了便于本申請的實施,下面以實例進行說明。

實施例五、

本申請實施例以linuxkernel的虛擬化架構(gòu)為例進行說明,其中包括platformhypervisor和kvmhypervisor。

圖5示出了本申請實施例五中虛擬化架構(gòu)示意圖,如圖所示,與現(xiàn)有技術(shù)中虛擬化架構(gòu)方案相比,本申請實施例在保持原有硬件平臺的hypervisor軟件框架不變的情況下,整合了linux開源hypervisor部分軟件代碼,并分別在架構(gòu)圖上增加了hypervisorswapcontroller和hypervisorswapentry的功能,實現(xiàn)了hypervisor層的軟件動態(tài)切換運行。

由swapcontroller負責對不同功能的hypervisor進行動態(tài)切換運行,比如qualcommplatformhypervisor、xen架構(gòu)hypervisor、kvmhypervisor等。再由hypervisor本身實現(xiàn)對上層支持的操作系統(tǒng)進行切換,比如kvmhypervisor負責hostlinux及多個guestlinux虛擬操作系統(tǒng)的切換運行。本申請實施例所提供的技術(shù)方案可以在單一的硬件虛擬化擴展的基礎(chǔ)上同時運行多個虛擬機,以支持不同的上層虛擬操作系統(tǒng)及獨立功能的實現(xiàn)。

圖6示出了本申請實施例五中多虛擬機同時運行的框架示意圖,如圖所示,hypervisorswapcontroller負責觸發(fā)hypervisor的切換,每個hypervisor擁有一個swapentry。swapcontroller通過swapentry實現(xiàn)了對hypervisor上虛擬機(虛擬操作系統(tǒng))的動態(tài)切換運行,當一個虛擬操作系統(tǒng)需要加載到cpu運行時,swapcontroller通過異常調(diào)用執(zhí)行該虛擬操作系統(tǒng)對應(yīng)的hypervisor中swapentry的代碼,保存當前hypervisor的上下文,然后把要運行的hypervisor的上下文寫到物理硬件cpu的寄存器并開始運行,由所述要運行的hypervisor保存第一虛擬操作系統(tǒng)的上下文并加載第二虛擬操作系統(tǒng)的上下文,實現(xiàn)第二虛擬操作系統(tǒng)的運行。

圖7示出了本申請實施例五中多虛擬機同時運行的流程示意圖,如圖所示,具體流程可以如下所示:

步驟701、上電復(fù)位;

步驟702、hostlinux及platformhypervisor處于正常運行狀態(tài);

步驟703、當guestlinux需要運行時,kvmmodule通過異常調(diào)用觸發(fā)platformhypervisorswapentry回調(diào)kvmmodulehypervisorswapcontroller對platformhypervisor運行上下文進行現(xiàn)場保護;

步驟704、kvmmodulehypervisorswapcontroller加載kvmhypervisor的上下文到物理硬件處理器上,開始運行kvmhypervisor軟件代碼;

步驟705、kvmhypervisor保存hostlinuxkernel上下文并加載guestlinuxkernel上下文到物理硬件上,處理器開始運行g(shù)uestlinuxkernel;

步驟706、guestlinuxkernel運行結(jié)束后退回到kvmhypervisor保存guestlinuxkernel上下文,同時恢復(fù)hostlinuxkernel上下文;

步驟707、kvmmodule通過異常調(diào)用觸發(fā)kvmhypervisorswapentry回調(diào)kvmmodulehypervisorswapcontroller對kvmhypervisor運行上下文進行現(xiàn)場保護,同時恢復(fù)platformhypervisor運行上下文到物理硬件處理器;

步驟708、hostlinux及platformhypervisor恢復(fù)正常運行。

實施例六、

本申請實施例以多核處理器為例進行說明。

圖8示出了本申請實施例六中多核處理器的虛擬化架構(gòu)示意圖,如圖所示,多核處理器可以為包括多個線程的linuxkernel,實施時每個內(nèi)核獨立運行一個虛擬操作系統(tǒng),例如:一個內(nèi)核作為hostlinuxkernel獨立運行host操作系統(tǒng),一個內(nèi)核作為guest1linuxkernel獨立運行g(shù)uest1操作系統(tǒng)(例如:個人操作系統(tǒng)),另外一個內(nèi)核作為guest2linuxkernel獨立運行g(shù)uest2操作系統(tǒng)(例如:企業(yè)操作系統(tǒng)),其中,guest1操作系統(tǒng)(個人操作系統(tǒng))可以由qemu1提供和分配資源,guest2操作系統(tǒng)(企業(yè)操作系統(tǒng))可以由qemu2提供和分配資源。

hypervisor層可以包括多個不同的hypervisor,例如:platformhypervisor、xen架構(gòu)hypervisor、kvmhypervisor、linuxcontainers(lxc)等。

當需要這些虛擬操作系統(tǒng)之間進行切換時,與該虛擬操作系統(tǒng)對應(yīng)的hypervisor進行相應(yīng)的切換,例如:從platformhypervisor切換至xen架構(gòu)hypervisor、從xen架構(gòu)hypervisor切換至kvmhypervisor等,hypervisorswapcontroller負責觸發(fā)異常當前正在運行的hypervisor,并運行該正在運行的hypervisor的swapentry模塊。

由該正在運行的hypervisor的swapentry模塊將正在運行的hypervisor的上下文保存到指定位置,并將保存在指定位置的目標hypervisor的上下文加載到cpu寄存器,然后由目標hypervisor保存之前運行的虛擬操作系統(tǒng)的上下文,并將保存在指定位置的目標hypervisor對應(yīng)的虛擬操作系統(tǒng)的上下文加載到cpu寄存器。

其中,所述指定位置可以為platformhypervisor、xen架構(gòu)hypervisor、kvmhypervisor、linuxcontainers(lxc)等hypervisor的一塊空間,也可以為kvm模塊中的一塊空間,實際實施時,需要切換的虛擬操作系統(tǒng)的上下文可以保存在hostlinuxkernel的qemu里。

具體實施時,hostlinuxkernel可以有多個qemu,每個qemu負責為一個虛擬操作系統(tǒng)的運行提供虛擬操作系統(tǒng)的硬件設(shè)備資源。

具體數(shù)據(jù)結(jié)構(gòu)可以為棧,也可以采用其他的數(shù)據(jù)結(jié)構(gòu)形式(例如:數(shù)組、隊列等),只需具備存取數(shù)據(jù)的功能。

具體實施時,所述數(shù)據(jù)結(jié)構(gòu)可以為多個,例如:兩個棧,一個棧用來存放platformhypervisor的上下文、一個用來存放kvmhypervisor的上下文等,上下文的記錄狀態(tài)可以在任意一個棧的底部。

本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。

本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

盡管已描述了本申請的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1