欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

文檔序號(hào):11208714閱讀:1015來(lái)源:國(guó)知局
多虛擬機(jī)同時(shí)運(yùn)行的方法、裝置及電子設(shè)備與流程

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



背景技術(shù):

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

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

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



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

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

第一個(gè)方面,本申請(qǐng)實(shí)施例提供了一種多虛擬機(jī)同時(shí)運(yùn)行的方法,包括:

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

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

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

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

第二個(gè)方面,本申請(qǐng)實(shí)施例提供了一種多虛擬機(jī)同時(shí)運(yùn)行的裝置,包括:

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

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

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

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

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

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

有益效果如下:

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

附圖說(shuō)明

下面將參照附圖描述本申請(qǐng)的具體實(shí)施例,其中:

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

圖2示出了本申請(qǐng)實(shí)施例一中多虛擬機(jī)同時(shí)運(yùn)行的方法實(shí)施的流程示意圖;

圖3示出了本申請(qǐng)實(shí)施例二中多虛擬機(jī)同時(shí)運(yùn)行的裝置的結(jié)構(gòu)示意圖;

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

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

圖6示出了本申請(qǐng)實(shí)施例五中多虛擬機(jī)同時(shí)運(yùn)行的框架示意圖;

圖7示出了本申請(qǐng)實(shí)施例五中多虛擬機(jī)同時(shí)運(yùn)行的流程示意圖;

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

具體實(shí)施方式

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

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

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

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

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

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

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

下面進(jìn)行詳細(xì)說(shuō)明。

實(shí)施例一、

圖2示出了本申請(qǐng)實(shí)施例一中多虛擬機(jī)同時(shí)運(yùn)行的方法實(shí)施的流程示意圖,如圖所示,所述多虛擬機(jī)同時(shí)運(yùn)行的方法可以包括如下步驟:

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

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

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

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

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

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

本申請(qǐng)實(shí)施例可以應(yīng)用于硬件平臺(tái)為多核處理器的情況,對(duì)于多核處理器來(lái)說(shuō),每一個(gè)core可以獨(dú)立運(yùn)行一個(gè)不同功能類(lèi)型的虛擬機(jī)。

實(shí)施中,所述方法可以進(jìn)一步包括:

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

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

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

具體實(shí)施時(shí),當(dāng)?shù)诙僮飨到y(tǒng)運(yùn)行結(jié)束后,退回到qemu,本申請(qǐng)實(shí)施例在qemu監(jiān)測(cè)到第二操作系統(tǒng)運(yùn)行結(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)的正常運(yùn)行。

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

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

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

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

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

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

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

在guest操作系統(tǒng)運(yùn)行結(jié)束后,本申請(qǐng)實(shí)施例可以自動(dòng)切換回host操作系統(tǒng)運(yùn)行。

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

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

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

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

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

實(shí)施例二、

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

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

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

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

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

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

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

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

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

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

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

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

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

實(shí)施例三、

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

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

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

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

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

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

實(shí)施例四、

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

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

為了便于本申請(qǐng)的實(shí)施,下面以實(shí)例進(jìn)行說(shuō)明。

實(shí)施例五、

本申請(qǐng)實(shí)施例以linuxkernel的虛擬化架構(gòu)為例進(jìn)行說(shuō)明,其中包括platformhypervisor和kvmhypervisor。

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

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

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

圖7示出了本申請(qǐng)實(shí)施例五中多虛擬機(jī)同時(shí)運(yùn)行的流程示意圖,如圖所示,具體流程可以如下所示:

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

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

步驟703、當(dāng)guestlinux需要運(yùn)行時(shí),kvmmodule通過(guò)異常調(diào)用觸發(fā)platformhypervisorswapentry回調(diào)kvmmodulehypervisorswapcontroller對(duì)platformhypervisor運(yùn)行上下文進(jìn)行現(xiàn)場(chǎng)保護(hù);

步驟704、kvmmodulehypervisorswapcontroller加載kvmhypervisor的上下文到物理硬件處理器上,開(kāi)始運(yùn)行kvmhypervisor軟件代碼;

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

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

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

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

實(shí)施例六、

本申請(qǐng)實(shí)施例以多核處理器為例進(jìn)行說(shuō)明。

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

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

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

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

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

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

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

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

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

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

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

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

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

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
凯里市| 正蓝旗| 遂溪县| 莫力| 法库县| 汝阳县| 阳曲县| 阳泉市| 望城县| 施甸县| 上饶县| 渭源县| 阿拉善左旗| 靖边县| 建平县| 宁南县| 汉阴县| 平昌县| 柞水县| 肥东县| 子洲县| 平果县| 永新县| 称多县| 青冈县| 台南市| 乌拉特后旗| 孟村| 宁国市| 江西省| 巧家县| 惠来县| 衡阳县| 肃北| 安顺市| 新巴尔虎左旗| 光山县| 许昌县| 玉屏| 阿拉善盟| 广宗县|