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

虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法和裝置制造方法

文檔序號(hào):6551900閱讀:152來源:國知局
虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法和裝置制造方法
【專利摘要】本發(fā)明實(shí)施例提供一種虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法和裝置,該方法包括:待切入第一虛擬機(jī)時(shí),判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)是否為所述第一虛擬機(jī)的虛擬機(jī)號(hào);所述當(dāng)前虛擬機(jī)號(hào)是在待切入第一虛擬機(jī)之前,在宿主機(jī)上運(yùn)行完成的虛擬機(jī)所對(duì)應(yīng)的虛擬機(jī)號(hào);若是,則確定虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值為切入所述第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)數(shù)據(jù);若否,將所述虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值存儲(chǔ)至所述預(yù)設(shè)空間內(nèi)存儲(chǔ)的虛擬機(jī)號(hào)所對(duì)應(yīng)的虛擬機(jī)暫存空間;將所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間內(nèi)的第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至所述虛擬機(jī)專用寄存器;通過本發(fā)明提供的虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法和裝置,優(yōu)化了虛擬機(jī)的切換過程,提高了虛擬機(jī)切換速度。
【專利說明】虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實(shí)施例涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法和
>J-U ρ?α裝直。
【背景技術(shù)】
[0002]隨著云計(jì)算的應(yīng)用,系統(tǒng)虛擬化得到了越來越快的發(fā)展,越來越多的架構(gòu)嘗試著增加虛擬化的支持,除了 Χ86架構(gòu)之外,精簡指令集架構(gòu)(Micropr-ocessor withoutinterlocked piped stages,簡稱MIPS)也提出了一套硬件輔助虛擬化規(guī)范,MIPS架構(gòu)下的系統(tǒng)虛擬化也得到了長足的發(fā)展。
[0003]MIPS架構(gòu)硬件輔助虛擬化規(guī)范中提出了一種專門供虛擬機(jī)的額外模式,即專門供虛擬機(jī)運(yùn)行的一種操作模式,在這種模式下?lián)碛泻芏鄬9┨摂M機(jī)使用的專用寄存器,可以稱之為虛擬機(jī)專用寄存器,通過這種方式可以很大程度上提升虛擬機(jī)的運(yùn)行速度。一般來說,切換虛擬機(jī)的方式如下:
[0004]當(dāng)前時(shí)刻準(zhǔn)備切入虛擬機(jī),將當(dāng)前時(shí)刻的物理CPU(Central Processing Unit,中央處理器)內(nèi)部宿主機(jī)通用寄存器、部分宿主機(jī)控制寄存器中的數(shù)據(jù)保存至宿主機(jī)的暫存空間,并將該虛擬機(jī)運(yùn)行所需的現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至物理CPU ;舉例來說,在當(dāng)前時(shí)刻之前的上一時(shí)刻,該虛擬機(jī)在宿主機(jī)上運(yùn)行過,且在運(yùn)行過程中該虛擬機(jī)訪問了寄存器(具體可以為通用寄存器、控制寄存器或?qū)S眉拇嫫?,將該寄存器中的值進(jìn)行了更新,例如更新了該虛擬機(jī)運(yùn)行所需的文件的存放路徑,為使該虛擬機(jī)在之后的運(yùn)行過程中可使用正確的存放路徑查找到上述運(yùn)行所需的文件,則將寄存器中的值作為現(xiàn)場(chǎng)數(shù)據(jù)保存至虛擬機(jī)暫存空間;因此,在當(dāng)前時(shí)刻準(zhǔn)備切入虛擬機(jī)時(shí),需要將虛擬機(jī)暫存空間存儲(chǔ)的現(xiàn)場(chǎng)數(shù)據(jù)進(jìn)行恢復(fù);依次類推,在切入虛擬機(jī)之后,進(jìn)行了該虛擬機(jī)的本次運(yùn)行,且下一個(gè)時(shí)刻準(zhǔn)備退出該虛擬機(jī)時(shí),則將寄存器中的當(dāng)前值(針對(duì)此次運(yùn)行過程中產(chǎn)生的值)作為新的現(xiàn)場(chǎng)數(shù)據(jù)保存至虛擬機(jī)暫存空間,并將之前保存至宿主機(jī)暫存空間的寄存器值恢復(fù)到物理CPU中。
[0005]影響虛擬機(jī)切換速度主要是這些寄存器的保存和恢復(fù),且在擁有硬件輔助虛擬化支持的情況下,由于增加了虛擬機(jī)專用寄存器,因此虛擬機(jī)切換時(shí)寄存器保存和恢復(fù)的開銷進(jìn)一步增大了,導(dǎo)致虛擬機(jī)切換速度的下降。

【發(fā)明內(nèi)容】

[0006]本發(fā)明實(shí)施例提供一種虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法和裝置,用于優(yōu)化虛擬機(jī)的切換過程,以提高虛擬機(jī)切換速度。
[0007]第一方面,本發(fā)明實(shí)施例提供一種虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法,包括:
[0008]待切入第一虛擬機(jī)時(shí),判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)是否為所述第一虛擬機(jī)的虛擬機(jī)號(hào);所述當(dāng)前虛擬機(jī)號(hào)是在待切入第一虛擬機(jī)之前,在宿主機(jī)上運(yùn)行完成的虛擬機(jī)所對(duì)應(yīng)的虛擬機(jī)號(hào);
[0009]若是,則確定虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值為切入所述第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)數(shù)據(jù);
[0010]若否,將所述虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值存儲(chǔ)至所述預(yù)設(shè)空間內(nèi)存儲(chǔ)的虛擬機(jī)號(hào)所對(duì)應(yīng)的虛擬機(jī)暫存空間;
[0011]將所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間內(nèi)的第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至所述虛擬機(jī)專用寄存器。
[0012]結(jié)合第一方面,在第一實(shí)施方式中,所述處理方法還包括:
[0013]當(dāng)所述第一虛擬機(jī)待退出時(shí),將所述第一虛擬機(jī)的虛擬機(jī)號(hào)作為新的所述當(dāng)前虛擬機(jī)號(hào),存儲(chǔ)至所述宿主機(jī)的預(yù)設(shè)空間內(nèi);
[0014]并將運(yùn)行所述第一虛擬機(jī)產(chǎn)生的更新后的第一現(xiàn)場(chǎng)數(shù)據(jù)作為新的當(dāng)前值,保留至所述虛擬機(jī)專用寄存器中。
[0015]結(jié)合第一方面第一實(shí)施方式,在第二實(shí)施方式中,在判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)是否為所述第一虛擬機(jī)的虛擬機(jī)號(hào)之前,所述控制方法還包括:
[0016]將第一寄存器中的宿主機(jī)的現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至所述宿主機(jī)暫存空間;
[0017]將所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間中的所述第二現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至第二寄存器中。
[0018]結(jié)合第一方面第二實(shí)施方式,在第三實(shí)施方式中,所述控制方法還包括:
[0019]當(dāng)所述第一虛擬機(jī)待退出時(shí),將所述第二寄存器中更新后的值作為新的第二現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間中;
[0020]將所述宿主機(jī)暫存空間存儲(chǔ)的所述宿主機(jī)當(dāng)前現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至所述第一寄存器。
[0021]結(jié)合第一方面第三實(shí)施方式,在第四實(shí)施方式中,所述第二寄存器為運(yùn)行虛擬機(jī)過程中,所述虛擬機(jī)訪問的通用寄存器和控制寄存器。
[0022]第二方面,本發(fā)明實(shí)施例提供一種虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理裝置,包括:
[0023]判斷模塊、第一存儲(chǔ)模塊和確定模塊,所述確定模塊與所述判斷模塊相連接,所述第一存儲(chǔ)模塊與所述判斷模塊相連接;
[0024]所述判斷模塊,用于待切入第一虛擬機(jī)時(shí),判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)是否為所述第一虛擬機(jī)的虛擬機(jī)號(hào);所述當(dāng)前虛擬機(jī)號(hào)是在待切入第一虛擬機(jī)之前,在宿主機(jī)上運(yùn)行完成的虛擬機(jī)所對(duì)應(yīng)的虛擬機(jī)號(hào);
[0025]所述確定模塊,用于在所述判斷模塊判斷所述宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)為所述第一虛擬機(jī)的虛擬機(jī)號(hào)時(shí),確定虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值為切入所述第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)數(shù)據(jù);
[0026]所述第一存儲(chǔ)模塊,用于在所述判斷模塊判斷所述宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)不為所述第一虛擬機(jī)的虛擬機(jī)號(hào)時(shí),將所述虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值存儲(chǔ)至所述預(yù)設(shè)空間內(nèi)存儲(chǔ)的虛擬機(jī)號(hào)所對(duì)應(yīng)的虛擬機(jī)暫存空間;將所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間內(nèi)的第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至所述虛擬機(jī)專用寄存器。
[0027]結(jié)合第二方面,在第一實(shí)施方式中,所述處理裝置還包括第二存儲(chǔ)模塊,
[0028]所述第二存儲(chǔ)模塊,用于當(dāng)所述第一虛擬機(jī)待退出時(shí),將所述第一虛擬機(jī)的虛擬機(jī)號(hào)作為新的所述當(dāng)前虛擬機(jī)號(hào),存儲(chǔ)至所述宿主機(jī)的預(yù)設(shè)空間內(nèi);
[0029]并將運(yùn)行所述第一虛擬機(jī)產(chǎn)生的更新后的第一現(xiàn)場(chǎng)數(shù)據(jù)作為新的當(dāng)前值,保留至所述虛擬機(jī)專用寄存器中。[0030]結(jié)合第二方面第一實(shí)施方式,在第二實(shí)施方式中,所述處理裝置還包括第三存儲(chǔ)模塊
[0031]所述第三存儲(chǔ)模塊,用于將第一寄存器中的宿主機(jī)當(dāng)前現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至所述宿主機(jī)暫存空間;
[0032]并將所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間中的所述第二現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至第二寄存器中。
[0033]結(jié)合第二方面第二實(shí)施方式,在第三實(shí)施方式中,所述處理裝置還包括第四存儲(chǔ)模塊
[0034]所述第四存儲(chǔ)模塊,用于當(dāng)所述第一虛擬機(jī)待退出時(shí),將所述第二寄存器中更新后的值作為新的第二現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間中;
[0035]并將所述宿主機(jī)暫存空間存儲(chǔ)的所述宿主機(jī)當(dāng)前現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至所述第一寄存器。
[0036]結(jié)合第二方面第三實(shí)施方式,在第四實(shí)施方式中,所述第二寄存器為運(yùn)行虛擬機(jī)過程中,所述虛擬機(jī)訪問的通用寄存器和控制寄存器。
[0037]本發(fā)明實(shí)施例提供的虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法和裝置,在待切入第一虛擬機(jī)時(shí),通過判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)為第一虛擬機(jī)的虛擬機(jī)號(hào),則可獲知虛擬機(jī)專用寄存器中的當(dāng)前值是可用于正確運(yùn)行第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)信息,即切入第一虛擬機(jī)之前,宿主機(jī)運(yùn)行了第一虛擬機(jī)并將用于該第一虛擬機(jī)再次運(yùn)行所需的第一現(xiàn)場(chǎng)數(shù)據(jù)未存儲(chǔ)至虛擬機(jī)暫存空間,而是保留在虛擬機(jī)專用寄存器中,則在本次運(yùn)行時(shí),不需要從虛擬機(jī)暫存空間中將第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至虛擬機(jī)專用寄存器,節(jié)省了虛擬機(jī)專用寄存器保存和恢復(fù)的開銷,提高了虛擬機(jī)的切換速度。
【專利附圖】

【附圖說明】
[0038]圖1為本發(fā)明虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法實(shí)施例一的流程圖;
[0039]圖2為本發(fā)明虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法實(shí)施例二的流程圖;
[0040]圖3為本發(fā)明虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理裝置實(shí)施例一的結(jié)構(gòu)圖;
[0041]圖4為本發(fā)明虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理裝置實(shí)施例二的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0042]圖1為本發(fā)明虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法實(shí)施例一的流程圖。如圖1所示,本實(shí)施例的執(zhí)行主體為虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理裝置,該處理裝置可以采用硬件和/或軟件的方式實(shí)現(xiàn),具體的,本實(shí)施例的具體步驟如下:
[0043]S101、待切入第一虛擬機(jī)時(shí),判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)是否為第一虛擬機(jī)的虛擬機(jī)號(hào);若是,執(zhí)行S102 ;若否,執(zhí)行S103。
[0044]本實(shí)施例中,分配了宿主機(jī)內(nèi)的一段存儲(chǔ)空間作為上述預(yù)設(shè)空間,該預(yù)設(shè)空間用于存儲(chǔ)前一個(gè)時(shí)刻宿主機(jī)上運(yùn)行完成的虛擬機(jī)的虛擬機(jī)號(hào),即上述當(dāng)前虛擬機(jī)號(hào)是在待切入第一虛擬機(jī)之前,在宿主機(jī)上結(jié)束運(yùn)行的虛擬機(jī)所對(duì)應(yīng)的虛擬機(jī)號(hào);則在當(dāng)前時(shí)刻,宿主機(jī)準(zhǔn)備切入的第一虛擬機(jī)時(shí),該第一虛擬機(jī)可能是前一個(gè)時(shí)刻宿主機(jī)上運(yùn)行完成的虛擬機(jī),也可能不是,因此需要判斷預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)是否為所述第一虛擬機(jī)的虛擬機(jī)號(hào)。
[0045]上述前一時(shí)刻、當(dāng)前時(shí)刻為相對(duì)概念;可以理解的,在實(shí)際應(yīng)用中,在tl時(shí)刻運(yùn)行完成虛擬機(jī)A,隨后在t2時(shí)刻再次運(yùn)行虛擬機(jī)B,則對(duì)t2時(shí)刻來說,tl為前一時(shí)刻,而t2即為當(dāng)前時(shí)刻;隨著時(shí)間的推移,在t3時(shí)刻虛擬機(jī)B運(yùn)行完成,且在t4時(shí)刻運(yùn)行了虛擬機(jī)C,則對(duì)t4時(shí)刻來說,t3為前一時(shí)刻,而t4即為當(dāng)前時(shí)刻。
[0046]S102、確定虛擬機(jī)專用寄存器的當(dāng)前值為切入第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)數(shù)據(jù)。
[0047]上述現(xiàn)場(chǎng)數(shù)據(jù)用于在虛擬機(jī)第一次運(yùn)行結(jié)束之后保證該虛擬機(jī)正確進(jìn)行第二次運(yùn)行,其中“第一次”和“第二次”為相對(duì)概念,即在tl時(shí)刻運(yùn)行了虛擬機(jī)A,在t2時(shí)刻再次運(yùn)行虛擬機(jī)A,則對(duì)于t2時(shí)刻來說,tl時(shí)刻運(yùn)行的虛擬機(jī)過程為第一次運(yùn)行,而t2時(shí)刻則為第二次運(yùn)行;可以理解的,當(dāng)t3時(shí)刻再次運(yùn)行虛擬機(jī)A時(shí),對(duì)于t3時(shí)刻來說,t2時(shí)刻則為第一次運(yùn)行,t3時(shí)刻為第二次運(yùn)行。
[0048]上述第一現(xiàn)場(chǎng)數(shù)據(jù)是第一虛擬機(jī)在第一次運(yùn)行過程中,訪問虛擬機(jī)專用寄存器產(chǎn)生的現(xiàn)場(chǎng)數(shù)據(jù);該第一現(xiàn)場(chǎng)數(shù)據(jù)用于保證第一虛擬機(jī)在第二次運(yùn)行過程中,涉及虛擬機(jī)專用寄存器的操作時(shí),該第一虛擬機(jī)可正確運(yùn)行;
[0049]由于在SlOl中判斷出預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)為第一虛擬機(jī)的虛擬機(jī)號(hào),則說明宿主機(jī)在當(dāng)前時(shí)刻之前,所運(yùn)行的虛擬機(jī)即為該第一虛擬機(jī),因此虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值即為可保證第一虛擬機(jī)在當(dāng)前時(shí)刻可正確運(yùn)行的第一現(xiàn)場(chǎng)數(shù)據(jù),也就是說,宿主機(jī)在當(dāng)前時(shí)刻之前運(yùn)行第一虛擬機(jī)之后,宿主機(jī)上無任何程序更改虛擬機(jī)專用寄存器的值,因此第一虛擬機(jī)在當(dāng)前時(shí)刻再次在宿主機(jī)上運(yùn)行時(shí),虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值即為第一虛擬機(jī)的正確運(yùn)行不可缺少的第一現(xiàn)場(chǎng)數(shù)據(jù)。
[0050]通常宿主機(jī)上運(yùn)行的每一個(gè)虛擬機(jī)在運(yùn)行過程中都會(huì)對(duì)虛擬機(jī)專用寄存器、通用寄存器和控制寄存器進(jìn)行訪問,在每一個(gè)虛擬機(jī)結(jié)束運(yùn)行時(shí),各個(gè)寄存器中的值已發(fā)生改變,因此當(dāng)虛擬機(jī)在結(jié)束運(yùn)行時(shí),各個(gè)寄存器中的值則作為該虛擬機(jī)的現(xiàn)場(chǎng)數(shù)據(jù),且該虛擬機(jī)再次運(yùn)行時(shí),可根據(jù)這些現(xiàn)場(chǎng)數(shù)據(jù)正確運(yùn)行;其中,當(dāng)虛擬機(jī)在結(jié)束運(yùn)行時(shí),虛擬機(jī)專用寄存器中的值是第一現(xiàn)場(chǎng)數(shù)據(jù),而作為非虛擬機(jī)專用寄存器的第二寄存器(如虛擬機(jī)訪問過的通用寄存器、控制寄存器等)的值為所述的第二現(xiàn)場(chǎng)數(shù)據(jù);也可以說,第一虛擬機(jī)在第一次運(yùn)行結(jié)束后,若要正常進(jìn)行第二次的運(yùn)行,則該第一虛擬機(jī)所需要的現(xiàn)場(chǎng)數(shù)據(jù)至少包括作為第一現(xiàn)場(chǎng)數(shù)據(jù)的虛擬機(jī)專用寄存器中的值,和作為第二現(xiàn)場(chǎng)數(shù)據(jù)的第二寄存器(如虛擬機(jī)訪問過的通用寄存器、控制寄存器等)的值。
[0051]S103、將虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值存儲(chǔ)至預(yù)設(shè)空間內(nèi)存儲(chǔ)的虛擬機(jī)號(hào)所對(duì)應(yīng)的虛擬機(jī)暫存空間。
[0052]由于在SlOl中判斷出預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)不是第一虛擬機(jī)的虛擬機(jī)號(hào),則說明宿主機(jī)在當(dāng)前時(shí)刻之前,所運(yùn)行的虛擬機(jī)即不為該第一虛擬機(jī)。
[0053]舉例來說,在當(dāng)前時(shí)刻之前,宿主機(jī)上運(yùn)行了虛擬機(jī)B,則虛擬機(jī)B結(jié)束運(yùn)行時(shí),虛擬機(jī)專用寄存器中的值是針對(duì)該虛擬機(jī)B的第一現(xiàn)場(chǎng)數(shù)據(jù),且預(yù)設(shè)空間內(nèi)存儲(chǔ)的虛擬機(jī)號(hào)為虛擬機(jī)B的虛擬機(jī)號(hào),但在當(dāng)前時(shí)刻需要運(yùn)行作為上述第一虛擬機(jī)的虛擬機(jī)A,而虛擬機(jī)A在運(yùn)行過程中會(huì)訪問該虛擬機(jī)專用寄存器,因此為了防止運(yùn)行虛擬機(jī)A的過程中修改了虛擬機(jī)專用寄存器中針對(duì)該虛擬機(jī)B的第一現(xiàn)場(chǎng)數(shù)據(jù),導(dǎo)致虛擬機(jī)B再次運(yùn)行時(shí),不能根據(jù)正確的第一現(xiàn)場(chǎng)數(shù)據(jù)運(yùn)行,因此將虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值,即針對(duì)虛擬機(jī)B的第一現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至虛擬機(jī)B對(duì)應(yīng)的虛擬機(jī)暫存空間。
[0054]S104、將第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間內(nèi)的第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至虛擬機(jī)專用
寄存器。
[0055]需要補(bǔ)充說明的是,通過上述SlOl?S102或SlOl和S103,以確定了切入所述第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)數(shù)據(jù)的同時(shí),還將第一虛擬機(jī)對(duì)應(yīng)的暫存空間中的第二現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至第二現(xiàn)場(chǎng)數(shù)據(jù),隨后基于第一現(xiàn)場(chǎng)數(shù)據(jù)和第二現(xiàn)場(chǎng)數(shù)據(jù),切入第一虛擬機(jī)。
[0056]舉例來說,在當(dāng)前時(shí)刻t3之前的t2時(shí)刻宿主機(jī)運(yùn)行了虛擬機(jī)B,而在運(yùn)行虛擬機(jī)B之前的tl時(shí)刻,宿主機(jī)運(yùn)行完成了虛擬機(jī)A,則可以理解的,在tl時(shí)刻虛擬機(jī)專用寄存器中存儲(chǔ)的是虛擬機(jī)A的第一現(xiàn)場(chǎng)數(shù)據(jù),且虛擬機(jī)A對(duì)應(yīng)的虛擬機(jī)暫存空間中存儲(chǔ)了第二寄存器中的第二現(xiàn)場(chǎng)數(shù)據(jù),則在t2時(shí)刻切入虛擬機(jī)B時(shí),虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理裝置將虛擬機(jī)專用寄存器中存儲(chǔ)的虛擬機(jī)A的第一現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至虛擬機(jī)A對(duì)應(yīng)的虛擬機(jī)暫存空間中;因此在t3時(shí)刻再次運(yùn)行作為第一虛擬機(jī)的虛擬機(jī)A時(shí),則在虛擬機(jī)A對(duì)應(yīng)虛擬機(jī)暫存空間中將t2時(shí)刻存儲(chǔ)的第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至虛擬機(jī)專用寄存器,同樣的,將第二現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至第二寄存器,則基于些現(xiàn)場(chǎng)數(shù)據(jù)在當(dāng)前時(shí)刻正確運(yùn)行虛擬機(jī)A。
[0057]需要補(bǔ)充的是,在t3時(shí)刻之前運(yùn)行了虛擬機(jī)B,且在t3時(shí)刻切入作為第一虛擬機(jī)的虛擬機(jī)A時(shí),該虛擬機(jī)A是首次運(yùn)行,則虛擬機(jī)A對(duì)應(yīng)的虛擬機(jī)暫存空間中存儲(chǔ)的第一現(xiàn)場(chǎng)數(shù)據(jù)和第二現(xiàn)場(chǎng)數(shù)據(jù)具體為虛擬機(jī)A的初始化數(shù)據(jù)。
[0058]本實(shí)施例中,待切入第一虛擬機(jī)時(shí),通過判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)為第一虛擬機(jī)的虛擬機(jī)號(hào),則可獲知虛擬機(jī)專用寄存器中的當(dāng)前值是切入第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)數(shù)據(jù),即切入第一虛擬機(jī)之前,宿主機(jī)運(yùn)行了第一虛擬機(jī)并將用于該第一虛擬機(jī)再次運(yùn)行所需的第一現(xiàn)場(chǎng)數(shù)據(jù)未存儲(chǔ)至虛擬機(jī)暫存空間,而是保留在虛擬機(jī)專用寄存器中,則在本次運(yùn)行時(shí),不需要從虛擬機(jī)暫存空間中將第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至虛擬機(jī)專用寄存器,節(jié)省了虛擬機(jī)專用寄存器保存和恢復(fù)的開銷,提高了虛擬機(jī)的切換速度。
[0059]圖2為本發(fā)明虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法實(shí)施例二的流程圖。如圖2所示,本實(shí)施例是在圖1所示的實(shí)施例的基礎(chǔ)上作出進(jìn)一步的描述,具體的,本實(shí)施例包括的具體步驟為:
[0060]S201、將第一寄存器中的宿主機(jī)的現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至所述宿主機(jī)暫存空間。
[0061]上述第一寄存器為宿主機(jī)正常運(yùn)行時(shí)訪問的寄存器,第一寄存器具體包括通用寄存器、宿主機(jī)需訪問的控制寄存器等;宿主機(jī)有用于自身運(yùn)行的運(yùn)行系統(tǒng),而各種程序是在宿主機(jī)正常運(yùn)行的基礎(chǔ)上進(jìn)行工作的,上述虛擬機(jī)也為其中的一種運(yùn)行程序;宿主機(jī)的運(yùn)行系統(tǒng)如同虛擬機(jī)的運(yùn)行,在宿主機(jī)的運(yùn)行系統(tǒng)正常運(yùn)行過程中由于訪問了第一寄存器,則在第一寄存器中寫入、修改、更新了一些數(shù)據(jù),則在宿主機(jī)運(yùn)行虛擬機(jī)時(shí),為了防止運(yùn)行的虛擬機(jī)訪問第一寄存器而更改了第一寄存器中的值,導(dǎo)致虛擬機(jī)結(jié)束運(yùn)行后,宿主機(jī)無法進(jìn)行自身的運(yùn)行系統(tǒng),則在切入第一虛擬機(jī)時(shí),需對(duì)第一寄存器中的宿主機(jī)當(dāng)前現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)值宿主機(jī)暫存空間,例如在t3時(shí)刻需要切入虛擬機(jī),此時(shí)第一寄存器中的值即為宿主機(jī)在t3時(shí)刻之前運(yùn)行產(chǎn)生的現(xiàn)場(chǎng)數(shù)據(jù),當(dāng)t4時(shí)刻結(jié)束虛擬機(jī)后,即需要切換回宿主機(jī)的運(yùn)行環(huán)境中,因此宿主機(jī)需根據(jù)之前t3時(shí)刻的宿主機(jī)的現(xiàn)場(chǎng)數(shù)據(jù),正確切換回宿主機(jī)的運(yùn)行環(huán)境;為了避免宿主機(jī)上的程序更改第一寄存器中的值,則在切入第一虛擬機(jī)時(shí),需對(duì)第一寄存器中的宿主機(jī)當(dāng)前現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)值宿主機(jī)暫存空間;其中第一寄存器具體包括通用寄存器、宿主機(jī)需訪問的控制寄存器等。
[0062]S202、將第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間中的第二現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至第二寄存器中。
[0063]由于第一虛擬機(jī)的正常運(yùn)行是需要第二現(xiàn)場(chǎng)數(shù)據(jù)的,因此在切入第一虛擬機(jī)之前,需將第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間中的第二現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至第二寄存器中。
[0064]S203、判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)是否為第一虛擬機(jī)的虛擬機(jī)號(hào);若是,執(zhí)行S204 ;若否,執(zhí)行S205。
[0065]S204、確定虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值為切入所述第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)數(shù)據(jù)。
[0066]執(zhí)行上述S201?S204后,即已經(jīng)為第一虛擬機(jī)的切入準(zhǔn)備好第一現(xiàn)場(chǎng)數(shù)據(jù)和第二現(xiàn)場(chǎng)數(shù)據(jù)便可執(zhí)行S207。
[0067]S205、將虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值存儲(chǔ)至預(yù)設(shè)空間內(nèi)存儲(chǔ)的虛擬機(jī)號(hào)所對(duì)應(yīng)的虛擬機(jī)暫存空間;
[0068]S206、將第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間內(nèi)的第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至虛擬機(jī)專用寄存器;
[0069]通過執(zhí)行S201?S203和S205和S206,為第一虛擬機(jī)的切入準(zhǔn)備好第一現(xiàn)場(chǎng)數(shù)據(jù)和第二現(xiàn)場(chǎng)數(shù)據(jù),便可執(zhí)行S207。
[0070]S207、根據(jù)第一現(xiàn)場(chǎng)數(shù)據(jù)和所述第二現(xiàn)場(chǎng)數(shù)據(jù),切入第一虛擬機(jī)。
[0071]上述S203至S206可參考前述SlOl?S104。
[0072]S208、第一虛擬機(jī)待退出時(shí),將第一虛擬機(jī)的虛擬機(jī)號(hào)作為新的當(dāng)前虛擬機(jī)號(hào),存儲(chǔ)至宿主機(jī)的預(yù)設(shè)空間內(nèi)。
[0073]S209、將運(yùn)行第一虛擬機(jī)產(chǎn)生的更新后的第一現(xiàn)場(chǎng)數(shù)據(jù)作為新的當(dāng)前值,保留在虛擬機(jī)專用寄存器中,并將第二寄存器中更新后的值作為新的第二現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間。
[0074]上述第一虛擬機(jī)結(jié)束本次運(yùn)行之后,宿主機(jī)先開始運(yùn)行自身的運(yùn)行系統(tǒng),隨后可能會(huì)再次切入該第一虛擬機(jī),若在這種情況下,再次切入的第一虛擬機(jī)可直接使用虛擬機(jī)專用寄存器中的當(dāng)前值作為第一虛擬機(jī)再次正常運(yùn)行所需的第一現(xiàn)場(chǎng)數(shù)據(jù),因此在這種情況下,虛擬機(jī)專用寄存器中的值不需如現(xiàn)有技術(shù)中先保存至虛擬機(jī)暫存空間,隨后再恢復(fù)至該虛擬機(jī)專用寄存器,從而可節(jié)省了對(duì)虛擬機(jī)專用寄存器進(jìn)行保存和恢復(fù)的開銷。
[0075]另外,第一虛擬機(jī)在運(yùn)行過程中訪問第二寄存器,即在該第一虛擬機(jī)待退出時(shí),第二寄存器中的值相比于該第一虛擬機(jī)在本次切入時(shí)已發(fā)生更新;由于退出第一虛擬機(jī)后,宿主機(jī)的自身的運(yùn)行系統(tǒng)及之后承載的非第一虛擬機(jī)會(huì)訪問第二寄存器,因此為了保護(hù)供第一虛擬機(jī)再次正常運(yùn)行所需的第二現(xiàn)場(chǎng)數(shù)據(jù),因此將第二寄存器中更新后的值作為新的第二現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間中。
[0076]S210、將宿主機(jī)暫存空間存儲(chǔ)的宿主機(jī)現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至所述第一寄存器。
[0077]將第一虛擬機(jī)退出后,即宿主機(jī)開始運(yùn)行自身的運(yùn)行系統(tǒng),為使宿主機(jī)正確的運(yùn)行,需要將S201中存儲(chǔ)至宿主機(jī)暫存空間的宿主機(jī)當(dāng)前現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至第一寄存器。
[0078]S211、退出第一虛擬機(jī)。
[0079]為使上述流程更為清楚,進(jìn)行下述舉例說明:[0080]在tl時(shí)刻運(yùn)行虛擬機(jī)A,該虛擬機(jī)A可以為KVM(Kernel-based Virtual Machine,基于內(nèi)核的虛擬機(jī)),虛擬機(jī)A在退出時(shí)將虛擬機(jī)專用寄存器中的一個(gè)字符a的數(shù)值定義為1,將第二寄存器中的字符b定義為2,其中“a = I”保留在虛擬機(jī)的專用寄存器中,且虛擬機(jī)A的虛擬機(jī)號(hào)緩存在上述預(yù)設(shè)空間內(nèi),該預(yù)設(shè)空間可以使用變量定義,而“b = 2”由第二寄存器保存至虛擬機(jī)A對(duì)應(yīng)的虛擬機(jī)暫存空間中,隨后恢復(fù)宿主機(jī)的運(yùn)行環(huán)境;在作為當(dāng)前時(shí)刻的t2時(shí)刻,虛擬機(jī)A作為第一虛擬機(jī)待切入,則執(zhí)行S201、S202jf“b = 2”恢復(fù)至第二寄存器,并通過S203獲知宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的虛擬機(jī)號(hào)為虛擬機(jī)A,則可知此時(shí)的虛擬機(jī)專用寄存中的第一現(xiàn)場(chǎng)數(shù)據(jù)可被此時(shí)的虛擬機(jī)A使用,則執(zhí)行S204,進(jìn)一步執(zhí)行S207切入虛擬機(jī)A ;虛擬機(jī)A完成本次運(yùn)行時(shí),按照S208將虛擬機(jī)A的虛擬機(jī)號(hào)保存至宿主機(jī)的預(yù)設(shè)空間內(nèi);由于“a = I”更新為“a = 2”,則按照S209,將“a = 2”作為新的當(dāng)前值,保留在虛擬機(jī)專用寄存器中,并將第二寄存器中更新后的值“b = 3”作為新的第二現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至虛擬機(jī)A對(duì)應(yīng)的虛擬機(jī)暫存空間中;最后按照S210將宿主機(jī)暫存空間存儲(chǔ)的宿主機(jī)當(dāng)前現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至第一寄存器,即將宿主機(jī)的運(yùn)行環(huán)境恢復(fù)為t2時(shí)刻之前的狀態(tài),以使宿主機(jī)的狀態(tài)保持準(zhǔn)確正常;
[0081]若在t2時(shí)刻作為待切入的第一虛擬機(jī)為虛擬機(jī)B,則依次通過S201?S203,確定虛擬機(jī)專用寄存器中此時(shí)的“a = I”不能使虛擬機(jī)B正常運(yùn)行,則需將虛擬機(jī)B對(duì)應(yīng)的虛擬機(jī)暫存空間中第一現(xiàn)場(chǎng)數(shù)據(jù)、第二現(xiàn)場(chǎng)數(shù)據(jù)分別恢復(fù)至虛擬機(jī)專用寄存器和第二寄存器,但此時(shí)為了保證虛擬機(jī)專用寄存器中用于虛擬機(jī)A再次運(yùn)行使用的“a = I”不被虛擬機(jī)B的第一現(xiàn)場(chǎng)數(shù)據(jù)覆蓋,則執(zhí)行S205、S206 ;隨后當(dāng)虛擬機(jī)B退出時(shí),則虛擬機(jī)B作為第一虛擬機(jī),切換虛擬機(jī)的控制裝置繼續(xù)按照S208?S211執(zhí)行。
[0082]本實(shí)施例中,待切入第一虛擬機(jī)時(shí),通過判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)為第一虛擬機(jī)的虛擬機(jī)號(hào),則可獲知虛擬機(jī)專用寄存器中的當(dāng)前值是可用于正確運(yùn)行第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)信息,即切入第一虛擬機(jī)之前,宿主機(jī)運(yùn)行了第一虛擬機(jī)并將用于該第一虛擬機(jī)再次運(yùn)行所需的第一現(xiàn)場(chǎng)數(shù)據(jù)未存儲(chǔ)至虛擬機(jī)暫存空間,而是保留在虛擬機(jī)專用寄存器中,則在本次運(yùn)行時(shí),不需要從虛擬機(jī)暫存空間中將第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至虛擬機(jī)專用寄存器,節(jié)省了虛擬機(jī)專用寄存器保存和恢復(fù)的開銷,提高了虛擬機(jī)的切換速度。
[0083]圖3為本發(fā)明虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理裝置實(shí)施例一的結(jié)構(gòu)圖。如圖3所示,本實(shí)施例中的切換虛擬機(jī)的控制裝置包括:
[0084]判斷模塊31、第一存儲(chǔ)模塊32和確定模塊33,其中確定模塊33與判斷模塊31相連接,第一存儲(chǔ)模塊32與判斷模塊31相連接;
[0085]判斷模塊31用于待切入第一虛擬機(jī)時(shí),判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)是否為所述第一虛擬機(jī)的虛擬機(jī)號(hào);所述當(dāng)前虛擬機(jī)號(hào)是在待切入第一虛擬機(jī)之前,在宿主機(jī)上運(yùn)行完成的虛擬機(jī)所對(duì)應(yīng)的虛擬機(jī)號(hào);
[0086]所述確定模塊33,用于在所述判斷模塊31判斷所述宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)為所述第一虛擬機(jī)的虛擬機(jī)號(hào)時(shí),確定虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值為切入所述第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)數(shù)據(jù);
[0087]所述第一存儲(chǔ)模塊32,用于在所述判斷模塊判斷所述宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)不為所述第一虛擬機(jī)的虛擬機(jī)號(hào)時(shí),將所述虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值存儲(chǔ)至所述預(yù)設(shè)空間內(nèi)存儲(chǔ)的虛擬機(jī)號(hào)所對(duì)應(yīng)的虛擬機(jī)暫存空間;
[0088]所述第一存儲(chǔ)模塊32將所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間內(nèi)的第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至所述虛擬機(jī)專用寄存器。
[0089]本實(shí)施例中,待切入第一虛擬機(jī)時(shí),通過判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)為第一虛擬機(jī)的虛擬機(jī)號(hào),則可獲知虛擬機(jī)專用寄存器中的當(dāng)前值是切入第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)數(shù)據(jù),即切入第一虛擬機(jī)之前,宿主機(jī)運(yùn)行了第一虛擬機(jī)并將用于該第一虛擬機(jī)再次運(yùn)行所需的第一現(xiàn)場(chǎng)數(shù)據(jù)未存儲(chǔ)至虛擬機(jī)暫存空間,而是保留在虛擬機(jī)專用寄存器中,則在本次運(yùn)行時(shí),不需要從虛擬機(jī)暫存空間中將第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至虛擬機(jī)專用寄存器,節(jié)省了虛擬機(jī)專用寄存器保存和恢復(fù)的開銷,提高了虛擬機(jī)的切換速度。
[0090]圖4為本發(fā)明虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理裝置實(shí)施例二的結(jié)構(gòu)圖。如圖4所示,該處理裝置還包括:
[0091]第二存儲(chǔ)模塊34,用于當(dāng)所述第一虛擬機(jī)待退出時(shí),將所述第一虛擬機(jī)的虛擬機(jī)號(hào)作為新的所述當(dāng)前虛擬機(jī)號(hào),存儲(chǔ)至所述宿主機(jī)的預(yù)設(shè)空間內(nèi);
[0092]并將運(yùn)行所述第一虛擬機(jī)產(chǎn)生的更新后的第一現(xiàn)場(chǎng)數(shù)據(jù)作為新的當(dāng)前值,保留至所述虛擬機(jī)專用寄存器中。
[0093]進(jìn)一步的,處理裝置還包括第三存儲(chǔ)模塊36,所述第三存儲(chǔ)模塊35還用于
[0094]將第一寄存器中的宿主機(jī)當(dāng)前現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至所述宿主機(jī)暫存空間;
[0095]并將所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間中的所述第二現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至第二寄存器中。
[0096]進(jìn)一步的,處理裝置還包括第四存儲(chǔ)模塊36,用于
[0097]當(dāng)所述第一虛擬機(jī)待退出時(shí),將所述第二寄存器中更新后的值作為新的第二現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間中;
[0098]并將所述宿主機(jī)暫存空間存儲(chǔ)的所述宿主機(jī)當(dāng)前現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至所述第一寄存器。
[0099]其中,上述第二寄存器為運(yùn)行虛擬機(jī)過程中,所述虛擬機(jī)訪問的通用寄存器和控制寄存器。
[0100]具體來說,虛擬機(jī)在一次運(yùn)行過程中,不僅會(huì)對(duì)虛擬機(jī)專用寄存器訪問,還會(huì)對(duì)作為第二寄存器的通用寄存器和控制寄存器等進(jìn)行訪問,在每一個(gè)虛擬機(jī)結(jié)束運(yùn)行時(shí),各個(gè)寄存器中的值已發(fā)生改變,因此當(dāng)虛擬機(jī)在結(jié)束運(yùn)行時(shí),各個(gè)寄存器中的值則作為該虛擬機(jī)的現(xiàn)場(chǎng)數(shù)據(jù),且該虛擬機(jī)再次運(yùn)行時(shí),可根據(jù)這些現(xiàn)場(chǎng)數(shù)據(jù)正確運(yùn)行;其中,當(dāng)虛擬機(jī)在結(jié)束運(yùn)行時(shí),虛擬機(jī)專用寄存器中的值是第一現(xiàn)場(chǎng)數(shù)據(jù),而作為非虛擬機(jī)專用寄存器的第二寄存器(如虛擬機(jī)訪問過的通用寄存器、控制寄存器等)的值為所述的第二現(xiàn)場(chǎng)數(shù)據(jù);也可以說,第一虛擬機(jī)在第一次運(yùn)行結(jié)束后,若要正常進(jìn)行第二次的運(yùn)行,則該第一虛擬機(jī)所需要的現(xiàn)場(chǎng)數(shù)據(jù)至少包括作為第一現(xiàn)場(chǎng)數(shù)據(jù)的虛擬機(jī)專用寄存器中的值,和作為第二現(xiàn)場(chǎng)數(shù)據(jù)的第二寄存器(如虛擬機(jī)訪問過的通用寄存器、控制寄存器等)的值;當(dāng)虛擬機(jī)結(jié)束運(yùn)行時(shí),也需要對(duì)第一現(xiàn)場(chǎng)數(shù)據(jù)和第二現(xiàn)場(chǎng)數(shù)據(jù)做出妥當(dāng)?shù)奶幚?;因此,用于切入虛擬機(jī)和在虛擬機(jī)結(jié)束運(yùn)行時(shí)控制虛擬機(jī)切出的切換模塊37均與上述確定模塊33、第一存儲(chǔ)模塊32、第二存儲(chǔ)模塊34、第三存儲(chǔ)模塊35和第四存儲(chǔ)模塊36相連。
[0101]本實(shí)施例中的各個(gè)模塊對(duì)應(yīng)執(zhí)行上述各個(gè)方法實(shí)施例中的各個(gè)步驟,具體實(shí)施過程及效果請(qǐng)參照前述方法實(shí)施例,在此不再贅述。
[0102]本實(shí)施例中,待切入第一虛擬機(jī)時(shí),切換虛擬機(jī)的控制裝置通過判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)為第一虛擬機(jī)的虛擬機(jī)號(hào),則可獲知虛擬機(jī)專用寄存器中的當(dāng)前值是可用于正確運(yùn)行第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)信息,即切入第一虛擬機(jī)之前,宿主機(jī)運(yùn)行了第一虛擬機(jī)并將用于該第一虛擬機(jī)再次運(yùn)行所需的第一現(xiàn)場(chǎng)數(shù)據(jù)未存儲(chǔ)至虛擬機(jī)暫存空間,而是保留在虛擬機(jī)專用寄存器中,則在本次運(yùn)行時(shí),切換虛擬機(jī)的控制裝置不需要從虛擬機(jī)暫存空間中將第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至虛擬機(jī)專用寄存器,節(jié)省了虛擬機(jī)專用寄存器保存和恢復(fù)的開銷,提高了虛擬機(jī)的切換速度。
[0103]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0104]最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理方法,其特征在于,包括: 待切入第一虛擬機(jī)時(shí),判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)是否為所述第一虛擬機(jī)的虛擬機(jī)號(hào);所述當(dāng)前虛擬機(jī)號(hào)是在待切入第一虛擬機(jī)之前,在宿主機(jī)上運(yùn)行完成的虛擬機(jī)所對(duì)應(yīng)的虛擬機(jī)號(hào); 若是,則確定虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值為切入所述第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)數(shù)據(jù); 若否,將所述虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值存儲(chǔ)至所述預(yù)設(shè)空間內(nèi)存儲(chǔ)的虛擬機(jī)號(hào)所對(duì)應(yīng)的虛擬機(jī)暫存空間; 將所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間內(nèi)的第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至所述虛擬機(jī)專用寄存器。
2.根據(jù)權(quán)利要求1所述的處理方法,其特征在于,還包括: 當(dāng)所述第一虛擬機(jī)待退出時(shí),將所述第一虛擬機(jī)的虛擬機(jī)號(hào)作為新的所述當(dāng)前虛擬機(jī)號(hào),存儲(chǔ)至所述宿主機(jī)的預(yù)設(shè)空間內(nèi); 并將運(yùn)行所述第一虛擬機(jī)產(chǎn)生的更新后的第一現(xiàn)場(chǎng)數(shù)據(jù)作為新的當(dāng)前值,保留至所述虛擬機(jī)專用寄存器中。
3.根據(jù)權(quán)利要求2所述的處理方法,其特征在于,在判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)是否為所述第一虛擬機(jī)的虛擬機(jī)號(hào)之前,所述處理方法還包括: 將第一寄存器中的宿主機(jī)的現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至所述宿主機(jī)暫存空間; 將所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間中的所述第二現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至第二寄存器中。
4.根據(jù)權(quán)利要求3所述的處理方法,其特征在于,所述還包括: 當(dāng)所述第一虛擬機(jī)待退出時(shí),將所述第二寄存器中更新后的值作為新的第二現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間中; 將所述宿主機(jī)暫存空間存儲(chǔ)的所述宿主機(jī)當(dāng)前現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至所述第一寄存器。
5.根據(jù)權(quán)利要求4所述的處理方法,其特征在于,所述第二寄存器為運(yùn)行虛擬機(jī)過程中,所述虛擬機(jī)訪問的通用寄存器和控制寄存器。
6.一種虛擬機(jī)現(xiàn)場(chǎng)數(shù)據(jù)的處理裝置,其特征在于,包括: 判斷模塊、第一存儲(chǔ)模塊和確定模塊,所述確定模塊與所述判斷模塊相連接,所述第一存儲(chǔ)模塊與所述判斷模塊相連接; 所述判斷模塊,用于待切入第一虛擬機(jī)時(shí),判斷宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)是否為所述第一虛擬機(jī)的虛擬機(jī)號(hào);所述當(dāng)前虛擬機(jī)號(hào)是在待切入第一虛擬機(jī)之前,在宿主機(jī)上運(yùn)行完成的虛擬機(jī)所對(duì)應(yīng)的虛擬機(jī)號(hào); 所述確定模塊,用于在所述判斷模塊判斷所述宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)為所述第一虛擬機(jī)的虛擬機(jī)號(hào)時(shí),確定虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值為切入所述第一虛擬機(jī)所需的第一現(xiàn)場(chǎng)數(shù)據(jù); 所述第一存儲(chǔ)模塊,用于在所述判斷模塊判斷所述宿主機(jī)的預(yù)設(shè)空間內(nèi)存儲(chǔ)的當(dāng)前虛擬機(jī)號(hào)不為所述第一虛擬機(jī)的虛擬機(jī)號(hào)時(shí),將所述虛擬機(jī)專用寄存器內(nèi)的當(dāng)前值存儲(chǔ)至所述預(yù)設(shè)空間內(nèi)存儲(chǔ)的虛擬機(jī)號(hào)所對(duì)應(yīng)的虛擬機(jī)暫存空間;將所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間內(nèi)的第一現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至所述虛擬機(jī)專用寄存器。
7.根據(jù)權(quán)利要求6所述的處理裝置,其特征在于,所述處理裝置還包括第二存儲(chǔ)模塊, 所述第二存儲(chǔ)模塊,用于當(dāng)所述第一虛擬機(jī)待退出時(shí),將所述第一虛擬機(jī)的虛擬機(jī)號(hào)作為新的所述當(dāng)前虛擬機(jī)號(hào),存儲(chǔ)至所述宿主機(jī)的預(yù)設(shè)空間內(nèi); 并將運(yùn)行所述第一虛擬機(jī)產(chǎn)生的更新后的第一現(xiàn)場(chǎng)數(shù)據(jù)作為新的當(dāng)前值,保留至所述虛擬機(jī)專用寄存器中。
8.根據(jù)權(quán)利要求7所述的處理裝置,其特征在于,所述處理裝置還包括第三存儲(chǔ)模塊, 所述第三存儲(chǔ)模塊,用于將第一寄存器中的宿主機(jī)當(dāng)前現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至所述宿主機(jī)暫存空間; 并將所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間中的所述第二現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至第二寄存器中。
9.根據(jù)權(quán)利要求8所述的處理裝置,其特征在于,所述處理裝置還包括第四存儲(chǔ)模塊, 所述第四存儲(chǔ)模塊,用于當(dāng)所述第一虛擬機(jī)待退出時(shí),將所述第二寄存器中更新后的值作為新的第二現(xiàn)場(chǎng)數(shù)據(jù)存儲(chǔ)至所述第一虛擬機(jī)對(duì)應(yīng)的虛擬機(jī)暫存空間中; 并將所述宿主機(jī)暫存空間存儲(chǔ)的所述宿主機(jī)當(dāng)前現(xiàn)場(chǎng)數(shù)據(jù)恢復(fù)至所述第一寄存器。
10.根據(jù)權(quán)利要求9所述的處理裝置,其特征在于,所述第二寄存器為運(yùn)行虛擬機(jī)過程中,所述虛擬機(jī)訪問的通用寄存器和控制寄存器。
【文檔編號(hào)】G06F9/455GK104035811SQ201410309802
【公開日】2014年9月10日 申請(qǐng)日期:2014年7月1日 優(yōu)先權(quán)日:2014年7月1日
【發(fā)明者】臺(tái)運(yùn)方, 蔡萬偉, 劉奇, 張戈 申請(qǐng)人:龍芯中科技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
灵宝市| 虞城县| 运城市| 固安县| 大渡口区| 平塘县| 盐津县| 苏尼特左旗| 南平市| 三台县| 古浪县| 怀来县| 塘沽区| 临桂县| 陕西省| 余江县| 华池县| 平定县| 龙川县| 临海市| 筠连县| 繁峙县| 监利县| 光山县| 利辛县| 嫩江县| 蒙阴县| 肥西县| 沂水县| 昔阳县| 遂平县| 东阳市| 牙克石市| 大冶市| 于田县| 项城市| 仪征市| 剑川县| 米易县| 新蔡县| 墨脱县|