用于移動設備的高效安全的虛擬化方法及其設備的制造方法
【技術領域】
[0001]本發(fā)明總體上涉及計算機操作系統(tǒng)領域、更具體而言涉及用于移動設備的高效安全的虛擬化方法及其設備。
【背景技術】
[0002]近年來,隨著諸如平板計算機之類的移動設備的興起,運行多操作系統(tǒng)的需求日益增長。例如,用戶可能期望運行安卓操作系統(tǒng)的平板計算機也能夠運行Windows Office,反之亦然;或者,用戶可能期望同一移動設備能夠生成多個虛擬機環(huán)境以便運行多個操作系統(tǒng)實例、例如私人環(huán)境、企業(yè)環(huán)境或安全支付環(huán)境等等。不同的虛擬機環(huán)境可以有不同的目的,如私人環(huán)境需要在盡可能方便的情況下運行各種私人應用,而企業(yè)環(huán)境需要在較高的安全要求下運行各種企業(yè)應用.虛擬化技術提供了生成多個虛擬機環(huán)境和運行多個操作系統(tǒng)實例的能力,但是設備虛擬化的性能是關鍵。然而,傳統(tǒng)的設備虛擬化技術、即半虛擬化(paravirtualizat1n)在移動設備上遭受較大的性能損失和電源效率損失。
【發(fā)明內(nèi)容】
[0003]基于現(xiàn)有技術,本發(fā)明的任務在于提出用于運行虛擬機的方法、系統(tǒng)和設備,所述方法、系統(tǒng)和設備不僅允許同一移動設備支持多個互相隔離的操作系統(tǒng)或多個安全操作環(huán)境,每個虛擬機都能提供獨占的用戶體驗,而且還能夠極大地提高虛擬化性能。
[0004]在本發(fā)明的第一方面,該任務通過一種用于在計算設備上運行多個虛擬機的方法來解決,該方法包括下列步驟:
?由運行在物理機器上的超級系統(tǒng)管理器(Hypervisor或者Virtual Machine Monitor簡稱VMM -本文可能交叉使用VMM和Hypervisor字眼,他們指同一事物)生成第一虛擬機和第二虛擬機;
?作為前臺虛擬機(FVM)運行第一虛擬機,其中前臺虛擬機擁有幾乎所有的原生(Native)平臺設備;
?作為后臺虛擬機(BVM)運行第二虛擬機;
?由第一虛擬機保存第一平臺設備上下文;
?由超級系統(tǒng)管理器掛起第一虛擬機;
?將第二虛擬機從后臺虛擬機切換為前臺虛擬機,而第一虛擬機從前臺虛擬機切換為后臺虛擬機;
?將第一虛擬機從后臺虛擬機切換為前臺虛擬機,而第二虛擬機從前臺虛擬機切換為后臺虛擬機;以及
?恢復第一平臺設備上下文。
[0005]在本發(fā)明中,“前臺虛擬機擁有幾乎所有的硬件平臺設備”是指,前臺虛擬機能夠直接“看到”幾乎所有的硬件平臺設備,并且以直通方式(pass-thixnigh)訪問這些平臺設備。讓前臺虛擬機直接擁有硬件平臺設備例如可以通過現(xiàn)有技術中已知的“PCI直通”(PCIpass-through)技術來實現(xiàn)。而兩個虛擬機之間的前后臺切換可以通過虛擬機監(jiān)視程序(VMM)中的虛擬機切換器(VM Switcher)來實現(xiàn)。所述平臺設備上下文的保存/恢復可以使用客機操作系統(tǒng)(Guest OS)中的設備驅動程序已有的掛起/恢復功能來實現(xiàn)。這些過程將在具體實施例中予以詳細說明。應當指出,在此“前臺虛擬機擁有幾乎所有的硬件平臺設備”中的“幾乎”是指前臺虛擬機看到的設備和該物理平臺基本一致,除了因為其它原因(如虛擬機隔離)而特別處理的設備,如內(nèi)存和存儲設備等等,其中內(nèi)存或存儲設備(如硬盤)可能被分區(qū)和重映射(從客戶機設備地址到物理設備地址)以供各虛擬機訪問,因此前臺虛擬機并不一定看到整個內(nèi)存或存儲設備。此外,后臺虛擬機可以沒有活動,因此可以不向它呈現(xiàn)實際的設備或者僅僅呈現(xiàn)少量所指特定的設備。
[0006]在本發(fā)明中,通過該方法,至少可以實現(xiàn)以下優(yōu)點:(1)通過使用客機操作系統(tǒng)(Guest OS)中的設備驅動程序已有的掛起/恢復功能,實現(xiàn)平臺設備上下文的保存/恢復,可以簡單和快速地實現(xiàn)虛擬機之間的切換,而不用在超級系統(tǒng)管理器中實現(xiàn)復雜的設備平臺設備上下文保存/恢復操作(該操作需要處理各種不同的設備,需要極其繁復的設備知識,相當于在超級系統(tǒng)管理器重新實現(xiàn)一個設備驅動程序);(2)由于前臺虛擬機具有幾乎所有原生設備,因此能夠以原生(Native)性能訪問幾乎所有平臺設備,從而極大地減小了虛擬化帶來的性能損失,提高了系統(tǒng)的整體性能。
[0007]盡管本發(fā)明是以運行兩個虛擬機為例進行說明的,但是本發(fā)明也可用于運行兩個以上的虛擬機,即一個前臺虛擬機和多個后臺虛擬機。
[0008]在根據(jù)本發(fā)明的一個優(yōu)選方案中,前臺虛擬機使用原生(Native)驅動程序,以發(fā)揮直通設備的性能優(yōu)勢。在本發(fā)明中,通過前臺虛擬機使用原生驅動程序和直通模式,可以有助于前臺虛擬機以原生(Native)性能訪問各個平臺設備、例如顯卡、內(nèi)存、CPU等等,從而整體上提高系統(tǒng)性能。
[0009]在本發(fā)明的另一優(yōu)選方案中,后臺虛擬機安裝原生驅動程序,但是后臺虛擬機不活動。
[0010]在本發(fā)明的一個擴展方案中,超級系統(tǒng)管理器攔截客機操作系統(tǒng)對存儲設備的訪問,并且對存儲設備進行分區(qū)和重映射(從客戶機設備地址VirtualLBA或vLBA到物理設備地址physical LBA或pLBA)并向客機操作系統(tǒng)提供虛擬的存儲設備訪問。
[0011]在一個優(yōu)選方案中,后臺虛擬機部分活動,超級系統(tǒng)管理器僅僅分配少量的CPU資源來執(zhí)行后臺虛擬機。在該方案中,超級系統(tǒng)管理器只給后臺虛擬機展現(xiàn)極少量的設備如網(wǎng)卡和存儲設備,后臺虛擬機的其它I/o訪問被簡單忽視:即超級系統(tǒng)管理器不主動注入I/o事件,而后臺虛擬機的I/O訪問得到空結果。在該情況下,后臺虛擬機的驅動程序或者設備軟件??赡鼙恍薷囊灾С帧昂唵魏鲆暋辈僮?,即實現(xiàn)該設備的空設備驅動程序?;蛘呤褂寐?lián)合驅動程序,并將該設備的訪問導向空設備。
[0012]在本發(fā)明的另一優(yōu)選方案中,第一虛擬機和第二虛擬機使用聯(lián)合驅動程序(Teaming Driver),比如網(wǎng)卡聯(lián)合驅動程序。例如,所述聯(lián)合網(wǎng)卡驅動程序包括原生(Native)網(wǎng)卡驅動程序和半虛擬化(Paravirtualizat1n)網(wǎng)卡驅動程序,其中第一和第二虛擬機在作為前臺虛擬機時使用網(wǎng)卡聯(lián)合驅動程序中的原生網(wǎng)卡驅動程序;在作為后臺虛擬機時使用網(wǎng)卡聯(lián)合驅動程序中的半虛擬化網(wǎng)卡驅動程序。在此應當指出網(wǎng)卡聯(lián)合驅動程序中也可以使用其它驅動程序,如仿真的網(wǎng)卡驅動程序如NE2000驅動程序。在本發(fā)明中,通過該優(yōu)選方案,可以方便后臺虛擬機使用指定的設備、例如網(wǎng)絡設備以執(zhí)行所期望的操作、例如接收數(shù)據(jù)包,從而促進后臺虛擬機在后臺時仍然能夠執(zhí)行某些操作、例如對通信的即時處理和由此產(chǎn)生的提醒如QQ提醒。
[0013]在此應當指出,聯(lián)合驅動程序僅用于支持后臺系統(tǒng)的部分活動(或部分激活)、例如使后臺系統(tǒng)能夠訪問所指定的平臺設備或者處理所指定的數(shù)據(jù)和消息類型,而在其它情況下、例如后臺系統(tǒng)不活動的情況下可能不需要使用聯(lián)合驅動程序,在此例如后臺系統(tǒng)仍安裝原生驅動程序、但不活動。
[0014]在本發(fā)明的又一優(yōu)選方案中,后臺虛擬機可以在某些情況下被喚醒,它對諸如磁盤和網(wǎng)絡之類的所指定的設備的訪問可以由超級系統(tǒng)管理器來模擬或者由FVM的后端服務程序提供模擬和服務。但是對除所指定的設備以外的設備的訪問(如圖形設備)被引導到空設備即I/O訪問被簡單忽視,以使后臺系統(tǒng)的程序保持運行。在空設備模式下,系統(tǒng)沒有主動的設備事件輸入,而輸出則被忽略。這個忽略對于沒有輸入輸出的后端設備而言是可以接受的。在本發(fā)明中,通過該優(yōu)選方案,可以有效地將后臺虛擬機限制于僅僅訪問所指定的設備,減少系統(tǒng)實現(xiàn)的復雜性。
[0015]在本發(fā)明的一個擴展方案中,上述所指定的設備(即后臺設備可以訪問的指定設備)包括網(wǎng)卡。網(wǎng)卡是后臺虛擬機通常需要訪問的設備,由此可以方便虛擬機在作為后臺虛擬機運行時仍然能夠接收傳入消息。根據(jù)用戶和系統(tǒng)需要,還可以規(guī)定:后臺虛擬機還可以訪問網(wǎng)卡以外的指定設備、如顯卡、鍵盤、藍牙等以執(zhí)行所期望的操作。
[0016]除了定義后臺虛擬機所能訪問的特定硬件以外,還可以定義后臺虛擬機能夠接收和處理的事件類型(如日歷提醒),也就是說,除了所指定的事件類型以外的事件類型不被引導到后臺虛擬機;或者即使物理設備接收到了這樣的事件,超級系統(tǒng)管理器也不向后臺虛擬機派發(fā)這樣的事件類型。例如在本發(fā)明的又一優(yōu)選方案中,后臺虛擬機在沒有網(wǎng)絡數(shù)據(jù)包到達且沒有定時器等外部事件的情況下不被調度,并且在存在到達的網(wǎng)絡數(shù)據(jù)包或者存在定時器等外部事件的情況下,后臺操作系統(tǒng)被調度執(zhí)行以處理所述到達的網(wǎng)絡數(shù)據(jù)包或調度的定時器事件。在該等事件處理完后,超級系統(tǒng)管理器不再調度后臺虛擬機,直到下一個特定事件發(fā)生。在本發(fā)明中,通過該優(yōu)選方案,可以在減少后臺虛擬機對系統(tǒng)總性能和能耗的影響的同時,使后臺操