專利名稱:基于虛擬化技術的圖形顯示方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及信息技術領域,特別涉及基于虛擬化技術的圖形顯示方法及系統(tǒng)。
背景技術:
虛擬化技術是云計算的支撐技術之一,主要是將一臺物理機的物理資源虛擬成多個虛擬機,使得每個虛擬機都可以實現(xiàn)物理機的功能。隨著虛擬化技術的不斷普及,人們對虛擬機的圖形顯示能力的需求也越來越強,目前有些虛擬機可以支持三維(ThreeDimensions, 3D)處理來實現(xiàn)3D的圖形顯示,具體地,在生成虛擬機的同時,將具有3D處理能力的虛擬顯卡固定綁定到該生成的虛擬機上來實現(xiàn)3D圖形顯示。但是在遠程桌面等場景下,按照上述現(xiàn)有的方法進行圖像顯示過程中,虛擬機大 部分時間是在處理非3D的普通操作,而不需要3D的處理能力,使得3D圖形顯示能力得不到使用,造成資源的浪費。
發(fā)明內(nèi)容
本發(fā)明實施例提供基于虛擬化技術的圖像顯示方法及系統(tǒng),可以根據(jù)需要來顯示3D圖形,降低了資源浪費。一方面,提供一種基于虛擬化技術的圖形顯示方法,包括確定虛擬機當如啟動的應用進程是否是3D圖形顯不的應用;如果是3D圖形顯示的應用,獲取為所述虛擬機分配的顯示3D圖形的資源;根據(jù)所述獲取的顯示3D圖形的資源,在所述虛擬機上加載3D圖形顯示的驅(qū)動,以顯示3D圖形。另ー方面,提供一種基于虛擬化技術的圖形顯示方法,包括接收虛擬機發(fā)送的為所述虛擬機分配顯示3D圖形的資源的請求消息,其中,所述請求消息是所述虛擬機確定自身當前啟動的應用進程是3D圖形顯示的應用之后發(fā)送的;為所述虛擬機分配顯示3D圖形的虛擬顯卡,將所述分配的顯示3D圖形的虛擬顯卡掛載到所述虛擬機;將所述分配的顯示3D圖形的虛擬顯卡的信息返回給所述虛擬機,以使得所述虛擬機根據(jù)所述顯示3D圖形的虛擬顯卡的信息,加載3D圖形顯示的驅(qū)動。又一方面,提供一種基于虛擬化技術的圖形顯示系統(tǒng),包括硬件結(jié)構、基于硬件結(jié)構的至少ー個虛擬機,所述虛擬機中包括應用模塊、操作系統(tǒng)和非3D圖形顯示的驅(qū)動;所述虛擬機還包括啟動應用確定單元,用于確定當前啟動的應用進程是否是3D圖形顯示的應用;資源獲取単元,用于當所述啟動應用確定單元確定當前啟動的應用進程是3D圖形顯示的應用,獲取為所述虛擬機分配的顯示3D圖形的資源;加載單元,用于根據(jù)所述資源獲取單元獲取的資源,在所述虛擬機上加載3D圖形顯示的驅(qū)動,以顯示3D圖形。
在本發(fā)明實施例中,在物理機中創(chuàng)建了虛擬機后,虛擬機可以確定當前啟動的應用進程是否是3D圖形顯示的應用;如果是,獲取為虛擬機分配的顯示3D圖形的資源;根據(jù)獲取的資源在虛擬機上加載3D圖形顯示的驅(qū)動,以顯示3D圖形。這樣通過在虛擬機上動態(tài)加載3D圖形顯示的驅(qū)動來實現(xiàn)3D圖形顯示,與現(xiàn)有技術中在虛擬機上固定綁定虛擬顯卡顯示3D圖形相比,本發(fā)明實施例中的方法可以在啟動的應用進程需要時才加載3D圖形顯示的驅(qū)動,即能根據(jù)需要顯示3D圖形,不會造成資源浪費。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡 單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是本發(fā)明方法實施例中ー種物理機的結(jié)構示意圖;圖2a是本發(fā)明實施例提供的一種基于虛擬化技術的圖形顯示方法的流程圖;圖2b是本發(fā)明實施例提供的另ー種基于虛擬化技術的圖形顯示方法的流程圖;圖3是本發(fā)明實施例中另ー個物理機的結(jié)構示意圖;圖4是本發(fā)明實施例中加載3D圖形顯示的驅(qū)動的方法流程圖;圖5是本發(fā)明實施例中卸載3D圖形顯示的驅(qū)動的方法流程圖;圖6是本發(fā)明實施例中提供的一種基于虛擬化技術的圖形顯示系統(tǒng)的結(jié)構示意圖;圖7是本發(fā)明實施例中提供的一種基于虛擬化技術的圖形顯示系統(tǒng)的結(jié)構示意圖;圖8是本發(fā)明實施例中提供的另ー種基于虛擬化技術的圖形顯示系統(tǒng)的結(jié)構示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。本發(fā)明實施例提供一種基于虛擬化技術的圖形顯示方法,主要用于如圖I所示的物理機(physic Machine, PM)中,在物理機中包括中央處理單兀(Central ProcessingUnit, CPU)、內(nèi)存、硬盤、主板和3D處理顯卡等的硬件(Hard Ware)結(jié)構,且基于這些硬件物理機中可以包括虛擬機管理(Virtual Machine Manager, VMM)模塊和至少一個虛擬機(VM),而VMM和VM是物理機中的軟件模塊,其中VMM用于創(chuàng)建至少ー個虛擬機,并將物理機中的物理資源虛擬化成多個虛擬資源以供虛擬機使用;而在每個虛擬機內(nèi)有獨立的存儲和計算單元,且每個虛擬機的功能和結(jié)構都類似。本發(fā)明實施例中在物理機中創(chuàng)建的虛擬機可以既包括3D圖形顯示的驅(qū)動,又包括非3D圖形顯示的驅(qū)動比如ニ維(Two Dimensions, 2D)圖形顯示的驅(qū)動等,且虛擬機還需要包括操作系統(tǒng)和應用模塊等其它必須的模塊。而VMM可以將物理的3D處理顯卡虛擬化為多個虛擬顯卡。本實施例的方法是物理機中虛擬機(執(zhí)行本發(fā)明實施例中方法的虛擬機可以是一臺,也可以是多臺,甚至可以是該物理機中所有的虛擬機,本發(fā)明實施例不做限定)所執(zhí)行的方法,流程圖如圖2a所示,包括步驟101,確定虛擬機啟動的應用進程是否為3D圖形顯示的應用,如果是,執(zhí)行步驟102,如果不是,直接加載已經(jīng)配置的非3D圖形顯示的驅(qū)動,比如2D圖形顯示的驅(qū)動等。可以理解,虛擬機可以監(jiān)控該虛擬機啟動的應用進程,并確定該應用進程是否為3D圖形顯示的應用,具體地,可以在虛擬機中儲存3D圖形顯示的應用列表,在應用列表中包括3D圖形顯示的應用標識,比如游戲、渲染等應用,當正啟動的應用進程的應用標識包括在該應用列表中,則認為正啟動的應用為3D圖形顯示的應用。且需要說明的是,虛擬機在確定正啟動的應用進程是否為3D圖形顯示的應用時還可以使用其它的方法,比如,如果 確定正啟動的應用進程不是一般的辦公操作應用,則為3D圖形顯示的應用等,上述通過應用列表來確定只是ー種具體的實現(xiàn)方法。步驟102,獲取為所述虛擬機分配的顯示3D圖形的資源。虛擬機獲取資源的過程即獲取顯示3D圖形的虛擬顯卡的信息,具體地,虛擬機可以向物理機中的虛擬機管理模塊發(fā)送請求消息,請求虛擬機管理模塊為該虛擬機分配顯示3D圖形的資源;而虛擬機管理模塊在分配資源時可以在資源池中隨機選取ー個未使用的顯示3D圖形的虛擬顯卡,或是生成一個顯示3D圖形的虛擬顯卡等,并將分配的虛擬顯卡掛載到虛擬機上,即將該虛擬顯卡與所述虛擬機關聯(lián)起來(記錄該虛擬顯卡的信息與所述虛擬機的對應關系),且將分配的虛擬顯卡的信息返回給虛擬機。步驟103,根據(jù)步驟101中獲取的資源,在所述虛擬機上加載3D圖形顯示的驅(qū)動,以顯示3D圖形。需要說明的是,虛擬機在執(zhí)行該步驟之前,可以先卸載其它的非3D(比如2D)圖形顯示的驅(qū)動,然后再加載3D圖形顯示的驅(qū)動,這樣可以節(jié)省資源的浪費,其中,在卸載非3D圖形顯示的驅(qū)動時,可以將虛擬機中儲存的非3D圖形顯示的相關信息都刪除。且虛擬機在根據(jù)獲取的資源加載3D圖形顯示的驅(qū)動時,可以根據(jù)獲取的顯示3D圖形的虛擬顯卡的信息,在虛擬機上加載3D圖形顯示的驅(qū)動,具體地,可以儲存獲取的資源信息(即虛擬顯卡的信息)和驅(qū)動3D處理功能的參數(shù)信息等的對應關系,且將該對應關系儲存到虛擬機中,這樣步驟101中正啟動的應用進程在運行的過程中,虛擬機會驅(qū)動相應的虛擬顯卡3D處理,并顯示3D圖形。且在加載完成后,虛擬機可以將虛擬機的狀態(tài)設置更新為3D圖形顯示的驅(qū)動狀態(tài),具體地,可以設置ー個狀態(tài)標志位,比如該狀態(tài)標志位為I時,標識處于3D圖形顯示的驅(qū)動狀態(tài),如果該狀態(tài)標志位為O時,標識處于非3D圖形顯示的驅(qū)動狀態(tài)。可見,在本發(fā)明實施例中,在物理機中的虛擬機管理模塊創(chuàng)建了虛擬機后,虛擬機可以確定虛擬機下正啟動的應用進程是否是3D圖形顯示的應用;如果是,獲取為虛擬機分配的顯示3D圖形的資源;根據(jù)獲取的資源在虛擬機上加載3D圖形顯示的驅(qū)動,以顯示3D圖形。這樣通過在虛擬機上動態(tài)加載3D圖形顯示的驅(qū)動來實現(xiàn)3D圖形顯示,與現(xiàn)有技術中在虛擬機上固定綁定虛擬顯卡顯示3D圖形相比,本發(fā)明實施例中的方法可以在啟動的應用進程需要時才為虛擬機分配顯示3D圖形的資源,并加載3D圖形顯示的驅(qū)動,實現(xiàn)根據(jù)需要顯示3D圖形,不會造成資源浪費。在ー個具體的實施例中,虛擬機在執(zhí)行上述步驟101,當確定虛擬機當前正啟動的應用進程為3D圖形顯示的應用之后,可以先不執(zhí)行上述步驟102和103,而是先根據(jù)虛擬機的狀態(tài)設置,確認虛擬機是否處于3D圖形顯示的驅(qū)動狀態(tài)中,如果是,則結(jié)束流程;如果否,說明虛擬機正顯示非3D (比如2D)圖形,不能執(zhí)行3D處理流程,就需要執(zhí)行上述的步驟102和103來切換到3D圖形顯示的驅(qū) 動狀態(tài)。其中在確認虛擬機是否處于3D圖形顯示的驅(qū)動狀態(tài)時,可以確認該虛擬機的狀態(tài)標志位是否指示虛擬機處于3D圖形顯示的驅(qū)動狀態(tài)。在另ー個具體的實施例中,虛擬機除了可以監(jiān)控該虛擬機下正啟動的應用進程,執(zhí)行上述步驟101到103外,還可以監(jiān)控該虛擬機下正結(jié)束的應用進程,并確定正結(jié)束的應用進程是否是3D圖形顯示的應用,如果是,卸載虛擬機中3D圖形顯示的驅(qū)動,如果不是,則不執(zhí)行該卸載的步驟。具體地,在執(zhí)行上述卸載的步驟時,虛擬機可以刪除該虛擬機中儲存的進行3D處理的虛擬顯卡的信息,及驅(qū)動虛擬顯卡進行3D處理功能的參數(shù)等信息。且在加載完成后,虛擬機可以加載非3D(比如2D)圖形顯示的驅(qū)動,以運行其它應用程序,并可以將虛擬機的狀態(tài)設置更新為非3D圖形顯示的驅(qū)動狀態(tài),其中,在加載非3D圖形顯示的驅(qū)動時,虛擬機可以儲存顯示非3D圖形的必要參數(shù)信息等。其中,本實施例中,如果確定正結(jié)束的應用進程是3D圖形顯示的應用時,則還可以進一歩確定虛擬機是否有其它的3D圖形顯示的應用進程運行,如果是,則可以不用執(zhí)行卸載的步驟,如果不是,則執(zhí)行所述卸載的步驟。這樣保證了在虛擬機下如果沒有任何3D圖形顯示的應用運行時,才進行卸載。需要說明的是,在虛擬機卸載完3D圖形顯示的驅(qū)動后,可以向虛擬機管理模塊發(fā)送請求消息,以請求虛擬機管理模塊釋放虛擬機顯示3D圖形的資源,比如虛擬機掛載的虛擬顯卡的信息等;而虛擬機管理模塊就會將虛擬機顯示3D圖形的資源加入到資源池中以供其它虛擬機使用,其中加入到資源池具體可以為將虛擬機顯示3D圖形的資源標識為未使用。這樣可以動態(tài)地調(diào)度資源,使得空閑的資源能得到充分的利用。參考圖2b所示,本發(fā)明實施例還提供一種基于虛擬化技術的圖形顯示方法,本實施例的方法是上述的虛擬機管理模塊所執(zhí)行的方法,包括步驟105,接收虛擬機發(fā)送的為虛擬機分配顯示3D圖形的資源的請求消息,其中,該請求消息是虛擬機確定自身當前啟動的應用進程是3D圖形顯示的應用之后發(fā)送的??梢岳斫?,在如圖I所示的系統(tǒng)中,如果ー個虛擬機確認當前正啟動的應用程序是3D圖形顯示的應用,則會觸發(fā)3D圖形顯示的流程,其具體流程2a所示,在這個過程中,虛擬機會發(fā)送請求消息給虛擬機管理模塊來獲取顯示3D圖形的資源,在該請求消息中可以包括虛擬機的標識信息等信息。步驟106,為虛擬機分配顯示3D圖形的虛擬顯卡,將分配的顯示3D圖形的虛擬顯卡掛載到虛擬機上。虛擬機管理模塊在分配虛擬顯卡時,可以隨機選取資源池中未使用的顯示3D圖形的虛擬顯卡,或生成顯示3D圖形的虛擬顯卡等。且虛擬機管理模塊將分配的虛擬顯卡掛載到虛擬機上時,可以將該虛擬顯卡與所述虛擬機關聯(lián)起來,具體地,是記錄分配的顯示3D圖形的虛擬顯卡與虛擬機的對應關系。步驟107,將分配的顯示3D圖形的虛擬顯卡的信息返回給虛擬機,以使得虛擬機根據(jù)顯示3D圖形的虛擬顯卡的信息,加載3D圖形顯示的驅(qū)動。在將虛擬顯卡的信息返回給虛擬機時,可以根據(jù)步驟105中接收的請求消息中的虛擬機的標識,向相應的虛擬機返回分配的虛擬顯卡的信息,而虛擬機可以按照如圖2a對應實施例進行圖形顯示??梢姡诒景l(fā)明實施例中,在物理機中的虛擬機管理模塊創(chuàng)建了虛擬機后,虛擬機可以確定虛擬機下正啟動的應用進程是否是3D圖形顯示的應用;由虛擬機向虛擬機管理模塊發(fā)送請求消息來獲取顯示3D圖形的資源,當虛擬機管理模塊接收到請求消息后,為該虛擬機分配虛擬顯卡后,將虛擬顯卡的信息返回給虛擬機來加載3D圖形顯示的驅(qū)動以顯示3D圖形。這樣通過在虛擬機上動態(tài)加載3D圖形顯示的驅(qū)動來實現(xiàn)3D圖形顯示,與現(xiàn)有 技術中在虛擬機上固定綁定虛擬顯卡顯示3D圖形相比,本發(fā)明實施例中的方法可以在啟動的應用進程需要時才為虛擬機分配顯示3D圖形的資源,并加載3D圖形顯示的驅(qū)動,實現(xiàn)根據(jù)需要顯示3D圖形,不會造成資源浪費。在ー個具體的實施例中,虛擬機管理模塊除了可以在虛擬機加載3D圖形顯示的驅(qū)動前,為虛擬機分配3D圖形顯示的資源,還可以在虛擬機卸載3D圖形顯示的驅(qū)動后,接收到虛擬機發(fā)送的釋放顯示3D圖形的虛擬顯卡的請求消息,釋放該虛擬機上掛載的顯示3D圖形的虛擬顯卡,具體地,可以將虛擬顯卡加入到資源池中,即將該虛擬顯卡的狀態(tài)標識為未使用,以供其它虛擬機使用,這樣可以避免資源的浪費。以下以ー個具體的實施例進行說明本發(fā)明實施例中的基于虛擬化技術的圖形顯示方法,應用于如圖3所示的物理機中,該物理機中除了可以包括如圖I所示的結(jié)構外,其中虛擬機可以包括應用(application,APP)模塊,進程監(jiān)控模塊、控制模塊,操作系統(tǒng)(operating system, OS),非3D圖形顯示的驅(qū)動比如圖形設備接ロ (Graphics DeviceInterface,⑶I)驅(qū)動,和支持3D圖形顯示的驅(qū)動比如DX(DirectX)驅(qū)動,其中應用模塊通常運行在操作系統(tǒng)中,可以實現(xiàn)一定的功能比如字處理或瀏覽網(wǎng)頁等功能;進程監(jiān)控模塊是負責監(jiān)控虛擬機下運行的應用進程,當有3D圖形顯示的應用進程啟動或停止的時候,發(fā)送消息給控制模塊;控制模塊用于控制⑶I驅(qū)動和DX驅(qū)動的加載和卸載,并發(fā)送通知消息給顯示資源分配模塊進行資源分配ADI驅(qū)動無法支持3D應用的硬件渲染,通常用于ー般的辦公操作;DX驅(qū)動支持3D繪圖指令的硬件渲染,通常用于游戲或渲染等應用。而VMM可以包括顯示資源分配模塊和虛擬化平臺,其中,虛擬化平臺是用來對物理機中的物理資源進行虛擬化,可以形成至少ー個虛擬機及虛擬顯卡等,且對至少ー個虛擬機,每個虛擬機的功能和結(jié)構類似;顯示資源分配模塊會與虛擬化平臺交互,獲得虛擬顯卡的信息并將對應的虛擬顯卡分配給需要的虛擬機。參考圖4所示,本實施例的物理機中虛擬機和VMM之間相互配合,可以按照下述的步驟來加載3D圖形顯示的驅(qū)動,具體包括步驟201-203,用戶啟動物理機上的應用進程,該應用程序是在某一個虛擬機a之下。該虛擬機a中的進程監(jiān)控模塊監(jiān)控到有應用進程啟動,判斷該應用進程是否是3D圖形顯示的應用,如果是,發(fā)送加載3D圖形顯示驅(qū)動的消息給控制模塊。
可以理解,進程監(jiān)控模塊可以有兩種功能I、監(jiān)控該虛擬機a下的所有應用進程的啟動。在windows系統(tǒng)中一般可以通過鉤(hook)windows系統(tǒng)的“explorer”進程的方法來進行監(jiān)控。具體地,當有應用進程啟動時,會發(fā)送通知消息給“explorer”進程,這樣就通過“explorer”進程得知了啟動的應用進程。2、判斷該啟動的應用進程是否是3D圖形顯示的應用,一般來說,在虛擬機中儲存著3D圖形顯示應用的進程列表,當有應用進程啟動時,進程監(jiān)控模塊會確認啟動的應用進程是否在該進程列表中,如果是,則認為是3D圖形顯示的應用。步驟204-205,控制模塊接收到加載3D圖形顯示驅(qū)動的消息后,先判斷該虛擬機a的狀態(tài),是否處于3D圖形顯示的驅(qū)動狀態(tài)中,如果是,直接返回3D圖形顯示的驅(qū)動掛載成功消息,否則,控制模塊發(fā)送分配3D圖形顯示資源的消息給VMM中的顯示資源分配模塊。步驟206,顯示資源分配模塊收到分配3D圖形顯示資源的消息后,發(fā)送通知消息 給VMM中的虛擬化平臺。步驟207,虛擬化平臺收到通知消息后,為該虛擬機a分配ー個未使用的虛擬顯卡,并將分配的虛擬顯卡的信息(比如設備地址)返回給顯示資源分配模塊。其中虛擬化平臺在分配虛擬顯示時,可以顯示資源池中隨機選取ー個虛擬顯卡,也可以與物理硬件協(xié)商,重新生成ー個虛擬顯卡。其中虛擬顯卡可以是虛擬的圖形處理器(Graphic ProcessingUnit, GPU)等。步驟208-209,顯示資源分配模塊接收到虛擬顯卡的信息后,將對應的虛擬顯卡掛載在虛擬機a上,并發(fā)送資源分配完畢的消息給控制模塊。顯示資源分配模塊在進行掛載時,是將該分配的虛擬顯卡與虛擬機關聯(lián)。步驟210-213,控制模塊接收到資源分配完畢的消息后,發(fā)送加載3D圖形顯示驅(qū)動的消息給虛擬機a中的操作系統(tǒng),其中在消息中需要包括分配的虛擬顯卡的信息;當操作系統(tǒng)收到該加載消息后,卸載該虛擬機中的2D圖形顯示的驅(qū)動,并發(fā)送包括分配的虛擬顯卡信息的加載消息給3D圖形顯示的驅(qū)動(即DX驅(qū)動),由3D圖形顯示的驅(qū)動進行加載,在加載成功后返回加載成功的消息給操作系統(tǒng)。步驟214-215,操作系統(tǒng)收到3D圖形顯示的驅(qū)動加載成功的消息后,發(fā)送加載成功消息給控制模塊,則控制模塊也會向進程監(jiān)控模塊發(fā)送加載成功消息,其中控制模塊還可以設置虛擬機a的狀態(tài)為3D圖形顯示的驅(qū)動狀態(tài)??梢娡ㄟ^上述步驟201到215實現(xiàn)了當3D圖形顯示的應用進程啟動時,虛擬機可以動態(tài)加載3D圖形顯示的驅(qū)動,以顯示3D圖形。參考圖5所示,本實施例的物理機中的虛擬機和VMM之間相互配合,可以按照下述的步驟來卸載3D圖形顯示的驅(qū)動,具體包括步驟301-304,虛擬機b中的進程監(jiān)控模塊監(jiān)控到有應用進程結(jié)束,根據(jù)結(jié)束的應用進程的應用名稱判斷其是否為3D圖形顯示的應用,如果不是,則不做任何處理;如果是,進程監(jiān)控模塊還需要進ー步判斷是否該虛擬機b中是否有其它的3D圖形顯示的應用進程在運行,如果沒有,則給控制模塊發(fā)送卸載3D圖形顯示驅(qū)動的消息,如果有,則不做任何處理。步驟305-308,控制模塊收到卸載3D圖形顯示驅(qū)動的消息后,將該3D卸載消息發(fā)送給操作系統(tǒng),操作系統(tǒng)會向3D圖形顯示的驅(qū)動(即DX驅(qū)動)發(fā)送3D卸載消息,要求將該虛擬機b中的3D圖形顯示的驅(qū)動將3D圖形顯示的信息刪除;當3D圖形顯示的驅(qū)動將虛擬機b中的3D圖形顯示信息卸載成功后,向操作系統(tǒng)返回3D卸載成功的消息,操作系統(tǒng)會向控制模塊返回3D卸載成功消息。步驟309-311,控制模塊接收到3D卸載成功的消息后,發(fā)送釋放3D圖形顯示資源的消息給VMM中的顯示資源分配模塊,顯示資源分配模塊會卸載與該虛擬機b綁定的虛擬顯卡,即虛擬的GPU,具體地,顯示資源分配模塊會刪除其中儲存的虛擬機b與虛擬GPU的對應關系;當顯示資源分配模塊卸載了 GPU后,會發(fā)送釋放消息給VMM中的虛擬化平臺,要求釋放該虛擬GPU的資源給其它虛擬機調(diào)用。步驟312-314,虛擬化平臺接收到釋放消息,在釋放消息中包括顯示資源分配模塊卸載的虛擬GPU,釋放該虛擬GPU,即將該虛擬GPU回放給資源池,或者直接釋放物理資源。步驟315-318,控制模塊還可以發(fā)送加載2D圖形顯示驅(qū)動的消息發(fā)送給操作系統(tǒng),操作系統(tǒng)會向2D圖形顯示的驅(qū)動(即⑶I驅(qū)動)發(fā)送2D加載消息,要求將該虛擬機b中的2D圖形顯示的驅(qū)動加載2D圖形顯示的信息;當2D圖形顯示的驅(qū)動將虛擬機b中的2D圖形顯示信息加載成功后,向操作系統(tǒng)返回2D加載成功的消息,操作系統(tǒng)會向控制模塊返回2D加載成功消息。從而完成了虛擬機b從3D圖形顯示的驅(qū)動狀態(tài)切換到2D圖形顯示的驅(qū)動狀態(tài),這里控制模塊可以將虛擬機b的狀態(tài)設置為2D圖形顯示的驅(qū)動狀態(tài)。需要說明的是,上述步驟305中開始啟動3D圖形顯示驅(qū)動的卸載與步驟315中開始啟動2D圖形顯示驅(qū)動的加載可以同時進行,或者順序進行,具體的順序并不進行限定。可見通過上述步驟301到318實現(xiàn)了當3D圖形顯示的應用進程結(jié)束時,虛擬機可以動態(tài)卸載3D圖形顯示的驅(qū)動,不會造成資源浪費。本發(fā)明實施例還提供一種基于虛擬化技術的圖形顯示系統(tǒng),結(jié)構示意圖如圖6所示,該系統(tǒng)中可以包括CPU、內(nèi)存、硬盤、主板和3D處理顯卡等硬件結(jié)構,且基于這些硬件結(jié)構系統(tǒng)中可以包括軟件模塊,具體地,可以包括至少ー個虛擬機10 所述虛擬機10可以包括操作系統(tǒng)、應用模塊和非3D圖形顯示的驅(qū)動比如⑶I驅(qū)動等基本的模塊,且這些模塊的功能和結(jié)構與圖3中所示的功能和結(jié)構類似,在此不進行贅述;本實施例中,虛擬機10還可以包括啟動應用確定單元110,用于確定當前啟動的應用進程是否是3D圖形顯示的應用。在虛擬機中可以儲存3D圖形顯示的應用列表,在應用列表中包括應用標識,比如游戲、渲染等應用,當啟動應用確定單元110確定當前啟動的應用進程的應用標識包括在該應用列表中,則認為正啟動的應用為3D圖形顯示的應用。資源獲取単元120,用于當所述啟動應用確定單元110確定當前啟動的應用進程是3D圖形顯示的應用,獲取為所述虛擬機分配的顯示3D圖形的資源。資源獲取単元120可以向系統(tǒng)中的虛擬機管理模塊發(fā)送請求消息,請求虛擬機管 理模塊為該虛擬機分配資源。加載單元130,用于根據(jù)所述資源獲取單元獲取的資源,在虛擬機上加載3D圖形顯示的驅(qū)動,以顯示3D圖形。加載單元130在加載時,可以將資源獲取單元120獲取的資源信息和驅(qū)動3D處理功能的參數(shù)信息等信息儲存到虛擬機中,這樣當前正啟動的應用進程在運行的過程中,虛擬機中該加載単元130會驅(qū)動相應的虛擬顯卡進行3D處理,并進行顯示3D圖形。其中當資源獲取単元120獲取資源后,虛擬機中的操作系統(tǒng)可以啟動加載單元130進行加載;且可以理解,在虛擬機中可以還包括狀態(tài)設置単元100,用于更新虛擬機10的狀態(tài)設置,具體更新為處于3D圖形顯示的驅(qū)動狀態(tài),或更新為處于非3D圖形顯示的驅(qū)動狀態(tài)。本實施例中,當加載單元130在加載完成后,狀態(tài)設置單元100可以將虛擬機的狀態(tài)設置更新為處于3D圖形顯示的驅(qū)動狀態(tài)。需要說明的是,在加載單元130加載3D圖形顯示的驅(qū)動之前,該虛擬機中的非3D圖形顯示的驅(qū)動需要卸載非3D圖形顯示的驅(qū)動,這樣可以節(jié)省資源的浪費。在本發(fā)明實施例中,系統(tǒng)中虛擬機的啟動應用確定單元110可以確定當前啟動的應用進程是否是3D圖形顯示的應用;如果是,資源獲取單元120獲取為虛擬機分配的顯示3D圖形的資源;而加載單元130根據(jù)獲取的資源,在虛擬機上加載3D圖形顯示的驅(qū)動,以顯示3D圖形。這樣通過在虛擬機上動態(tài)加載3D圖形顯示的驅(qū)動來實現(xiàn)3D圖形顯示,與現(xiàn)有技術中在虛擬機上固定綁定虛擬顯卡顯示3D圖形相比,本發(fā)明實施例中的方法可以在啟動的應用進程需要時才加載3D圖形顯示的驅(qū)動,即能根據(jù)需要顯示3D圖形,不會造成資 源浪費。參考如圖7所示,在ー個具體的實施例中,基于虛擬化技術的圖形顯示系統(tǒng)除了圖6所示的結(jié)構外,還可以包括軟件模塊即虛擬機管理模塊11,該虛擬機管理模塊11是用來將物理資源虛擬化,從而創(chuàng)建虛擬機,并對虛擬機進行管理的。本實施例中,當虛擬機10中的啟動應用確定單元110確定正啟動的應用進程是3D圖形顯示的應用,則資源獲取單元120可以向虛擬機管理模塊11發(fā)送請求消息,請求所述虛擬機管理模塊11為所述虛擬機10分配顯示3D圖形的資源;虛擬機管理模塊11接收到請求消息后,為所述虛擬機10分配顯示3D圖形的虛擬顯卡,并將分配的顯示3D圖形的虛擬顯卡的信息返回給所述虛擬機10的資源獲取単元120,其中虛擬機管理模塊11在分配虛擬顯卡時,可以在未使用的虛擬顯卡中選取顯示3D圖形的虛擬顯卡,或生成顯示3D圖形的虛擬顯卡;當資源獲取単元120接收到虛擬機管理模塊11返回的為所述虛擬機10分配的顯示3D圖形的虛擬顯卡的信息,即獲得了 3D圖形顯示的資源;則加載單元130執(zhí)行加載的步驟,具體地加載單元130用于儲存所述接收的虛擬顯卡的信息和驅(qū)動3D處理功能的參數(shù)信息的對應關系,以顯不3D圖形。且本實施例中的虛擬機管理模塊11還可以用于創(chuàng)建虛擬機10,所述虛擬機10中包括應用模塊、所述應用確定單元110、資源獲取單元120、加載單元130和非3D圖形顯示的驅(qū)動等。參考如圖8所示(圖8中以兩個虛擬機10為例說明),本實施例中基于虛擬化技術的圖形顯示系統(tǒng)除了可以包括如圖7所示的結(jié)構外,其中虛擬機10可以包括操作系統(tǒng)、應用模塊、啟動應用確定單元110、資源獲取単元120、加載單元130、非3D圖形顯示的驅(qū)動150,狀態(tài)確認單元140、結(jié)束應用確定單元160、進程運行確定單元170、卸載單元180和狀態(tài)設置單元100,其中狀態(tài)確認単元140,用于當所述啟動應用確定單元110確定當前啟動的應用進程不是3D圖形顯示的應用,確認該虛擬機是否處于3D圖形顯示的驅(qū)動狀態(tài)中。具體地,狀態(tài)確認單元140在確認時,可以根據(jù)上述的狀態(tài)設置単元100設置的虛擬機的狀態(tài)設置進行確定。非3D圖形顯示的驅(qū)動150,用于當所述狀態(tài)確認單元140確認虛擬機不是處于3D圖形顯示的驅(qū)動狀態(tài)中,卸載所述虛擬機中非3D圖形顯示的驅(qū)動,并通知所述資源獲取單元獲取資源。結(jié)束應用確定單元160,用于確定所述當前結(jié)束的應用進程是否是3D圖形顯示的應用。
進程運行確定單元170,用于當所述結(jié)束應用確定單元160確定所述當前結(jié)束的應用進程是3D圖形顯示的應用,進ー步確定所述虛擬機中是否有其它的3D圖形顯示的應用進程運行。卸載單元180,用于卸載所述虛擬機中3D圖形顯示的驅(qū)動。本實施例中,當虛擬機10中的啟動應用確定單元110確定當前啟動的應用進程是3D圖形顯示的應用,先由狀態(tài)確認單元140確認虛擬機的狀態(tài),如果虛擬機正好處于3D圖形顯示的驅(qū)動狀態(tài)中,則不用做任何處理,而如果虛擬機處于非3D圖形顯示的驅(qū)動狀態(tài)中,可以由虛擬機10中的操作系統(tǒng)啟動非3D圖形顯示的驅(qū)動150卸載虛擬機中非3D圖形顯示的驅(qū)動,并由操作系統(tǒng)通知資源獲取単元120獲取資源,然后再由虛擬機10中的操作系統(tǒng)啟動加載單元130來加載3D圖形顯示的驅(qū)動。其中資源獲取單元120在獲取資源吋,可以向虛擬機管理模塊11發(fā)送請求消息來獲取。且本實施例中,當結(jié)束應用確定單元160確定當前結(jié)束的應用進程是屬于3D圖形顯示的應用,則可以先由進程運行確定單元170來確定虛擬機中是否還有其他的3D圖形顯示的應用進程正在運行,如果有,則不進行任何處理,如果沒有,則可以由虛擬機10中的操作系統(tǒng)啟動卸載單元180卸載所述虛擬機中3D圖形顯示的驅(qū)動;或是,當結(jié)束應用確定單元160確定正結(jié)束的應用進程是屬于3D圖形顯示的應用,可以直接由虛擬機10中的操作系統(tǒng)啟動卸載單元180卸載所述虛擬機中3D圖形顯示的驅(qū)動。且當卸載單元180卸載了3D圖形顯示的驅(qū)動的過程中,非3D圖形顯示的驅(qū)動150需要加載非3D圖形顯示的驅(qū)動,以供該虛擬機中應用模塊的其它應用進程運行。且可以理解,虛擬機10中的狀態(tài)設置単元100,可以用于在卸載單元180卸載3D圖形顯示的驅(qū)動且非3D圖形顯示的驅(qū)動150加載非3D圖形顯示的驅(qū)動后,更新虛擬機的狀態(tài)設置為非3D圖形顯示的驅(qū)動狀態(tài)。需要說明的是,當卸載單元180卸載3D圖形顯示的驅(qū)動后,還用于發(fā)送請求消息給虛擬機管理模塊11,請求所述虛擬機管理模塊11釋放所述虛擬機顯示3D圖形的資源;當該虛擬機管理模塊11接收到該請求消息后,會將釋放所述虛擬機顯示3D圖形的資源,即將該虛擬機顯示3D圖形的資源標識為未使用,以供其它虛擬機10使用,可以使得空閑的資源得到充分的利用。且本實施例中的虛擬機管理模塊11創(chuàng)建的虛擬機中除了可以包括應用模塊、操作系統(tǒng)和非3D圖形顯示的驅(qū)動150,及啟動應用確定單元110、資源獲取單元120和加載單元130之外,還可以包括狀態(tài)確認単元140、結(jié)束應用確定單元160、狀態(tài)設置単元100、卸載単元180和進程運行確定單元170等。需要說明的是,上述實施例系統(tǒng)的各個單元之間可以按照上述圖I所示的方法進行圖形顯示,在此不進行贅述。且基于虛擬化技術的圖形顯示系統(tǒng)還可以有其它的結(jié)構,比如圖3中所示的結(jié)構,在這種情況下,圖8中所示的啟動應用確定單元110、結(jié)束應用確定單元160和進程運行確定單元170屬于進程監(jiān)控模塊中包括的子単元;而狀態(tài)設置單元100、狀態(tài)確認単元140和資源獲取単元120屬于控制模塊中所包括的子単元;加載單元130和卸載單元180屬于DX驅(qū)動的子単元,而非3D圖形顯示的驅(qū)動150則為⑶I驅(qū)動,且虛擬機管理模塊11可以包括顯示資源分配模塊和虛擬化平臺。本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬件來完成,該程序可以存儲于ー計算機可讀存儲介質(zhì)中,存儲介質(zhì)可以包括ROM、RAM、磁盤或光盤等。以上對本發(fā)明實施例所提供的基于虛擬化技術的圖形顯示方法及系統(tǒng),進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據(jù)本發(fā)明的思想,在具體實施方式
及應用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不 應理解為對本發(fā)明的限制。
權利要求
1.一種基于虛擬化技術的圖形顯示方法,其特征在于,包括 確定虛擬機當前啟動的應用進程是否是3D圖形顯示的應用; 如果是3D圖形顯示的應用,獲取為所述虛擬機分配的顯示3D圖形的資源; 根據(jù)所述獲取的顯示3D圖形的資源,在所述虛擬機上加載3D圖形顯示的驅(qū)動,以顯示3D圖形。
2.如權利要求I所述的方法,其特征在于,所述虛擬機獲取為所述虛擬機分配的顯示3D圖形的資源,具體包括所述虛擬機發(fā)送請求消息給虛擬機管理模塊,請求所述虛擬機管理模塊為所述虛擬機分配顯示3D圖形的資源; 所述虛擬機接收所述虛擬機管理模塊返回的為所述虛擬機分配的顯示3D圖形的虛擬顯卡的信息; 則所述根據(jù)所述獲取的顯示3D圖形的資源,在所述虛擬機上加載3D圖形顯示的驅(qū)動,包括 根據(jù)所述顯示3D圖形的虛擬顯卡的信息,在所述虛擬機上加載所述3D圖形顯示的驅(qū)動。
3.如權利要求I或2所述的方法,其特征在于,所述獲取為所述虛擬機分配的顯示3D圖形的資源之前,還包括 根據(jù)所述虛擬機的狀態(tài)設置,確認所述虛擬機是否處于3D圖形顯示的驅(qū)動狀態(tài),如果否,執(zhí)行所述獲取為所述虛擬機分配的顯示3D圖形的資源的步驟。
4.如權利要求3所述的方法,其特征在于,在所述虛擬機上加載3D圖形顯示的驅(qū)動之后,還包括 將所述虛擬機的狀態(tài)設置更新為3D圖形顯示的驅(qū)動狀態(tài)。
5.如權利要求1-4任意一項所述的方法,其特征在于,所述根據(jù)所述獲取的顯示3D圖形的資源,在所述虛擬機上加載3D圖形顯示的驅(qū)動之前,還包括 卸載加載在所述虛擬機上的非3D圖形顯示的驅(qū)動。
6.如權利要求1-5任意一項所述的方法,其特征在于,還包括預先在所述虛擬機上存儲3D圖形顯示的應用列表,所述應用列表包括3D圖形顯示的應用標識; 所述確定虛擬機當前啟動的應用進程是否是3D圖形顯示的應用包括 若所述虛擬機當前啟動的應用進程的應用標識包括在所述應用列表中,確定當前啟動的應用進程是3D圖形顯示的應用。
7.如權利要求I至6任一項所述的方法,其特征在于,還包括 確定所述虛擬機當前結(jié)束的應用進程是否是3D圖形顯示的應用,如果是,卸載所述虛擬機中3D圖形顯示的驅(qū)動,并在所述虛擬機上加載非3D圖形顯示的驅(qū)動。
8.一種基于虛擬化技術的圖形顯示方法,其特征在于,包括 接收虛擬機發(fā)送的為所述虛擬機分配顯示3D圖形的資源的請求消息,其中,所述請求消息是所述虛擬機確定自身當前啟動的應用進程是3D圖形顯示的應用之后發(fā)送的; 為所述虛擬機分配顯示3D圖形的虛擬顯卡,將所述分配的顯示3D圖形的虛擬顯卡掛載到所述虛擬機; 將所述分配的顯示3D圖形的虛擬顯卡的信息返回給所述虛擬機,以使得所述虛擬機根據(jù)所述顯示3D圖形的虛擬顯卡的信息,加載3D圖形顯示的驅(qū)動。
9.如權利要求8所述的方法,其特征在于,所述為所述虛擬機分配進行顯示3D圖形的虛擬顯卡,包括 選取未使用的顯示3D圖形的虛擬顯卡,或生成顯示3D圖形的虛擬顯卡。
10.如權利要求8或9所述的方法,其特征在于,所述將所述分配的顯示3D圖形的虛擬顯卡掛載到所述虛擬機,包括 記錄所述分配的顯示3D圖形的虛擬顯卡與所述虛擬機的對應關系。
11.如權利要求8或10任意一項所述的方法,其特征在于,還包括 接收所述虛擬機發(fā)送的釋放所述顯示3D圖形的虛擬顯卡的請求消息,釋放所述虛擬機上掛載的所述顯示3D圖形的虛擬顯卡。
12.一種基于虛擬化技術的圖形顯示系統(tǒng),其特征在于,包括硬件結(jié)構、基于硬件結(jié)構的至少ー個虛擬機,所述虛擬機中包括應用模塊、操作系統(tǒng)和非3D圖形顯示的驅(qū)動; 所述虛擬機還包括 啟動應用確定單元,用于確定當前啟動的應用進程是否是3D圖形顯示的應用; 資源獲取単元,用于當所述啟動應用確定單元確定當前啟動的應用進程是3D圖形顯示的應用,獲取為所述虛擬機分配的顯示3D圖形的資源; 加載單元,用于根據(jù)所述資源獲取單元獲取的資源,在所述虛擬機上加載3D圖形顯示的驅(qū)動,以顯示3D圖形。
13.如權利要求12所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括虛擬機管理模塊; 所述資源獲取單元,用于向所述虛擬機管理模塊發(fā)送請求消息,請求所述虛擬機管理模塊為所述虛擬機分配顯示3D圖形的資源;并接收所述虛擬機管理模塊返回的為所述虛擬機分配的虛擬顯卡的信息; 所述虛擬機管理模塊,用于為所述虛擬機分配虛擬顯卡,并將分配的虛擬顯卡的信息返回給所述虛擬機; 所述加載単元,用于根據(jù)所述資源獲取單元獲取的顯示3D圖形的虛擬顯卡的信息,在所述虛擬機上加載所述3D圖形顯示的驅(qū)動。
14.如權利要求13所述的系統(tǒng),其特征在干, 所述虛擬機管理模塊,具體用于選取未使用的顯示3D圖形的虛擬顯卡,或生成顯示3D圖形的虛擬顯卡,并將所述選取或生成的顯示3D圖形的虛擬顯卡的信息返回給所述虛擬機。
15.如權利要求12到14任一項所述的系統(tǒng),其特征在于, 所述非3D圖形顯示的驅(qū)動,用于在所述加載単元根據(jù)所述資源獲取單元獲取的資源,在所述虛擬機上加載3D圖形顯示的驅(qū)動之前,卸載所述虛擬機上加載的非3D圖形顯示的驅(qū)動。
16.如權利要求12至15任一項所述的系統(tǒng),其特征在于,所述虛擬機還包括 狀態(tài)確認単元,用于當所述啟動應用確定單元確定當前啟動的應用進程不是3D圖形顯示的應用,根據(jù)所述虛擬機的狀態(tài)設置,確認所述虛擬機是否處于3D圖形顯示的驅(qū)動狀態(tài)中; 所述非3D圖形顯示的驅(qū)動,用于當所述狀態(tài)確認單元確認所述虛擬機不是處于3D圖形顯示的驅(qū)動狀態(tài)中,卸載所述虛擬機中非3D圖形顯示的驅(qū)動,并通知所述資源獲取單元獲取資源。
17.如權利要求12至16任一項所述的系統(tǒng),其特征在于,所述虛擬機還包括 結(jié)束應用確定單元,用于確定所述當前結(jié)束的應用進程是否是3D圖形顯示的應用; 卸載單元,用于當所述結(jié)束應用確定單元確定所述當前結(jié)束的應用進程是3D圖形顯示的應用,卸載所述虛擬機中3D圖形顯示的驅(qū)動。
18.如權利要求17所述的系統(tǒng),其特征在于, 所述卸載単元,還用于發(fā)送請求消息給虛擬機管理模塊,請求所述虛擬機管理模塊釋放所述虛擬機顯示3D圖形的資源; 所述虛擬機管理模塊,還用于釋放所述虛擬機顯示3D圖形的資源。
19.如權利要求12至18任一項所述的系統(tǒng),其特征在于,所述虛擬機還包括 狀態(tài)設置単元,用于更新所述虛擬機的狀態(tài)設置為處于3D圖形顯示的驅(qū)動狀態(tài),或更新為處于非3D圖形顯示的驅(qū)動狀態(tài)。
全文摘要
一種基于虛擬化技術的圖形顯示方法及系統(tǒng),應用于通信技術領域。該基于虛擬化技術的圖形顯示方法,包括虛擬機確定當前啟動的應用進程是否是3D圖形顯示的應用;如果是3D圖形顯示的應用,虛擬機獲取為虛擬機分配的顯示3D圖形的資源;虛擬機根據(jù)獲取的資源在虛擬機上加載3D圖形顯示的驅(qū)動,以顯示3D圖形。實現(xiàn)了動態(tài)地顯示3D圖形。
文檔編號G06F9/455GK102725736SQ201180003189
公開日2012年10月10日 申請日期2011年12月31日 優(yōu)先權日2011年12月31日
發(fā)明者梁治平, 陳普 申請人:華為技術有限公司