專利名稱:一種顯示方法和服務器的制作方法
技術領域:
本發(fā)明涉及計算機領域的多用戶遠程顯示系統(tǒng),特別是涉及一種基于會話的多用 戶顯示方法和服務器。
背景技術:
傳統(tǒng)計算機系統(tǒng)利用本地顯示設備,直接顯示輸出給一個用戶,由于顯示設備與 本地計算機電纜連接的限制,顯示設備必須放置在本地計算機附近。
對于遠程使用計算機的用戶則需要更大的靈活性一一通過網絡到主機連接選擇 合適的顯示位置。例如,某辦公環(huán)境下,主機基于安全以及便于管理等因素的考慮集中放置 在機房,員工在遠離機房的工位使用主機系統(tǒng)。
隨著計算機及網絡技術的發(fā)展,Thin Client(瘦客戶機)日益普及,瘦客戶機/ 服務器應用是這樣一個模型應用配置、管理、執(zhí)行都100%在服務器端進行,它使用一個 多用戶操作系統(tǒng),把應用程序的用戶界面發(fā)送到客戶端。這種應用模型不需要重寫應用或 從服務器端下載,客戶可以完全訪問服務器端的Windows應用,這意味著對原有的硬件、網 絡、應用投資的超值回報。因此,瘦客戶機/服務器應用模型成為企業(yè)降低復雜性和總擁有 成本的最可靠的方法。
瘦客戶機/服務器應用要求一個多用戶操作系統(tǒng),以允許多個用戶同時登錄到一 臺服務器并運行服務器上的應用,另外還需要一個支持Windows遠程顯示協議的多用戶遠 程顯示系統(tǒng),能夠把應用的邏輯執(zhí)行和它的用戶界面分離,只允許鍵盤、鼠標和屏幕更新的 數據在網上傳送,因此,開發(fā)高效的多用戶遠程顯示系統(tǒng)已經成為對當代業(yè)界具有重大影 響的課題。
當今典型的辦公環(huán)境包括若干PC (個人計算機)和越來越多的瘦客戶端。這些PC 和瘦客戶端通過網絡進行集中管理,文件共享,存儲及文件服務。一開始,應用運行在每個 本地的桌面計算機上,服務器集中進行磁盤存儲管理。近來,基于安全,降低成本以及便于 集中管理等因素的考慮,PC和瘦客戶端變成了 SBCGerver Based Computing,基于服務器 的計算技術)解決方案的純粹的終端,應用于運行服務器中。
典型的利用SBC的遠程顯示系統(tǒng),目前主要有
A.微軟的RDP(Remote Display Protocol,遠程顯示協議),如圖1所示,每個 用戶會話(session)在服務器上擁有自己的顯示驅動,Terminal server(終端服務)根 據RDP協議將每個用戶顯示驅動輸出的顯示數據打包,然后通過網絡將這些數據包發(fā)送到 終端。終端收到顯示數據后,將數據包解釋為相應的Microsoft Win32 Graphics Device Interface (⑶I) API調用。此外RDP不但支持終端鍵盤/鼠標的重定向,而且支持終端聲音 及設備的管理。
對于目前的RDP體系,存在如下不足
DRDP傳輸繪制操作,當網絡擁塞或終端處理較慢時,會產生較大延遲;
2)終端需支持一個相對復雜的⑶I圖形庫,對Display (顯示)硬件要求較高。
B.使用VDI (Virtual Desktop hfrastructure,虛擬桌面基礎架構)的遠程顯 示系統(tǒng),如圖2所示,每個終端在服務器中運行一個虛擬機(VM),虛擬機映射服務器硬件設 備,擁有完全獨立的OS (操作系統(tǒng))。
VDI 的不足
1)VM可以映射主機的顯示設備,但同時只能有一個用戶使用該設備,對于其他用 戶只能使用由主機CPU模擬的虛擬顯示設備;
2) VDI需要強大的數據中心支持。例如Windows XP操作系統(tǒng)的桌面用戶,每個XP 鏡像只能提供給一個客戶端使用,有N個客戶端使用網絡鏡像,則要在數據中心建立N個這 樣的XP鏡像,服務器上要運行N個XP系統(tǒng)。這對服務器的數據存儲設備的要求很高。
3)當多個虛擬機同時在服務器上運行時,多個虛擬機的切換會增加服務器CPU的 開銷,極大的減少了同時支持的終端數量。發(fā)明內容
本發(fā)明實施例的目的是提供一種顯示方法和服務器,能極大地減少主CPU負載, 從而獲得更好的性能,支持更多地用戶連接。
為了實現上述目的,一方面,提供了 一種顯示方法,應用于具有一第一處理器和第 二處理器的服務器,包括步驟
接收來自終端的第一數據;
所述第一處理器根據所述第一數據生成第二數據,并將所述第二數據發(fā)給所述第 二處理器;
所述第二處理器依據所述第二數據生成顯示數據;
發(fā)送所述顯示數據至所述終端,其中,所述終端依據所述顯示數據進行顯示。
優(yōu)選地,上述的顯示方法中,在所述接收來自終端的第一數據的步驟之前,還包 括
所述第一處理器通過會話和所述終端建立連接;
所述第一處理器生成與所述終端對應的初始桌面數據,并將所述初始桌面數據發(fā) 給所述第二處理器;
所述第二處理器依據所述初始桌面數據生成初始桌面顯示數據;
發(fā)送所述初始桌面顯示數據至所述終端。
優(yōu)選地,上述的顯示方法中,所述接收來自終端的第一數據具體包括
接收來自終端的操作數據。
優(yōu)選地,上述的顯示方法中,所述第一處理器根據所述第一數據生成第二數據,并 將所述第二數據發(fā)給所述第二處理器的步驟具體包括
依據所述操作數據生成所述第二數據;
將所述第二數據重定向到所述第一處理器的虛擬圖形處理器組件模塊;
所述虛擬圖形處理器組件模塊將所述第二數據發(fā)送給所述第二處理器。
優(yōu)選地,上述的顯示方法中,在所述將所述第二數據重定向到所述第一處理器的 虛擬圖形處理器組件模塊的步驟具體包括
將所述第二數據發(fā)送到顯示模塊;
所述顯示模塊將所述第二數據發(fā)送到所述虛擬圖形處理器組件模塊。
優(yōu)選地,上述的顯示方法中,所述第二處理器依據所述第二數據生成顯示數據的 步驟具體包括
所述第二處理器根據所述第二數據進行圖像操作,獲得所述顯示數據。
優(yōu)選地,上述的顯示方法中,發(fā)送所述顯示數據至所述終端的步驟包括
編碼器模塊對所述顯示數據進行壓縮,獲得顯示壓縮數據;
根據顯示協議將所述顯示壓縮數據通過所述會話發(fā)送給所述終端。
本發(fā)明的另一個方面,提供一種服務器,包括
第一處理器,用于接收來自終端的第一數據;根據所述第一數據生成第二數據, 并將所述第二數據發(fā)給所述第二處理器;發(fā)送顯示數據至所述終端,其中,所述終端依據所 述顯示數據進行顯示;
第二處理器,與所述第一處理器連接,用于依據所述第二數據生成所述顯示數據。
優(yōu)選地,上述的服務器中,
所述第一處理器還用于通過會話和所述終端建立連接;生成與所述終端對應的 初始桌面數據,并將所述初始桌面數據發(fā)給所述第二處理器;發(fā)送初始桌面顯示數據至所 述終端;
所述第二處理器還用于依據所述初始桌面數據生成所述初始桌面顯示數據。
優(yōu)選地,上述的服務器中,
所述第一處理器具體包括顯示模塊和虛擬圖形處理器組件模塊;
所述顯示模塊,用于將所述第二數據發(fā)送到所述虛擬圖形處理器組件模塊;
所述虛擬圖形處理器組件模塊,用于將所述第二數據發(fā)送給所述第二處理器。
優(yōu)選地,上述的服務器中,
還包括
編碼器模塊,用于對所述顯示數據進行壓縮,獲得顯示壓縮數據;其中所述顯示壓 縮數據由所述第一處理器根據顯示協議通過所述會話發(fā)送給所述終端。
本發(fā)明實施例至少存在以下技術效果
1)由服務器的GPU (圖形處理器,顯卡)進行圖像繪制,可極大地減少主CPU負載, 從而獲得更好的性能,支持更多地用戶連接;
2)支持復雜多媒體圖像的遠程顯示;
3)僅壓縮傳輸最新更新的圖像數據流,當網絡擁塞或終端處理較慢時,不會產生 較大延遲;
4)終端僅需要一個解碼的codec (多媒體數字信號編解碼器),無需支持復雜的圖 形繪制能力,節(jié)約成本。
圖1為現有的RDP遠程顯示系統(tǒng)的示意圖2為現有的VDI遠程顯示系統(tǒng)的示意圖3為本發(fā)明實施例提供的實現方法的服務器端的步驟流程圖4為本發(fā)明實施例提供的服務器的邏輯框圖5為本發(fā)明實施例提供的多用戶遠程顯示系統(tǒng)的具體結構圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對具體實 施例進行詳細描述。
相對于使用虛擬桌面基礎架構的遠程顯示系統(tǒng),基于會話(Session)的RDP具有 更高的性能,同等需求下,對服務器的要求更低。故本發(fā)明提出一種基于會話的多用戶顯示 方法。
本發(fā)明實施例中的客戶端,只具有連接模塊和輸入輸出模塊,可以看作服務器的 輸入輸出設備。客戶端不具備傳統(tǒng)意義的CPU,因此和服務器連接后,如果需要計算,就通過 服務器計算;客戶端也不具備傳統(tǒng)意義的顯卡,如果需要顯示,就通過服務器將圖像完成繪 制,然后發(fā)過來直接驅動顯示單元顯示。一個服務器可以連接多個這樣的客戶端。
圖3為本發(fā)明實施例提供的方法的步驟流程圖,顯示方法應用于具有一第一處理 器和第二處理器的服務器,如圖所示,顯示方法包括
步驟301,接收來自終端的第一數據;
步驟302,所述第一處理器根據所述第一數據生成第二數據,并將所述第二數據發(fā) 給所述第二處理器;
步驟303,所述第二處理器依據所述第二數據生成顯示數據;
步驟304,發(fā)送所述顯示數據至所述終端,其中,所述終端依據所述顯示數據進行顯不。
以上實施例中,該第一數據主要是終端進行的鼠標和/或鍵盤的輸入操作。終端 的顯示數據都是在服務器端產生的,所以,終端的鼠標和鍵盤的輸入操作要發(fā)給服務器,服 務器進行相應的計算和處理,并對應繪制處理結果,生成該鼠標和鍵盤操作對應的畫面,再 發(fā)給終端顯示。因此,在步驟301之前,還包括所述第一處理器通過會話和所述終端建立 連接;所述第一處理器生成與所述終端對應的初始桌面數據,并將所述初始桌面數據發(fā)給 所述第二處理器;所述第二處理器依據所述初始桌面數據生成初始桌面顯示數據;發(fā)送所 述初始桌面顯示數據至所述終端。所述終端根據所述初始桌面數據產生操作數據。由于是 基于會話的,因此服務器可以支持多個用戶,每個用戶可以使用獨立的會話建立連接,并顯 示相應的桌面數據。
所述第一處理器接到終端的所述鼠標和/或鍵盤操作后,會進行響應,生成對應 的第二數據,但是為了減輕第一處理器的負擔,第二數據的圖像處理任務由第二處理器完 成,圖像處理包括對完成圖像的繪制,渲染和/或拉伸等等,之后生成顯示數據。之后,編 碼器模塊合并所述顯示數據后進行壓縮,獲得顯示壓縮數據;該編碼器模塊的運算優(yōu)選在 第二處理器內完成,當然也可以在第一處理器內完成。之后,第一處理器根據遠程顯示協 議RDP將所述顯示壓縮數據打包后,通過會話發(fā)送給所述終端。需要說明的是,如果帶寬足 夠,也可以不進行數據壓縮,這樣客戶端也可以不進行解壓縮,進一步降低客戶端復雜度和 成本;此外,第一處理器還可以根據其他顯示協議對顯示數據進行打包,通過網絡發(fā)送給所 述終端。
在客戶端,執(zhí)行如下流程
客戶端RDP核心模塊從網絡獲得接收數據;
對于不同類型的接收數據使用不同的虛擬管道,如果所述接收數據為所述顯示壓 縮數據,將所述顯示壓縮數據交給顯示解碼器模塊;
所述顯示解碼器模塊將所述顯示壓縮數據解碼后獲得所述顯示數據;
通過顯示接口輸出顯示所述顯示數據。
圖4為本發(fā)明實施例提供的服務器的邏輯框圖;如圖,服務器包括
第一處理器60,用于接收來自終端的第一數據;根據所述第一數據生成第二數 據,并將所述第二數據發(fā)給所述第二處理器;發(fā)送顯示數據至所述終端,其中,所述終端依 據所述顯示數據進行顯示;
第二處理器70,用于依據所述第二數據生成所述顯示數據。
需要說明的是,第一處理器和第二處理器可以是相同架構的處理器,也可以是不 同架構的處理器;優(yōu)選的,第一處理器和第二處理器是異構的;優(yōu)選的,第一處理器是CPU, 第二處理器是GPU。
其中,所述第一處理器60具體包括顯示模塊61和虛擬圖形處理器組件模塊62 ;
所述顯示模塊61,用于將所述第二數據發(fā)送到所述虛擬圖形處理器組件模塊;
所述虛擬圖形處理器組件模塊62,用于將所述第二數據發(fā)送給所述第二處理ο
其中,虛擬圖形處理器組件模塊62可以由第三方(例如軟件開發(fā)商)提供,因提 供商不同虛擬圖形處理器組件模塊62所支持的數據接口可能有多種,因此,有時候因為接 口問題,第二數據不能直接發(fā)送給虛擬圖形處理器組件模塊62,需要顯示模塊61進行中 轉。但是,如果第二數據的接口可以直接發(fā)給虛擬圖形處理器組件模塊62,就不再需要顯示 模塊61,因此顯示模塊61并非必需部件。
還包括,編碼器模塊80,用于合并所述顯示數據后進行壓縮,獲得顯示壓縮數 據;編碼器模塊80可以位于所述第一處理器中,也可以位于所述第二處理器中,優(yōu)選為位 于所述第二處理器中。同樣的,如果傳輸帶寬足夠,可以不需要編碼器模塊80。
為獲得更加流暢的多媒體播放效果,服務器的第一處理器60可以僅針對操作數 據所產生的變化生成第二數據,之后的顯示數據發(fā)送到終端后,直接疊加在終端Overlay 圖層上,這樣,相當于服務器僅壓縮最新了終端操作數據所產生的變化部分,當網絡擁塞或 終端處理較慢時,不會產生較大延遲。
具體的,可以在根據操作數據所產生的變化生成第二數據前獲得操作導致的變化 部分,并僅僅將所述變化的部分作為第二數據發(fā)送給所述第二處理器進行圖像處理,生成 變化部分的顯示數據后發(fā)送給終端;還可以在根據操作數據所產生的第二數據還是完整 的,所述第二處理器還是對完整的第二數據進行圖像處理,并生成完整的顯示數據,之后比 較剛生成的顯示數據和上一次的顯示數據,獲得變化的地方,僅僅將變化的地方發(fā)送給終 端。
圖5為本發(fā)明實施例提供的多用戶遠程顯示系統(tǒng)的具體結構圖,如圖所示,其包 括服務器410和客戶端420 ;
服務器410包括
由第一處理器完成運算的終端服務模塊、顯示模塊、虛擬圖形處理器組件模塊和服務器RDP核心模塊。(第一處理器可以包括應用程序模塊,應用程序模塊能夠對應響應客 戶端的操作數據,例如客戶端點擊鼠標右鍵,應用程序模塊對應彈出對話框)。
終端服務模塊(Terminal server),用于為接入服務器的終端創(chuàng)建一個對應的遠 程會話;
顯示模塊,用于在服務器通過會話第一次連接終端時,接收初始桌面數據, 并將所述初始桌面數據重定向到本地會話的虛擬圖形處理器組件模塊(Virtual GPU Component);在服務器與終端第一次連接之后,接收第二數據,并將所述第二數據重定向到 本地會話的虛擬圖形處理器組件模塊。
其中,重定向是指將本來應該在服務器本地輸入輸出的內容重新定向到遠程的終 端的輸入輸出。
虛擬圖形處理器組件模塊,用于在服務器通過會話第一次連接終端時,所述虛擬 圖形處理器組件模塊是將所述初始桌面數據發(fā)送到所述服務器的第二處理器中;在服務器 與終端第一次連接之后,所述虛擬圖形處理器組件模塊是將所述第二數據發(fā)送到所述服務 器的第二處理器中
第二處理器為圖形處理器GPU。所述GPU用于在服務器通過會話第一次連接終 端時,根據所述初始桌面數據進行圖像的繪制,渲染和/或拉伸,獲得初始顯示數據。在服 務器與終端第一次連接之后,根據所述第二數據進行圖像的繪制,渲染和/或拉伸,獲得顯 示數據。
此外,還包括編碼器模塊,用于壓縮所述顯示數據,獲得顯示壓縮數據;編碼器 模塊的運算可以由第一處理器或第二處理器完成,優(yōu)選為由第二處理器完成。
所述服務器RDP核心模塊,用于將所述顯示壓縮數據根據遠程顯示協議RDP打包 后,通過網絡發(fā)送給所述終端。
客戶端420還包括
客戶端RDP核心模塊,用于從網絡獲得接收數據,對于不同類型的接收數據使用 不同的虛擬管道,如果所述接收數據為所述顯示壓縮數據,將所述顯示壓縮數據交給顯示 解碼器模塊;
所述顯示解碼器模塊,用于將所述顯示壓縮數據解碼后獲得所述顯示數據;
所述顯示接口,用于,輸出顯示所述顯示數據。
可見,本發(fā)明實施例中,服務器是支持MS RDP協議的windows server,客戶端是一 個低成本的網絡顯示終端。
服務器處理流程如下
1)終端服務模塊(Terminal server)為每個接入服務器的終端創(chuàng)建一個會話 (Session);
2)遠程會話的桌面輸出到顯示模塊;
3)顯示模塊將輸入重定向到本地會話的虛擬圖形處理器組件模塊(Virtual GPU Component)0
4)虛擬圖形處理器組件模塊利用圖形設備接口⑶I/DX接口繪制到服務器GPU 中;
5)編碼器模塊通過DX接口獲取GPU中的數據,并進行合并,然后將合并的結果進行壓縮;
6)壓縮后的數據根據RDP協議打包后,通過網絡發(fā)送給終端;
客戶端處理流程如下
7)客戶端RDP核心模塊從網絡接收數據;
8)對于不同類型的數據使用不同的虛擬管道;
9)如果是顯示數據則交給顯示解碼模塊;
10)顯示解碼模塊解碼后通過顯示接口輸出顯示。
為了獲得最好的交互實時性,并減少網絡帶寬的占用,本實施例中客戶端支持硬 件光標,光標的運動與繪制在顯示接口模塊實現;
為獲得更加流暢的多媒體播放效果,本實施例終端支持具有多個幀緩沖的覆蓋 (Overlay)顯示,多媒體數據通過解碼器模塊(Video Decoder)解碼直接輸出到Overlay圖 層。因此,服務器可以僅壓縮最新更新的顯示數據,當網絡擁塞或終端處理較慢時,不會產 生較大延遲。
由上可知,本發(fā)明實施例具有以下優(yōu)勢
1)由服務器的GPU (圖形處理器,顯卡)進行圖像繪制,可極大地減少主CPU負載, 從而獲得更好的性能,支持更多地用戶連接;
2)支持復雜多媒體圖像的遠程顯示;
3)僅壓縮傳輸最新更新的圖像數據流,當網絡擁塞或終端處理較慢時,不會產生 較大延遲;
4)終端僅需要一個解碼的codec,無需支持復雜的圖形繪制能力,節(jié)約成本。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人 員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應 視為本發(fā)明的保護范圍。10
權利要求
1.一種顯示方法,應用于具有一第一處理器和第二處理器的服務器,其特征在于,包括 步驟接收來自終端的第一數據;所述第一處理器根據所述第一數據生成第二數據,并將所述第二數據發(fā)給所述第二處 理器;所述第二處理器依據所述第二數據生成顯示數據;發(fā)送所述顯示數據至所述終端,其中,所述終端依據所述顯示數據進行顯示。
2.根據權利要求1所述的顯示方法,其特征在于,在所述接收來自終端的第一數據的 步驟之前,還包括所述第一處理器通過會話和所述終端建立連接;所述第一處理器生成與所述終端對應的初始桌面數據,并將所述初始桌面數據發(fā)給所 述第二處理器;所述第二處理器依據所述初始桌面數據生成初始桌面顯示數據;發(fā)送所述初始桌面顯示數據至所述終端。
3.根據權利要求1所述的顯示方法,其特征在于,所述接收來自終端的第一數據具體 包括接收來自終端的操作數據。
4.根據權利要求3所述的顯示方法,其特征在于,所述第一處理器根據所述第一數據 生成第二數據,并將所述第二數據發(fā)給所述第二處理器的步驟具體包括依據所述操作數據生成所述第二數據;將所述第二數據重定向到所述第一處理器的虛擬圖形處理器組件模塊;所述虛擬圖形處理器組件模塊將所述第二數據發(fā)送給所述第二處理器。
5.根據權利要求4所述的顯示方法,其特征在于,在所述將所述第二數據重定向到所 述第一處理器的虛擬圖形處理器組件模塊的步驟具體包括將所述第二數據發(fā)送到顯示模塊;所述顯示模塊將所述第二數據發(fā)送到所述虛擬圖形處理器組件模塊。
6.根據權利要求1所述的顯示方法,其特征在于,所述第二處理器依據所述第二數據 生成顯示數據的步驟具體包括所述第二處理器根據所述第二數據進行圖像操作,獲得所述顯示數據。
7.根據權利要求1所述的顯示方法,其特征在于,發(fā)送所述顯示數據至所述終端的步 驟包括編碼器模塊對所述顯示數據進行壓縮,獲得顯示壓縮數據;根據顯示協議將所述顯示壓縮數據通過所述會話發(fā)送給所述終端。
8.一種服務器,其特征在于,包括第一處理器,用于接收來自終端的第一數據;根據所述第一數據生成第二數據,并將 所述第二數據發(fā)給所述第二處理器;發(fā)送顯示數據至所述終端,其中,所述終端依據所述顯 示數據進行顯示;第二處理器,與所述第一處理器連接,用于依據所述第二數據生成所述顯示數據。
9.根據權利要求8所述的服務器,其特征在于,所述第一處理器還用于通過會話和所述終端建立連接;生成與所述終端對應的初始 桌面數據,并將所述初始桌面數據發(fā)給所述第二處理器;發(fā)送初始桌面顯示數據至所述終 端;所述第二處理器還用于依據所述初始桌面數據生成所述初始桌面顯示數據。
10.根據權利要求8所述的服務器,其特征在于,所述第一處理器具體包括顯示模塊 和虛擬圖形處理器組件模塊;所述顯示模塊,用于將所述第二數據發(fā)送到所述虛擬圖形處理器組件模塊; 所述虛擬圖形處理器組件模塊,用于將所述第二數據發(fā)送給所述第二處理器。
11.根據權利要求8所述的服務器,其特征在于,還包括編碼器模塊,用于對所述顯示數據進行壓縮,獲得顯示壓縮數據;其中所述顯示壓縮數 據由所述第一處理器根據顯示協議通過所述會話發(fā)送給所述終端。
全文摘要
本發(fā)明實施例提供一種顯示方法和服務器,其中顯示方法應用于具有一第一處理器和第二處理器的服務器,顯示方法包括接收來自終端的第一數據;所述第一處理器根據所述第一數據生成第二數據,并將所述第二數據發(fā)給所述第二處理器;所述第二處理器依據所述第二數據生成顯示數據;發(fā)送所述顯示數據至所述終端,其中,所述終端依據所述顯示數據進行顯示。本發(fā)明實施例能極大地減少主CPU負載,從而獲得更好的性能,支持更多地用戶連接。
文檔編號H04L29/06GK102033726SQ200910235320
公開日2011年4月27日 申請日期2009年9月30日 優(yōu)先權日2009年9月30日
發(fā)明者劉渤, 孫成昆, 李洪偉, 郭子華 申請人:聯想(北京)有限公司