專利名稱:從多個服務(wù)器向客戶機遞送單個終端用戶體驗的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及優(yōu)化數(shù)據(jù)處理技術(shù)。
背景技術(shù):
遠程計算系統(tǒng)可使得用戶能訪問由遠程計算系統(tǒng)主存的資源。遠程計算系統(tǒng)上的服務(wù)器可執(zhí)行程序并將指示用戶界面的信號發(fā)送到可通過經(jīng)由符合諸如TCP/IP、UDP、或其他協(xié)議等通信協(xié)議的網(wǎng)絡(luò)發(fā)送信號來連接的客戶機??上蛎總€連接客戶機提供虛擬桌面或會話,即,包括一組資源的執(zhí)行環(huán)境。每個客戶機可向服務(wù)器發(fā)送指示用戶輸入的信號并且服務(wù)器可將該用戶輸入應(yīng)用于合適的會話??蛻魴C可使用諸如遠程桌面協(xié)議(RDP)等協(xié)議來連接到服務(wù)器資源。 隨著網(wǎng)絡(luò)帶寬可用性的增加以及對豐富2D和3D客戶機圖形應(yīng)用需求的增加,遠程計算系統(tǒng)體系結(jié)構(gòu)中已經(jīng)存在轉(zhuǎn)變。服務(wù)器結(jié)合將圖形處理智能轉(zhuǎn)移到數(shù)據(jù)中心中所部署的主存虛擬桌面基礎(chǔ)結(jié)構(gòu)(VDI)的圖形虛擬平臺,而不是單純地依賴本地計算能力??蛻魴C體驗全保真度的虛擬桌面,從而利用VDI上所安裝的共享圖形處理單元(GPU)的圖形處理能力和處理器。圖形虛擬平臺的一個示例是構(gòu)建在Hyper-V VDI體系結(jié)構(gòu)上并且集成RDP以傳送為主存VDI桌面所設(shè)計的新的有效載荷的Microsoft RemoteFXSo典型的VDI體系結(jié)構(gòu)可包括一個主機分區(qū)和多個客機分區(qū)或虛擬機。主機分區(qū)可訪問諸如GPU、中央處理單元(CPU)、和存儲器空間等VDI的底層物理資源,并且可分配和管理虛擬機對這些資源的訪問。每一虛擬機具有作為所分配的物理資源的虛擬化的一組虛擬資源。由此,在遠程計算系統(tǒng)中,客戶機可連接到虛擬機或其中運行的虛擬桌面會話,在那里對客戶機的認(rèn)證被管理。要從客戶機傳送到虛擬機的諸如用戶輸入數(shù)據(jù)或圖形數(shù)據(jù)等數(shù)據(jù)首先被傳送到主機分區(qū)上的網(wǎng)絡(luò)接口卡(NIC),隨后被重新路由到虛擬機。虛擬機可使用其虛擬資源來處理數(shù)據(jù)。虛擬機可將經(jīng)處理的數(shù)據(jù)發(fā)送到主機分區(qū)以供進一步對底層物理資源進行處理。主機分區(qū)進一步處理數(shù)據(jù)并將數(shù)據(jù)發(fā)送回虛擬機以便對客戶機認(rèn)證。虛擬機打包數(shù)據(jù)并將數(shù)據(jù)重新路由回主機分區(qū)以供經(jīng)由主機分區(qū)網(wǎng)絡(luò)接口控制器(NIC)傳送到客戶機。主機分區(qū)與虛擬機之間數(shù)據(jù)的反復(fù)遍歷可能需要密集的操作,這些密集的操作可消耗非常大量的存儲器和CPU資源并且可增加對客戶機的數(shù)據(jù)遞送等待時間。
發(fā)明內(nèi)容
公開了用于優(yōu)化對從遠程計算系統(tǒng)環(huán)境中的客戶機接收到的諸如圖形數(shù)據(jù)等數(shù)據(jù)的處理的系統(tǒng)、方法和計算機可讀介質(zhì)。相比于當(dāng)前體系結(jié)構(gòu),這樣的優(yōu)化包括降低主存的存儲器和CPU資源的使用、以及降低對客戶機的數(shù)據(jù)遞送等待時間。在一個實施例中,客戶機可啟動與諸如計算服務(wù)器之類的另一計算設(shè)備的第一連接,以便在虛擬桌面或其中的會話中執(zhí)行客戶機工作負載。計算服務(wù)器可認(rèn)證第一連接并且可獲得客戶機地址。計算服務(wù)器隨后可與圖形服務(wù)器協(xié)商連接,并且可初始化和指示圖形服務(wù)器期待源自客戶機地址的連接。計算服務(wù)器還可從圖形服務(wù)器獲得圖形服務(wù)器地址。計算服務(wù)器可向客戶機提供圖形服務(wù)器地址。進而,客戶機可使用圖形服務(wù)器地址與圖形服務(wù)器建立第三連接。一旦連接被建立,客戶機就可經(jīng)由第一連接向計算服務(wù)器提供用戶的屏幕輸入,諸如鍵盤輸入、鼠標(biāo)輸入等。計算服務(wù)器可處理所提供的輸入并輸出經(jīng)處理的數(shù)據(jù),諸如顯示命令和調(diào)用。計算服務(wù)器可向圖形服務(wù)器發(fā)送經(jīng)處理的數(shù)據(jù)以供處理。圖形服務(wù)器隨后可處理接收到的數(shù)據(jù)并且可將圖形輸出數(shù)據(jù)發(fā)送給客戶機。由此,圖形服務(wù)器不需要將圖形輸出數(shù)據(jù)發(fā)送回計算服務(wù)器。類似地,計算服務(wù)器不需要將圖形輸出數(shù)據(jù)發(fā)送到客戶機。計算服務(wù)器可以是主存在虛擬化計算系統(tǒng)上的客機分區(qū)或虛擬機,而圖形服務(wù)器可以是虛擬化計算系統(tǒng)上的主機分區(qū)。第一連接可以是例如TCP/IP、UDP、或任何其他基于網(wǎng)絡(luò)的通信,并且可包括遠程桌面會話連接。第二連接可包括例如分區(qū)內(nèi)通信信道(諸如VMBus)、通過系統(tǒng)管理程序(也被稱為虛擬機監(jiān)控程序)的通信、TCP/IP、UDP、或任何其他基于網(wǎng)絡(luò)的連接。第三連接可以是例如TCP/IP、TOP、FCOE、100GB以太網(wǎng)、或任何其他基于網(wǎng)絡(luò)的連接。
在一個實施例中,多個客戶機可同時連接到多個計算服務(wù)器以及多個圖形服務(wù)器。在建立與多個客戶機中的一個客戶機的連接以及對其認(rèn)證的初始步驟處,可使用重定向器和/或代理程序?qū)⒖蛻魴C連接到多個計算服務(wù)器中的第一計算服務(wù)器。重定向器和/或代理程序可確定多個計算服務(wù)器的可用性,并相應(yīng)地分配客戶機和第一計算服務(wù)器之間的連接。由此,在對計算資源進行負載平衡的情況下,諸如虛擬機實時遷移之類的技術(shù)可無縫地將負載從第一計算服務(wù)器轉(zhuǎn)移到第二計算服務(wù)器。到第二計算服務(wù)器的客戶機連接可被重新建立,而客戶機與多個圖形服務(wù)器中的一個圖形服務(wù)器之間的連接可保持不變。類似地,還可使用圖形服務(wù)器管理器將連接有客戶機的計算服務(wù)器連接到多個圖形服務(wù)器中的第一圖形服務(wù)器。圖形服務(wù)器管理器可確定多個圖形服務(wù)器的可用性,并且相應(yīng)地分配連接有客戶機的計算服務(wù)器和第一圖形服務(wù)器之間的連接。由此,在對圖形服務(wù)器進行負載平衡的情況下,連接有客戶機的計算服務(wù)器可創(chuàng)建與第二圖形服務(wù)器的新連接,并且可請求客戶機與第二圖形服務(wù)器建立新連接??蛻魴C隨后可無縫地轉(zhuǎn)移到第二圖形服務(wù)器上。在其中多個客戶機同時連接到多個計算服務(wù)器和多個圖形服務(wù)器的實施例中,至少一個客戶機可被配置成從多個圖形服務(wù)器接收所渲染的、捕捉到的以及壓縮的數(shù)據(jù)。由此,通過至少一個客戶機來接口的用戶可查看源自一個或多個客戶機的所渲染的、捕捉到的以及壓縮的數(shù)據(jù)。類似地,至少一個圖形服務(wù)器可被配置成將源自多個客戶機的所渲染的、捕捉到的以及壓縮的經(jīng)處理的數(shù)據(jù)傳送給一個客戶機。本發(fā)明內(nèi)容旨在提供本發(fā)明各方面的概覽。本發(fā)明內(nèi)容并不旨在標(biāo)識本發(fā)明的任何必要步驟或組件。除了上述方面,構(gòu)成本公開的一部分的權(quán)利要求、附圖、以及文本還描述了其他方面。本領(lǐng)域技術(shù)人員之一可理解,本公開的一個或更多個方面可包括但不限于用于實現(xiàn)本公開的本文所提及的各方面的電路和/或編程;該電路和/或編程實質(zhì)上可以是配置成實現(xiàn)本文所提及的方面的硬件、軟件和/或固件的任何組合,這取決于系統(tǒng)設(shè)計者的設(shè)計選擇。
參考附圖來進一步描述根據(jù)本說明書的用于優(yōu)化對在遠程計算環(huán)境中接收到的數(shù)據(jù)(諸如圖形數(shù)據(jù))的處理的系統(tǒng)、方法和計算機可讀介質(zhì),在附圖中圖I描繪了其中可實現(xiàn)本公開的各方面的示例計算環(huán)境。圖2描繪了用于實施本公開的各方面的遠程計算環(huán)境。圖3描繪了其中多個客戶機可連接到多個遠程服務(wù)器以實施本公開的各方面的遠程環(huán)境。圖4描繪了具有多個虛擬機的一示例虛擬機環(huán)境。 圖5描繪了具有多個虛擬機的另一示例虛擬機環(huán)境。圖6描繪了主存多個虛擬桌面會話以實施本公開的各方面的遠程服務(wù)器。圖7描繪了用于實施本公開的各方面的一示例計算服務(wù)器和圖形服務(wù)器體系結(jié)構(gòu)。圖8描繪了用于實施本公開的各方面的另一示例計算服務(wù)器和圖形服務(wù)器體系結(jié)構(gòu)。圖9描繪了用于實施本公開的各方面的一示例計算服務(wù)器和多個圖形服務(wù)器。圖10描繪了在虛擬環(huán)境中實現(xiàn)、用于實施本公開的各方面的一示例計算服務(wù)器和圖形服務(wù)器。圖11描繪了用于實現(xiàn)本公開的各方面、具有一個客戶機、計算服務(wù)器和圖形服務(wù)器的計算環(huán)境。圖12描繪了用于實現(xiàn)本公開的各方面、具有多個客戶機、計算服務(wù)器和圖形服務(wù)器的計算環(huán)境。圖13描繪了示出用于實施本公開的各方面的示例方法的流程圖。圖14描繪了用于實施本公開的各方面的示例系統(tǒng)和計算機可讀存儲介質(zhì)。
具體實施例方式在以下描述和附圖中闡明了某些具體細節(jié),以提供對本公開的各個實施例的全面理解。通常與計算和軟件技術(shù)相關(guān)聯(lián)的某些公知細節(jié)不在以下公開中描述,以避免不必要地使本公開的各實施例晦澀難懂。此外,相關(guān)領(lǐng)域的普通技術(shù)人員會理解,他們可以無需以下描述的細節(jié)中的一個或多個而實現(xiàn)本公開的其它實施例。最后,盡管在以下公開中參考了步驟和序列來描述各個方法,但是如此的描述是為了提供本公開的實施例的清楚實現(xiàn),且步驟以及步驟序列不應(yīng)被認(rèn)為是實現(xiàn)本公開所必需的。應(yīng)該理解,此處描述的各種技術(shù)可以結(jié)合硬件或軟件,或在適當(dāng)時結(jié)合兩者的組合來實現(xiàn)。因此,本公開的方法和裝置或其某些方面或部分,可以采用包含在諸如軟盤、CD-ROM、硬盤驅(qū)動器或任何其它機器可讀存儲介質(zhì)等有形介質(zhì)中的程序代碼(S卩,指令)的形式,其中,當(dāng)程序代碼被加載至諸如計算機等機器并由其運行時,該機器成為用于實現(xiàn)本公開的裝置。在程序代碼在可編程計算機上執(zhí)行的情況下,計算設(shè)備通常包括處理器、該處理器可讀的存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備、以及至少一個輸出設(shè)備。一個或多個程序可以例如,通過使用應(yīng)用編程接口(API)、可重用控件等來實現(xiàn)或利用結(jié)合本公開所描述的過程。這樣的程序優(yōu)選地用高級過程語言或面向?qū)ο缶幊陶Z言來實現(xiàn),以與計算機系統(tǒng)通信。然而,如果需要,該程序可以用匯編語言或機器語言來實現(xiàn)。在任何情形中,語言可以是編譯語言或解釋語言,且與硬件實現(xiàn)相結(jié)合。貫穿本公開使用的術(shù)語電路可包括諸如硬件中斷控制器、硬盤驅(qū)動器、網(wǎng)絡(luò)適配器、圖形處理器、基于硬件的視頻/音頻編解碼器等硬件組件,以及用于操作這些硬件的固件/軟件。術(shù)語電路還可包括被配置成通過固件或通過開關(guān)集來以特定方式執(zhí)行功能的微處理器,或一個或多個邏輯處理器,例如,多核通用處理單元的一個或多個核。此示例中的邏輯處理器可以通過從存儲器,例如,RAM、ROM、固件和/或虛擬存儲器中加載的體現(xiàn)可操作以執(zhí)行功能的邏輯的軟件指令來配置。在其中電路可包括硬件和軟件的組合的示例實施例中,實現(xiàn)者可以編寫具體化邏輯的源代碼,該源代碼隨后被編譯成可由邏輯處理器執(zhí)行的機器可讀代碼。因為本領(lǐng)域技術(shù)人員可以明白,現(xiàn)有技術(shù)已經(jīng)進化到硬件、軟件或硬件/軟件的組合之間幾乎沒有差別的地步,因而選擇硬件還是軟件來實現(xiàn)功能只是一個設(shè)計選擇。因此,由于本領(lǐng)域的技術(shù)人員可以理解軟件進程可被變換成等效的硬件結(jié)構(gòu),且硬件結(jié)構(gòu)本身可被變換成等效的軟件進程,因此選擇硬件實現(xiàn)或是軟件實現(xiàn)留給了實現(xiàn)者。本發(fā)明的實施例可以在一個或更多計算機上執(zhí)行。圖I及以下討論旨在提供對其 中可實現(xiàn)本公開的合適的計算環(huán)境的簡要概括描述。本領(lǐng)域技術(shù)人員可以理解,計算機系統(tǒng)可具有本文在下面所描述的組件的某些或全部。圖I描繪了被配置成與本公開的各方面一起工作的計算系統(tǒng)的示例。計算系統(tǒng)可包括計算機100等等,其中包括邏輯處理單元102、系統(tǒng)存儲器22,以及將包括系統(tǒng)存儲器在內(nèi)的各種系統(tǒng)組件耦合到邏輯處理單元102的系統(tǒng)總線23。系統(tǒng)總線23可以是若干類型的總線結(jié)構(gòu)中的任一種,包括使用各種總線體系結(jié)構(gòu)中的任一種的存儲器總線或存儲器控制器、外圍總線、以及局部總線。系統(tǒng)存儲器包括只讀存儲器(ROM) 24和隨機存取存儲器(RAM) 104。基本輸入/輸出系統(tǒng)26 (BIOS)被存儲在R0M24中,該基本輸入/輸出系統(tǒng)26包含了諸如在啟動期間幫助在計算機100內(nèi)的元件之間傳輸信息的基本例程。計算機100還可以包括用于讀寫硬盤(未示出)的硬盤驅(qū)動器27、用于讀寫可移動磁盤118的磁盤驅(qū)動器28,以及用于讀寫諸如CD ROM或其他光學(xué)介質(zhì)之類的可移動光盤31的光盤驅(qū)動器30。在一些示例實施例中,實施本公開的各方面的計算機可執(zhí)行指令可存儲在R0M24、硬盤(未示出)、RAM104、可移動磁盤118、光盤31和/或邏輯處理單元102的高速緩存中。硬盤驅(qū)動器27、磁盤驅(qū)動器28,以及光盤驅(qū)動器30分別通過硬盤驅(qū)動器接口 32、磁盤驅(qū)動器接口 33,以及光盤驅(qū)動器接口 34連接到系統(tǒng)總線23。驅(qū)動器以及它們相關(guān)聯(lián)的計算機可讀介質(zhì)為計算機100提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊,及其他數(shù)據(jù)的非易失存儲器。雖然此處所描述的環(huán)境使用了硬盤、可移動磁盤118、以及可移動光盤31,但是,那些本領(lǐng)域普通技術(shù)人員應(yīng)該理解,在操作環(huán)境中也可以使用諸如盒式磁帶、閃存卡、數(shù)字視頻盤、伯努利磁帶盒、隨機存取存儲器(RAM)、只讀存儲器(ROM)等等之類的可以存儲可由計算機進行訪問的數(shù)據(jù)的其他類型的計算機可讀介質(zhì)??梢杂腥舾蓚€程序模塊存儲在硬盤、磁盤118、光盤31、R0M24或RAM104上,包括操作系統(tǒng)35、一個或多個應(yīng)用程序36、其他程序模塊37、以及程序數(shù)據(jù)38。用戶可以通過諸如鍵盤40和定點設(shè)備42之類的輸入設(shè)備向計算機100中輸入命令和信息。其他輸入設(shè)備(未示出)可包括話筒、游戲桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀等等。這些及其他輸入設(shè)備常常通過耦合到系統(tǒng)總線的串行端口接口 46連接到邏輯處理單元102,但是,也可以通過諸如并行端口、游戲端口、通用串行總線(USB)之類的其他接口來連接。顯示器47或其他類型的顯示設(shè)備也可以通過諸如GPU/視頻適配器112之類的接口連接到系統(tǒng)總線23。除了顯示器47之外,計算機通常包括其他外圍輸出設(shè)備(未示出),如揚聲器和打印機。圖I的系統(tǒng)也包括主機適配器55、小型計算機系統(tǒng)接口(SCSI)總線56,以及連接到SCSI總線56的外部存儲設(shè)備62。計算機100可使用到一個或多個遠程計算機(諸如,遠程計算機49)的邏輯連接而在聯(lián)網(wǎng)環(huán)境中操作。遠程計算機49可以是另一計算機、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他常見的網(wǎng)絡(luò)節(jié)點、虛擬機,并通常包括上文相對于計算機100所描述的許多或全部元件,但是在圖I中只示出了存儲器存儲設(shè)備50。圖I中所描繪的邏輯連接可包括局域網(wǎng)(LAN) 51和網(wǎng)絡(luò)52,作為一個示例該網(wǎng)絡(luò)52是廣域網(wǎng)(WAN)。這樣的聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍的計算機網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是普遍的。當(dāng)用于LAN聯(lián)網(wǎng)環(huán)境中時,計算機100可通過網(wǎng)絡(luò)接口控制器(NIC)IH或適配器 連接到LAN51。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用時,計算機100通常可包括調(diào)制解調(diào)器54或用于通過例如因特網(wǎng)等網(wǎng)絡(luò)52建立通信的其他手段??梢允莾?nèi)置的或外置的調(diào)制解調(diào)器54可通過串行端口接口 46連接到系統(tǒng)總線23。在聯(lián)網(wǎng)環(huán)境中,相對于計算機100所示的程序模塊或其部分可被存儲在遠程存儲器存儲設(shè)備中。可以理解,所示出的網(wǎng)絡(luò)連接只是示例,也可以使用用于在計算機之間建立通信鏈路的其他手段。此外,雖然可構(gòu)想本發(fā)明的許多實施例尤其適用于計算機系統(tǒng),然而在本文中不意味著將本公開限于這些實施例。在某些情形中,用戶可能想要遠程地訪問計算應(yīng)用,即在單獨的計算設(shè)備上運行的應(yīng)用。一種實現(xiàn)通過諸如虛擬桌面等遠程桌面向用戶提供這樣的訪問。遠程桌面系統(tǒng)的各實施例可執(zhí)行一個或多個計算機,或者可具有參考圖I的計算機100來描述的組件中的一些或全部。遠程桌面系統(tǒng)是維護可由客戶機計算機系統(tǒng)遠程地執(zhí)行并顯示在客戶機計算機系統(tǒng)上的應(yīng)用的計算機系統(tǒng)。圖2描繪了遠程桌面系統(tǒng)200的示例體系結(jié)構(gòu)。遠程桌面系統(tǒng)200可包括遠程客戶機計算機210和遠程服務(wù)器計算機220。遠程客戶機計算機210和遠程服務(wù)器計算機220被配置成彼此進行諸如虛擬桌面會話等遠程會話。如所描繪的,遠程服務(wù)器計算機220將遠程會話提供給遠程客戶機計算機210,其中,遠程服務(wù)器計算機220將來自執(zhí)行用戶的客戶機圖形輸出發(fā)送到遠程客戶機會話222。遠程用戶輸入是在遠程客戶機計算機210處輸入的。輸入管理器212可處理遠程用戶輸入并通過網(wǎng)絡(luò)(例如,使用基于國際電信聯(lián)盟(ITU)T. 120協(xié)議家族等協(xié)議,如遠程桌面協(xié)議(RDP))將其傳送到遠程服務(wù)器計算機220上的遠程用戶應(yīng)用224。網(wǎng)絡(luò)可以是任何類型的通信網(wǎng)絡(luò),諸如局域網(wǎng)、廣域網(wǎng)、電纜網(wǎng)絡(luò)、因特網(wǎng)、萬維網(wǎng)或公司企業(yè)網(wǎng)絡(luò)。遠程用戶應(yīng)用224可在遠程服務(wù)器計算機220上主存的遠程客戶機會話222中被執(zhí)行。遠程用戶應(yīng)用224如同該輸入是在遠程服務(wù)器計算機220處輸入的那樣來處理該輸入。遠程用戶應(yīng)用224響應(yīng)于接收到的輸入生成遠程服務(wù)器輸出,并且該輸出通過網(wǎng)絡(luò)傳送到遠程客戶機計算機210。遠程客戶機計算機210向遠程用戶呈現(xiàn)輸出數(shù)據(jù)。由此,在遠程客戶機計算機210處接收輸入并呈現(xiàn)輸出,而處理實際上是在遠程服務(wù)器計算機220處發(fā)生的。除了遠程用戶應(yīng)用224以外,遠程客戶機會話222可包括外殼和諸如桌面之類的用戶界面、跟蹤桌面內(nèi)的鼠標(biāo)移動的子系統(tǒng)、將對圖標(biāo)的鼠標(biāo)點擊轉(zhuǎn)換成實現(xiàn)程序?qū)嵗拿畹淖酉到y(tǒng)、其他應(yīng)用等。應(yīng)當(dāng)理解,上述討論是示例性的,并且當(dāng)前公開的主題可在各種客戶機/服務(wù)器環(huán)境中實現(xiàn)而不限于特定的遠程呈現(xiàn)產(chǎn)品。在大多數(shù)(如果不是全部的話)遠程桌面環(huán)境中,(在遠程客戶機計算機210處輸入的)遠程用戶輸入數(shù)據(jù)通常包括表示對應(yīng)用的命令的鼠標(biāo)和鍵盤數(shù)據(jù)。(遠程用戶應(yīng)用在遠程服務(wù)器計算機220處生成的)輸出數(shù)據(jù)通常包括供在遠程客戶機計算機210處顯示的圖形數(shù)據(jù)。許多遠程桌面環(huán)境也包括擴展到傳輸其他類型的數(shù)據(jù)的功能。在一示例實施例中,可將來自用戶應(yīng)用224的圖形數(shù)據(jù)輸出發(fā)送到遠程服務(wù)器計算機220上主存的圖形管理器226。圖形管理器226可渲染、捕捉、壓縮圖形數(shù)據(jù)并經(jīng)由網(wǎng)絡(luò)將其傳送到遠程客戶機計算機210上的遠程用戶顯示器214。遠程用戶顯示器214可向遠程用戶顯示圖形輸出數(shù)據(jù)。在遠程桌面環(huán)境的實施例中,遠程服務(wù)器計算機可執(zhí)行多個遠程客戶機計算機的多個遠程會話(或虛擬桌面)。由此,代理程序可用于控制對多個遠程客戶機計算機的會話分配。另外,在遠程桌面環(huán)境中,存在可服務(wù)特定遠程客戶機計算機的多個遠程服務(wù)器計算機。由此,重定向器可用于控制對服務(wù)特定遠程客戶機計算機的遠程服務(wù)器計算機的分配。圖3描繪了這樣的遠程桌面系統(tǒng)300的示例實施例。 多個遠程客戶機計算機310(A_N)可以是能夠經(jīng)由網(wǎng)絡(luò)與遠程服務(wù)器系統(tǒng)350通信的任何計算設(shè)備,諸如圖2的遠程客戶機計算機210。遠程服務(wù)器系統(tǒng)350可包括重定向器330、代理程序340、和多個遠程服務(wù)器計算機320 (A-N)。重定向器330和代理程序340可以是包括處理器和存儲器的計算設(shè)備,處理器和存儲器被配置成實現(xiàn)本文下面所描述的這些設(shè)備的相應(yīng)功能。遠程服務(wù)器計算機320 (A-N)可具有參考圖I的計算機100以及圖2的遠程服務(wù)器計算機220所描述的組件中的部分或全部。遠程服務(wù)器計算機320 (A-N)還作為虛擬機來實現(xiàn)。虛擬機可在單個硬件基礎(chǔ)結(jié)構(gòu)上或在單獨的硬件基礎(chǔ)結(jié)構(gòu)上實現(xiàn)。代理程序340可以是使用網(wǎng)關(guān)(未示出)連接到重定向器330的獨立設(shè)備,可以被放置在重定向器330內(nèi),或可以被放置在遠程服務(wù)器計算機320 (A-N)內(nèi)。重定向器330還可被放置在遠程服務(wù)器計算機320 (A-N)內(nèi)。代理程序340基于存儲在代理程序340中的會話狀態(tài)信息來向遠程客戶機計算機分配會話。會話狀態(tài)信息可包括例如會話ID、用戶名、會話所在的遠程服務(wù)器計算機的名稱、每一遠程服務(wù)器計算機中的活動會話的數(shù)量等等。如此處使用的,會話可以是虛擬桌面會話(也稱為虛擬機會話)。遠程客戶機計算機310首先連接到可提供對遠程客戶機計算機310 (A-N)的負載平衡的重定向器330。在這一情況下,重定向器330通常首先接收對連接的請求。重定向器330隨后接受連接請求并且查詢代理程序340,以便確定遠程客戶機計算機310被重定向到哪里。代理程序340分析該特定環(huán)境的會話狀態(tài)信息并標(biāo)識遠程客戶機計算機310可被重定向到的遠程服務(wù)器計算機320。所標(biāo)識的遠程服務(wù)器計算機320可擁有由遠程客戶機計算機310先前訪問但之后斷開連接的會話,遠程客戶機計算機310可再次重新連接到該會話。在一個實施例中,假如遠程客戶機計算機310不擁有任何其他現(xiàn)有會話,所標(biāo)識的遠程服務(wù)器計算機320可提供遠程客戶機計算機310可連接到的新會話。代理程序340向所請求的遠程服務(wù)器計算機320發(fā)送信息,使遠程客戶機計算機320能夠與所標(biāo)識的遠程服務(wù)器計算機310建立連接。例如,該信息可包括機器ID、會話ID、以及所標(biāo)識的遠程服務(wù)器計算機320的位置。一旦遠程客戶機計算機310與所標(biāo)識的遠程服務(wù)器計算機320建立連接,遠程客戶機計算機310就可訪問所標(biāo)識的遠程服務(wù)器計算機320中存在的應(yīng)用。這些應(yīng)用可與代理程序340的被用于標(biāo)識遠程服務(wù)器系統(tǒng)350中的遠程服務(wù)器計算機320的邏輯兼容。在一個實施例中,上文描述的系統(tǒng)可用于例如將遠程客戶機計算機310連接到運行在遠程服務(wù)器計算機上的多個虛擬桌面或其中的會話中的一個。遠程客戶機計算機檢查遠程桌面協(xié)議(RDP)分組中的重定向器令牌。遠程客戶機計算機基于重定向器令牌中所包含的信息來連接到許多虛擬桌面中的一個。在另一實施例中,遠程客戶機計算機310可使用代理程序340和池管理器(未示出)來連接到虛擬桌面中的一個。池管理器可放置在代理程序340內(nèi)。代理程序340在遠程客戶機計算機310連接到虛擬機(VM)上主存的虛擬桌面時向遠程客戶機計算機310分配虛擬桌面,并且池管理器指示那些虛擬桌面可用于分配。在又一實施例中,遠程客戶機計算機310可連接到虛擬桌面。遠程客戶機計算機 310指示由代理程序340用于生成網(wǎng)際協(xié)議(IP)地址并在遠程客戶機計算機310與虛擬桌面之間建立連接的網(wǎng)絡(luò)名。通過對遠程客戶機計算機310 (A-N)隱藏個別虛擬桌面IP地址,最初只需要向遠程客戶機計算機310 (A-N)外部暴露代理程序340的單個網(wǎng)絡(luò)名。圖4示出了具有多個虛擬機的一示例虛擬機環(huán)境。虛擬化計算機系統(tǒng)400可用于實現(xiàn)圖2的遠程服務(wù)器計算機220和圖3的遠程服務(wù)器計算機320 (A-N)。如圖4所示,計算機系統(tǒng)400可包括圖I中所描述的元件、以及可用于實現(xiàn)虛擬機的組件。一個這樣的組件是在本領(lǐng)域中也可被稱為虛擬機監(jiān)控程序的系統(tǒng)管理程序微內(nèi)核(hypervisor microkernel) 402。系統(tǒng)管理程序微內(nèi)核402可被配置成控制并仲裁對計算機系統(tǒng)400的硬件的訪問。系統(tǒng)管理程序微內(nèi)核402可以生成被稱為分區(qū)的執(zhí)行環(huán)境,分區(qū)諸如客機分區(qū)I到客機分區(qū)N (其中N是大于I的整數(shù))。在此,客機分區(qū)是系統(tǒng)管理程序微內(nèi)核402所支持的基本隔離單元??蜋C分區(qū)也可被稱為子分區(qū)。系統(tǒng)管理程序微內(nèi)核402可以隔離一個分區(qū)中的進程,使其不能訪問另一分區(qū)的資源。每個客機分區(qū)都可以被映射到在系統(tǒng)管理程序微內(nèi)核402控制之下的一組硬件資源,例如,存儲器、設(shè)備、處理器周期等。在各實施例中,系統(tǒng)管理程序微內(nèi)核402可以是獨立的軟件產(chǎn)品、操作系統(tǒng)的一部分、嵌入在主板的固件中、專用集成電路、或其組合。系統(tǒng)管理程序微內(nèi)核402可以通過限制客操作系統(tǒng)對物理計算機系統(tǒng)中的存儲器的視圖來實施分區(qū)劃分。當(dāng)系統(tǒng)管理程序微內(nèi)核402實例化一虛擬機時,它可以將系統(tǒng)物理存儲器(SPM)的頁(例如,具有開始和結(jié)束地址的固定長度存儲器塊)分配給虛擬機作為客物理存儲器(GPM)。在此,客的受限的系統(tǒng)存儲器視圖由系統(tǒng)管理程序微內(nèi)核402來控制。術(shù)語“客物理存儲器”是從虛擬機的觀點描述存儲器頁的簡寫方式,且術(shù)語“系統(tǒng)物理存儲器”是從物理系統(tǒng)的觀點描述存儲器頁的簡寫方式。因此,被分配給虛擬機的存儲器頁會有客物理地址(虛擬機所使用的地址)和系統(tǒng)物理地址(頁的實際地址)??筒僮飨到y(tǒng)可以虛擬化客物理存儲器。虛擬存儲器是一種管理技術(shù),其允許操作系統(tǒng)過度提交存儲器,并且給予應(yīng)用對連續(xù)工作存儲器的唯一訪問。在虛擬化環(huán)境中,客操作系統(tǒng)可以使用一個或多個頁表來將被稱為虛擬客地址的虛擬地址轉(zhuǎn)換成客物理地址。在該示例中,存儲器地址可以具有客虛擬地址、客物理地址以及系統(tǒng)物理地址。在所描繪的示例中,計算機系統(tǒng)400包括主機分區(qū),主機分區(qū)也可被認(rèn)為是類似于Xen的開源系統(tǒng)管理程序的域O。主機分區(qū)也可被稱為父分區(qū)或根分區(qū)。如所描繪的,主機分區(qū)可包括主機404。主機404可包括允許應(yīng)用與計算機系統(tǒng)400的底層物理硬件進行交互的設(shè)備驅(qū)動程序424。由此,主機404可訪問計算機系統(tǒng)400的物理硬件,諸如邏輯處理單元102、GPU112、以及NIC114。主機404可以是操作系統(tǒng)(或一組配置實用程序)。主機404可被配置成通過使用虛擬化服務(wù)提供者428 (VSP)向在客機分區(qū)1_N中執(zhí)行的客操作系統(tǒng)提供資源。VPS428 (—般在開源社區(qū)中被稱為后端驅(qū)動程序)可用來通過虛擬化服務(wù)客戶機(VSC)(在開源社區(qū)或類虛擬化設(shè)備中一般稱為前端驅(qū)動程序)對到硬件資源的接口進行多路復(fù)用。如圖4所示,虛擬化服務(wù)客戶機在客操作系統(tǒng)的上下文中執(zhí)行。然而,這些驅(qū)動程序不同于客機中的其余驅(qū)動程序,因為向它們提供了系統(tǒng)管理程序而非客機。在一示例性實施例中,虛擬化服務(wù)提供者428與VSC416和418通信所使用的路徑可以被認(rèn)為是虛擬化路徑。主機分區(qū)VSP428以及客機分區(qū)VSC416和418可連接到虛擬機總線(VMBus)。虛擬機總線是允許分區(qū)間通信的邏輯信道。對虛擬資源(諸如虛擬處理器430和432)的客機分區(qū)請求可經(jīng)由虛擬機總線被重定向到主機分區(qū)中可管理這些請求的設(shè)備。從主機分區(qū) 到客機分區(qū)的響應(yīng)也可經(jīng)由虛擬機總線來重定向。這整個過程對于客操作系統(tǒng)220和222可以是透明的。在另一實施例中,主機分區(qū)VSP228與客機分區(qū)VSC216和218可經(jīng)由諸如TCP/IP網(wǎng)絡(luò)之類的網(wǎng)絡(luò)通過發(fā)送和接收消息分組來通信。如圖4所示,仿真器434(例如虛擬化IDE設(shè)備、虛擬化視頻適配器、虛擬化NIC等)可被配置成在主機404內(nèi)運行并被附連到對客操作系統(tǒng)420和422可用的資源。例如,當(dāng)客操作系統(tǒng)接觸被映射到設(shè)備的寄存器所處的存儲器位置、或者存儲器被映射的設(shè)備時,系統(tǒng)管理程序微內(nèi)核402可截取該請求并將客機試圖寫入的值傳遞給相關(guān)聯(lián)的仿真器。在此,該示例中的資源可被認(rèn)為是虛擬設(shè)備所處的位置。仿真器的以這種方式的使用可以被認(rèn)為是仿真路徑。仿真路徑與虛擬化路徑相比是低效的,因為與在VSP和VSC之間傳遞消息相比,它需要更多的CPU資源來仿真設(shè)備。例如,可以將用來經(jīng)由仿真路徑把值寫入盤的、被映射至寄存器的存儲器上的幾百個動作減少為單個消息,該消息在虛擬路徑中從VSC被傳遞至VSP。每一客機分區(qū)可包括一個或多個虛擬處理器(430和432),客操作系統(tǒng)(420和422)可管理并調(diào)度線程以便在這些虛擬處理器上執(zhí)行。一般而言,虛擬處理器是向物理處理器的表示提供特定架構(gòu)的可執(zhí)行指令以及相關(guān)聯(lián)的狀態(tài)信息。例如,一個虛擬機可具有帶有英特爾x86處理器特性的虛擬處理器,而另一虛擬處理器可具有PowerPC處理器的特性。本例中的虛擬處理器可被映射到計算機系統(tǒng)的處理器,使得實現(xiàn)虛擬處理器的指令將得到處理器的支持。由此,在包括多個處理器的實施例中,虛擬處理器可以由處理器同時執(zhí)行,同時例如其他處理器執(zhí)行系統(tǒng)管理程序指令。分區(qū)中虛擬處理器和存儲器的組合可被認(rèn)為是虛擬機??筒僮飨到y(tǒng)(420和422)可以是任何操作系統(tǒng),諸如來自Microsoft ,Apple 、開
源社區(qū)等的操作系統(tǒng)。客操作系統(tǒng)可包括用戶/內(nèi)核操作模式,并且可具有可包括調(diào)度程序、存儲器管理器等的內(nèi)核。一般而言,內(nèi)核模式可包括處理器中至少向特權(quán)處理器指令授予訪問權(quán)的執(zhí)行模式。每一客操作系統(tǒng)可具有相關(guān)聯(lián)的文件系統(tǒng),該文件系統(tǒng)上可存儲有應(yīng)用(諸如遠程服務(wù)或虛擬桌面會話、終端服務(wù)器、電子商務(wù)服務(wù)器、電子郵件服務(wù)器等)以及客操作系統(tǒng)本身??筒僮飨到y(tǒng)可調(diào)度要在虛擬處理器上執(zhí)行的線程,且這些應(yīng)用的實例可被實現(xiàn)。圖5描繪了與圖4的組件相類似的組件。然而,在該示例實施例中,系統(tǒng)管理程序542可包括微內(nèi)核組件以及和圖4的主機404中的組件(如虛擬化服務(wù)提供者428和設(shè)備驅(qū)動程序424)相類似的組件,而管理操作系統(tǒng)540可包含例如用于配置系統(tǒng)管理程序542的配置實用程序。在該體系結(jié)構(gòu)中,系統(tǒng)管理程序542可執(zhí)行與圖4中的系統(tǒng)管理程序微內(nèi)核402和主機404相同或相似的功能。系統(tǒng)管理程序542可以是獨立的軟件產(chǎn)品、操作系統(tǒng)的一部分、嵌入在主板的固件內(nèi),和/或系統(tǒng)管理程序542的一部分可以由專用集成電路來實現(xiàn)。在各個實施例中,諸如圖2中的遠程服務(wù)器計算機220之類的遠程服務(wù)器計算機可執(zhí)行多個遠程客戶機會話或虛擬桌面。諸如遠程客戶機會話220之類的每一遠程客戶機會話可表示連接客戶機的應(yīng)用環(huán)境。遠程服務(wù)器計算機可為圖6中所示的連接遠程客戶機 計算機中的每一個生成至少一個遠程客戶機會話。此外,如上所述,遠程服務(wù)器計算機220可以是執(zhí)行圖4和5的計算機系統(tǒng)400的組件中的部分或全部的虛擬機,該虛擬機進而執(zhí)行多個遠程客戶機會話。圖6中所描繪的是計算機系統(tǒng)600,計算機系統(tǒng)600可包括被配置成實現(xiàn)遠程服務(wù)器計算機的電路,或者在其他實施例中,計算機系統(tǒng)600可包括被配置成支持遠程桌面連接的電路。在所描繪的示例中,計算機系統(tǒng)600可被配置成生成用于連接客戶機的一個或多個遠程客戶機會話,諸如會話I到N (其中N是大于2的整數(shù))。簡言之,在本發(fā)明的示例實施例中,會話一般可包括由被配置成與計算機系統(tǒng)600的內(nèi)核614交互的多個子系統(tǒng)(例如,軟件代碼)實現(xiàn)的操作環(huán)境。例如,會話可包括實例化諸如桌面窗口之類的用戶界面的進程、跟蹤該窗口內(nèi)的鼠標(biāo)移動的子系統(tǒng)、將圖標(biāo)上的鼠標(biāo)點擊轉(zhuǎn)換成實現(xiàn)程序?qū)嵗拿畹淖酉到y(tǒng)等。會話可在例如計算機系統(tǒng)600經(jīng)由網(wǎng)絡(luò)連接從客戶機(諸如圖2的遠程客戶機計算機210)接收連接請求時,由計算機系統(tǒng)600在逐個用戶的基礎(chǔ)上由計算機系統(tǒng)600生成。一般而言,連接請求首先可由傳輸邏輯610處理,傳輸邏輯610例如可由計算機系統(tǒng)600的電路實現(xiàn)。在一些實施例中,傳輸邏輯610可包括網(wǎng)絡(luò)適配器、可被配置成接收連接消息并將其轉(zhuǎn)發(fā)給引擎612的固件和軟件。如圖6所示,在一些實施例中,傳輸邏輯610可包括每個會話的協(xié)議棧實例。一般而言,每個協(xié)議棧實例可被配置成將用戶接口輸出路由到客戶機,以及將從客戶機接收到的用戶輸入路由到與其會話相關(guān)聯(lián)的會話核心644。繼續(xù)圖6的一般性描述,在本發(fā)明的一些示例實施例中,引擎612可被配置成處理對會話的請求;確定每個會話的功能;通過為會話分配一組物理資源來生成會話;以及實例化會話的協(xié)議棧實例。在一些實施例中,引擎612可由能實現(xiàn)上述操作過程中的一部分的專門電路組件來實現(xiàn)。例如,一些示例實施例中,該電路在可包括存儲器以及配置成執(zhí)行實現(xiàn)引擎612的代碼的處理器。如圖6所描繪的,在一些情況下,引擎612可接收連接請求并確定例如許可證可用,并且可為該請求生成會話。在計算機系統(tǒng)600是包括遠程桌面能力的遠程計算機的情形中,引擎612可被配置成響應(yīng)于連接請求生成會話而不檢查許可。如圖6所示,會話管理器616可被配置成接收來自引擎612的消息,并且響應(yīng)于該消息,會話管理器616可將會話標(biāo)識符添加到表中;向該會話標(biāo)識符指派存儲器;以及在指派給該會話標(biāo)識符的存儲器中生成系統(tǒng)環(huán)境變量和子系統(tǒng)進程的實例。
如圖6所示,會話管理器616可實例化諸如運行時子系統(tǒng)640之類的環(huán)境子系統(tǒng),該子系統(tǒng)可包括諸如會話核心644之類的內(nèi)核模式部分。例如,在一實施例中,環(huán)境子系統(tǒng)被配置成將一些服務(wù)子集展示給應(yīng)用程序并向計算機操作系統(tǒng)602的內(nèi)核提供接入點。在示例實施例中,運行時子系統(tǒng)640可控制進程和線程的執(zhí)行,并且會話核心644可向內(nèi)核614的執(zhí)行程序發(fā)送請求以向線程分配存儲器并調(diào)度執(zhí)行它們的時間。在一實施例中,會話核心644可包括圖形顯示界面646 (⑶I)、安全子系統(tǒng)650和輸入子系統(tǒng)652。在這些實施例中,輸入子系統(tǒng)652可被配置成經(jīng)由與該會話相關(guān)聯(lián)的協(xié)議棧實例接收來自客戶機的用戶輸入并將該輸入傳送給合適會話的會話核心644。用戶輸入在一些實施例中可包括指示絕對和/或相對鼠標(biāo)移動命令、鼠標(biāo)坐標(biāo)、鼠標(biāo)點擊、鍵盤信號、操縱桿移動信號等的信號。例如圖標(biāo)上的鼠標(biāo)雙擊的用戶輸入可被會話核心644接收,并且輸入子系統(tǒng)652可被配置成確定有圖標(biāo)位于與該雙擊相關(guān)聯(lián)的坐標(biāo)處。輸入子系統(tǒng)652隨后可被配置成向可執(zhí)行與該圖標(biāo)相關(guān)聯(lián)的應(yīng)用的進程的運行時子系統(tǒng)640發(fā)送通知。
除了接收來自客戶機的輸入之外,還可從應(yīng)用和/或桌面接收繪制命令并由⑶1646來處理。⑶1646 —般可包括能生成圖形對象繪制命令的進程。⑶1646在該示例實施例中可被配置成將GDI646輸出傳遞給遠程顯示子系統(tǒng)654,在此命令針對附連到該會話的顯示器驅(qū)動程序被格式化。在某些示例實施例中,一個或多個物理顯示器可被附連到計算機系統(tǒng)600,例如在遠程桌面情形中。在這些示例實施例中,遠程顯示子系統(tǒng)654可被配置成鏡像由遠程計算機系統(tǒng)的顯示器驅(qū)動程序呈現(xiàn)的繪制命令、并經(jīng)由與該會話相關(guān)聯(lián)的棧實例將鏡像信息傳送給客戶機。在另一示例實施例中,遠程顯示子系統(tǒng)654可以被配置成包括可不與物理上附連到計算機系統(tǒng)600的顯示器相關(guān)聯(lián)的虛擬顯示器驅(qū)動程序,例如計算機系統(tǒng)600可無頭地(headless)運行。遠程顯示子系統(tǒng)654在該實施例中可被配置成接收針對一個或多個虛擬顯示器的繪制命令并將它們經(jīng)由與該會話相關(guān)聯(lián)的棧實例傳送給客戶機。在本發(fā)明的實施例中,遠程顯示子系統(tǒng)654可被配置成確定每個顯示器驅(qū)動程序的顯示分辨率,例如確定與虛擬顯示器相關(guān)聯(lián)的虛擬顯示器驅(qū)動程序的顯示分辨率或與物理顯示器相關(guān)聯(lián)的顯示器驅(qū)動程序的顯示分辨率;以及經(jīng)由相關(guān)聯(lián)的協(xié)議棧實例將分組路由到客戶機。在一些示例實施例中,會話管理器616可附加地實例化與該會話的會話標(biāo)識符相關(guān)聯(lián)的可被配置成處理該會話的登入和登出的登錄進程的實例。在這些示例實施例中,指示與登錄進程相關(guān)聯(lián)的圖形用戶界面的繪制命令可被傳送給客戶機,在那里,客戶機的用戶可向登錄屏幕輸入帳戶標(biāo)識符(例如用戶名/ 口令組合)、智能卡標(biāo)識符、和/或生物測定信息。該信息可被傳送給計算機系統(tǒng)600并被路由至引擎612以及會話核心644的安全子系統(tǒng)650。例如,在某些示例實施例中,引擎612可被配置成確定用戶帳戶是否與許可證相關(guān)聯(lián);并且安全子系統(tǒng)650可被配置成生成該會話的安全令牌。如圖6所述,遠程服務(wù)器計算機可向連接遠程客戶機計算機提供多個遠程桌面會話。遠程桌面會話可與遠程客戶機計算機所請求的一個或多個應(yīng)用相關(guān)聯(lián)。另外地并且如圖6所描述的,遠程服務(wù)器計算機可處理客戶機桌面的圖形數(shù)據(jù)表示,諸如用戶界面屏幕、用戶輸入命令等。此外,遠程服務(wù)器計算機可渲染、捕捉、壓縮圖形數(shù)據(jù)并將圖形數(shù)據(jù)傳送到客戶機遠程計算機。渲染指的是轉(zhuǎn)換由遠程桌面會話內(nèi)運行的應(yīng)用所作出的原始顯示調(diào)用(諸如旋轉(zhuǎn)、翻轉(zhuǎn)和繪制)的過程。捕捉指的是取所渲染的應(yīng)用內(nèi)容(諸如屏幕上位圖或幀改變)以及智能地捕捉應(yīng)用內(nèi)容的先前渲染上的改變的過程。壓縮(也被稱為編碼)指的是向所連接的遠程客戶機計算機中的每一個最優(yōu)地且公平地遞送圖形資源的過程。網(wǎng)絡(luò)條件的質(zhì)量和目標(biāo)遠程客戶機計算機確定用于最優(yōu)地遞送所捕捉的內(nèi)容的壓縮/編碼的類型。如本文中下面將描述的,在各個實施例中,遠程服務(wù)器計算機可包括計算服務(wù)器和圖形服務(wù)器。計算服務(wù)器可被配置成從遠程客戶機計算機接收圖形數(shù)據(jù),處理該圖形數(shù)據(jù),并且將經(jīng)處理的圖形數(shù)據(jù)發(fā)送給圖形服務(wù)器。圖形服務(wù)器可被配置成渲染、捕捉從計算服務(wù)器接收到的數(shù)據(jù)、并且將其壓縮成圖形輸出數(shù)據(jù)。圖形服務(wù)器還可被配置成直接將圖形輸出數(shù)據(jù)傳送給遠程客戶機計算機,而不是將圖形輸出數(shù)據(jù)發(fā)送給計算服務(wù)器并使用計算服務(wù)器將圖形輸出數(shù)據(jù)傳送給遠程客戶機服務(wù)器。圖7描繪了包括計算服務(wù)器710和圖形服務(wù)器720的遠程服務(wù)器計算機700的示例實施例。遠程服務(wù)器計算機700的各實施例可執(zhí)行參考圖I的計算機100、圖2的遠程服務(wù)器計算機220、圖3的遠程服務(wù)器計算機320、圖4和5的計算機系統(tǒng)400、以及圖6的計算機系統(tǒng)600所描述的全部或部分組件。 計算服務(wù)器710的各實施例可執(zhí)行參考圖I的計算機100、圖2的遠程服務(wù)器計算機220、圖4和5的計算機系統(tǒng)400或虛擬機440、以及圖6的計算機系統(tǒng)600所描述的全部或部分組件。計算服務(wù)器710沒有足夠的GPU資源或沒有GPU資源。在又一實施例中,計算服務(wù)器710可以是被適當(dāng)?shù)嘏渲靡蕴峁┫率鲇嬎阗Y源的標(biāo)準(zhǔn)服務(wù)器計算機。在另一實施例中,計算服務(wù)器710可以是針對特定功能來配置的計算設(shè)備。例如,計算服務(wù)器可以只是單個類型的處理單元以及小量的高速緩存存儲器。圖形服務(wù)器720可被配置成提供諸如渲染、捕捉和壓縮操作之類的圖形操作的資源。圖形服務(wù)器還可被配置有多個GPU資源。在一個實施例中,圖形服務(wù)器720可執(zhí)行參考圖I的計算機100所描述的部分或全部組件。在又一實施例中,圖形服務(wù)器可被主存在諸如圖4的主機404之類的主機分區(qū)上。計算服務(wù)器710和圖形服務(wù)器720可經(jīng)由網(wǎng)絡(luò)(光纖通道、LAN、無線、以太網(wǎng)等)來連接。在諸如圖4的環(huán)境之類的虛擬化環(huán)境中,圖形服務(wù)器720和計算服務(wù)器710可使用虛擬機總線來連接。計算服務(wù)器710可運行一個或多個應(yīng)用712。在一個方面,應(yīng)用可與圖形設(shè)備驅(qū)動程序714相關(guān)聯(lián)。圖形設(shè)備驅(qū)動程序714、應(yīng)用712、和/或計算服務(wù)器710可與圖形服務(wù)器720上的圖形服務(wù)器管理器740相關(guān)聯(lián)。圖形設(shè)備驅(qū)動程序714、應(yīng)用712、和/或計算服務(wù)器710可以能夠?qū)⒅噶詈蛿?shù)據(jù)發(fā)送到圖形服務(wù)器管理器740以及從圖形服務(wù)器管理器740接收指令和數(shù)據(jù)。作為一個示例,圖形設(shè)備驅(qū)動程序714、應(yīng)用712、和/或計算服務(wù)器710可以能夠?qū)⒌谝粩?shù)據(jù)發(fā)送到圖形服務(wù)器管理器740,該第一數(shù)據(jù)指示對GPU資源的請求。圖形服務(wù)器管理器740可將第二數(shù)據(jù)發(fā)送到圖形設(shè)備驅(qū)動程序714、應(yīng)用712、和/或計算服務(wù)器710,該第二數(shù)據(jù)指示對來自圖形服務(wù)器720的GPU指令進行路由。圖形服務(wù)器管理器740可管理圖形服務(wù)器720。圖形服務(wù)器管理器740可以能夠?qū)⒅噶詈蛿?shù)據(jù)發(fā)送到圖形服務(wù)器720的各組件,并且可接收作為來自圖形服務(wù)器720的各組件的響應(yīng)的信息和數(shù)據(jù)。圖形服務(wù)器720可專用于GPU主存和處理。圖形服務(wù)器720可包括圖形服務(wù)器管理器740、代理圖形應(yīng)用722、內(nèi)核726、和GPU硬件730。代理圖形應(yīng)用722可與第一圖形設(shè)備驅(qū)動程序724相關(guān)聯(lián),而內(nèi)核726可與第二圖形設(shè)備驅(qū)動程序728相關(guān)聯(lián)。圖形設(shè)備驅(qū)動程序724和728可轉(zhuǎn)換、接收并且發(fā)送與圖形處理任務(wù)相關(guān)聯(lián)的數(shù)據(jù)和信息。在一個實施例中,圖形設(shè)備驅(qū)動程序724和728被選擇以便在特定GPU硬件730以及圖形服務(wù)器管理器740上的應(yīng)用、硬件、以及操作系統(tǒng)、計算服務(wù)器710、和/或遠程客戶機計算機之間進行轉(zhuǎn)換。在圖7的實施例中,與圖形處理任務(wù)相關(guān)聯(lián)的指令可流過一系列層,從應(yīng)用712到圖形服務(wù)器管理器740、到代理圖形應(yīng)用722、到內(nèi)核726、到硬件730。經(jīng)處理的信息可反向跟隨同一路徑。圖8示出信息路徑的替換實施例。圖形服務(wù)器管理器850從計算服務(wù)器710、應(yīng)用720、和/或圖形設(shè)備驅(qū)動程序714接收GPU資源,并且將路由指令、狀態(tài)指令等路由到計算服務(wù)器710和圖形服務(wù)器720。之后,GPU任務(wù)、經(jīng)處理的信息、和指令可在圖形服務(wù)器720和計算服務(wù)器710之間直接發(fā)送。圖形服務(wù)器管理器850可監(jiān)視該交互,并且可執(zhí)行與分配GPU上的資源(諸如GPU硬件730)有關(guān)的其他任務(wù)。圖9描繪了多個圖形服務(wù)器720 (A-N),這些圖形服務(wù)器可在與單組GPU硬件730相關(guān)聯(lián)的資源不足時執(zhí)行GPU處理任務(wù)。該實施例還可在圖形服務(wù)器管理器850將一部分GPU處理任務(wù)從第一圖形服務(wù)器720A遷移到第二圖形服務(wù)器720B時使用。在這樣的實施例中,圖形服務(wù)器管理器850可用作將第一圖形服務(wù)器720A的狀態(tài)復(fù)制到第二圖形服務(wù)器 720B。圖10描繪了在虛擬化環(huán)境或虛擬桌面基礎(chǔ)結(jié)構(gòu)(VDI)中實現(xiàn)的計算服務(wù)器1010和圖形服務(wù)器1020的遠程服務(wù)器計算機1000的示例實施例。計算服務(wù)器1010和圖形服務(wù)器1020可被配置成實現(xiàn)圖7-9的計算服務(wù)器710和圖形服務(wù)器720。遠程服務(wù)器計算機1000的各實施例可執(zhí)行參考圖I的計算機100、圖2的遠程服務(wù)器計算機220、圖3的遠程服務(wù)器系統(tǒng)350、圖4和5的計算機系統(tǒng)400、以及圖6的計算機系統(tǒng)600所描述的全部或部分組件。圖10描繪了 VDI的基于主機的圖形虛擬化。這樣的體系結(jié)構(gòu)的可以例如使用Microsoft RemoteFX 平臺來實現(xiàn)。虛擬機1011 (A-N)可被稱為虛擬桌面。體系結(jié)構(gòu)使用虛擬圖形處理單元(vGPU) 1016 (A-N)來在主存多用戶環(huán)境中最優(yōu)地共享GPU資源,該虛擬圖形處理單元(vGPU) 1016 (A-N)抽象客操作系統(tǒng)(OS) 1014 (A-N)與物理GPU112之間的關(guān)系。系統(tǒng)管理程序微內(nèi)核1002可被配置成實現(xiàn)多個主機分區(qū)和客機分區(qū)。在又一實施例中,系統(tǒng)管理程序微內(nèi)核1002可集成遠程桌面會話組件(未示出)。每一主機分區(qū)可被配置成可訪問遠程計算機服務(wù)器1000的物理GPU資源的圖形服務(wù)器1020。每一主機分區(qū)還可包括用于圖形渲染、捕捉和編碼的管理組件。每一主機分區(qū)還可包括提供到物理GPU112和到基于主機的編碼器的接口,諸如ASICS (未示出)。設(shè)備驅(qū)動程序1026可包括GPU、CPU和編碼器專用驅(qū)動程序。每一客機分區(qū)可被配置成可訪問vGPU資源的計算服務(wù)器1010。每一客機分區(qū)可實現(xiàn)多個已連接的遠程客戶機計算機(未示出)的一個或多個虛擬桌面或會話。每一客機分區(qū)和遠程客戶機計算機之間的連接可包括遠程桌面會話(諸如RDP7. 1),類似于圖2-3中示出的會話。VGPU1016可提供安裝在每一虛擬機1011中的虛擬圖形適配器。vGPU1016可利用一個或多個GPU112來提取對多個虛擬機的圖形處理。當(dāng)運行在虛擬機1011中的應(yīng)用調(diào)用了諸如DirectX 或GDI操作之類的圖形操作時,vGPU1016可使用客機分區(qū)1010與主機分區(qū)1020之間的通信信道從GPU112獲取資源。通信信道可包括虛擬機總線或TCP/IP信道。虛擬機總線可被配置在系統(tǒng)管理程序微內(nèi)核1002內(nèi)用于存儲器共享和對vGPU專用的其他功能。這樣的虛擬機總線配置可直接向系統(tǒng)管理程序微內(nèi)核1002提供集成機制,其中對圖形相關(guān)設(shè)備的所有資源請求可被傳送。VGPU1016還可向虛擬機1011提供服務(wù)質(zhì)量機制。服務(wù)質(zhì)量機制可基于最高效地使用GPU112的負載平衡機制向虛擬機1011公平地遞送GPU112。主機分區(qū)1020可被配置成向虛擬機1011提供遠程桌面虛擬圖形管理(RDVGM)。RDVGM可管理分配給每一虛擬機客操作系統(tǒng)(OS) 1014的遠程計算機服務(wù)器1000的物理資源和VGPU1016資源之間的資源分配和過程控制。RDVGM功能可包括管理該渲染、捕捉和壓縮(RCC)過程,通過VGPU1016向虛擬機1011分配GPU112資源,向虛擬機1011分配資源策略,以及跨多個虛擬機IOll(A-N)對GPU112資源進行負載平衡。RDVGM還可在引導(dǎo)時向虛擬機1011 (A-N)分配適當(dāng)?shù)腉PUl 12。
RDVGM可集成RCC引擎1022,RCC處理對圖形數(shù)據(jù)的渲染、捕捉和壓縮。RCC可從每一虛擬機1011接收圖形請求作為輸出,并且將這些請求轉(zhuǎn)換成主機分區(qū)1020上例如符合DirectX 的命令。虛擬機總線可以為來自運行在虛擬機1011 (A-N)中的主存應(yīng)用1012 (A-N)對物理GPU112資源的圖形請求提供高速通信底板。對于符合DirectX 的命令,應(yīng)用1012 (A-N)需要支持DirectX 9或之后版本,而GPUl 12需要支持DirectX 10或之后版本。如前所述,渲染指的是通過vGPU1016(A_N)來轉(zhuǎn)換由應(yīng)用1012(A_N)作出的原始顯示調(diào)用(諸如旋轉(zhuǎn)、翻轉(zhuǎn)和繪制)、從而遵循對GPU112的請求并且由此渲染應(yīng)用內(nèi)容的過程。渲染可基于標(biāo)準(zhǔn)DirectX 句法。捕捉指的是取所渲染的應(yīng)用內(nèi)容(諸如屏幕上位圖或幀變化)、并且智能地捕捉先前渲染該應(yīng)用內(nèi)容時的改變的過程。捕捉的次要功能是分配捕捉質(zhì)量的服務(wù)質(zhì)量策略和編碼級別。壓縮或編碼指的是通過VGPU1016經(jīng)由包括例如遠程桌面會話協(xié)議在內(nèi)的通信信道來向遠程客戶機計算機最優(yōu)地且公平地遞送GPU112資源的過程。通信信道的質(zhì)量和條件以及目標(biāo)遠程客戶機計算機的類型可確定被用于最優(yōu)地遞送捕捉到的內(nèi)容的壓縮/編碼類型。當(dāng)運行在VMlOll內(nèi)的應(yīng)用1012發(fā)出諸如繪制、調(diào)整大小、和旋轉(zhuǎn)之類的顯示調(diào)用時,VGPU1016可代理所有的渲染請求。虛擬路徑對于客操作系統(tǒng)1014可以是透明的。如先前解釋的,圖形處理命令可由主機分區(qū)1020截取。該截取可在軟件棧中的低級處完成。圖形隨后可在GPU112上被呈現(xiàn)到單個幀緩沖器中,該幀緩沖器充當(dāng)圖形更新的臨時保持站。該幀緩沖器可表示終端用戶的虛擬化顯示;終端用戶是使用遠程客戶機計算機連接到虛擬機1011的已連接用戶。富圖形應(yīng)用、3D插件、以及其他圖形調(diào)用和命令可以完全如同應(yīng)用正在包含GPU的專用工作站上運行那樣運行。主機分區(qū)1020可迅速且高效地捕捉所渲染的內(nèi)容。內(nèi)容內(nèi)的每一幀可被分成可管理的單元。幀內(nèi)的變化區(qū)域可通過由RCC引擎1022提供的優(yōu)化能力來處理。通過這一捕捉機制,各個幀可被截取用于顯示變化。只有幀內(nèi)已經(jīng)變化的區(qū)域被捕捉用于編碼。主機分區(qū)1020還可壓縮捕捉到的內(nèi)容。壓縮過程可通過管理工具來控制,通過給予某些虛擬機較高或較低的優(yōu)先級來控制,或通過變化區(qū)域在捕捉到的幀內(nèi)的大小來動態(tài)地控制。另外,在使用遠程桌面會話(諸如RDP7. I)的實施例中,遠程桌面會話可基于網(wǎng)絡(luò)使用和公平性來提供幀速率優(yōu)化。RCC引擎1022可伸展至遠程桌面會話監(jiān)聽器過程,以評估遠程客戶機計算機的狀態(tài),包括遠程客戶機計算機的解碼能力。可按動態(tài)地適應(yīng)網(wǎng)絡(luò)條件和遠程客戶機計算機消耗幀緩沖器變化的能力這一幀速率來將該幀緩沖器變化發(fā)送到遠程客戶機計算機。經(jīng)編碼的輸出可在遠程桌面會話內(nèi)被隧穿,且可被發(fā)出到遠程客戶機計算機。圖7-10中所示的用于實現(xiàn)包括一個或多個計算服務(wù)器和一個或多個圖形服務(wù)器的遠程服務(wù)器計算機的所有體系結(jié)構(gòu)變體是示例性的實現(xiàn)。本文沒有任何表述應(yīng)被解釋為將本公開限制于任何特定的實現(xiàn)方面。在遠程計算環(huán)境中,遠程客戶機計算機通常僅與計算服務(wù)器通信,而與圖形服務(wù)器不具有直接連接。與計算服務(wù)器的通信可包括使用類似于圖3中所示的重定向器和/或代理。計算服務(wù)器通常管理與遠程客戶機計算機的連接。例如,計算服務(wù)器的客操作系統(tǒng)可被配置來認(rèn)證該客戶機。一旦完成認(rèn)證,則遠程客戶機計算機與計算服務(wù)器之間的數(shù)據(jù)傳 送可被啟動。由此,來自遠程客戶機計算機的圖形請求可由計算服務(wù)器接收。計算服務(wù)器將圖形請求處理成圖形調(diào)用和命令,并且將這些調(diào)用和命令傳輸?shù)綀D形服務(wù)器以供渲染、捕捉和壓縮。由于圖形服務(wù)器與遠程客戶機計算機不具有直接通信路徑,因此來自圖形服務(wù)器的圖形輸出可被發(fā)送到計算服務(wù)器。計算服務(wù)器可打包圖形輸出并將其傳輸?shù)竭h程客戶機計算機以供向終端用戶顯示。將以上描述應(yīng)用在圖10的虛擬環(huán)境中,來自遠程客戶機計算機的圖形請求可經(jīng)由遠程服務(wù)器計算機1000的物理NIC114、通過客機分區(qū)1010的虛擬NIC (未示出)來傳輸?shù)綉?yīng)用1012。圖形請求隨后可被處理并被路由到主機分區(qū)1020以供渲染、捕捉和壓縮。一旦輸出數(shù)據(jù)經(jīng)渲染、捕捉、和壓縮,就可使用VGPU1016將輸出數(shù)據(jù)從主機分區(qū)1020路由回計算服務(wù)器1010。為了將輸出數(shù)據(jù)從客機分區(qū)1010傳輸?shù)竭h程客戶機計算機,客機分區(qū)1010可使用虛擬NIC來打包和傳輸該數(shù)據(jù)。虛擬NIC可將輸出數(shù)據(jù)重定向至物理NIC114,物理NIC114經(jīng)由網(wǎng)絡(luò)將該數(shù)據(jù)傳輸?shù)竭h程客戶機計算機。如所描述的,遠程服務(wù)器計算機1000的客機分區(qū)1010、主機分區(qū)1020、以及底層資源之間的反復(fù)數(shù)據(jù)遍歷可能需要密集的操作,并消耗大量存儲器和CPU資源,這可增加對遠程客戶機計算機的數(shù)據(jù)遞送延遲。圖11示出了消除遠程服務(wù)器計算機1100的資源之間的反復(fù)數(shù)據(jù)遍歷的替代體系結(jié)構(gòu)。圖11描繪了在計算服務(wù)器1110中保留管理與遠程客戶機計算機1130的連接以及使圖形服務(wù)器1120能夠?qū)D形輸出數(shù)據(jù)直接流傳輸?shù)竭h程客戶機計算機1130的體系結(jié)構(gòu)。遠程服務(wù)器計算機1100的各實施例可執(zhí)行參考圖7-9的遠程服務(wù)器計算機700和圖10的遠程服務(wù)器計算機1000所描述的部分或全部組件。遠程客戶機計算機1130的各實施例可執(zhí)行參考圖I的計算機100、圖2的遠程客戶機計算機210、和圖3的遠程客戶機計算機310所描述的部分或全部組件。遠程客戶機計算機1130可通過網(wǎng)絡(luò)(未示出)啟動與計算服務(wù)器1110的連接1105。連接1105可基于TCPI/IP并且可包括遠程桌面會話(諸如RDP7. I)。計算服務(wù)器1110可認(rèn)證與遠程客戶機計算機1130的連接1105。認(rèn)證方法可要求在計算服務(wù)器1110中設(shè)立遠程客戶機計算機1130的虛擬桌面或會話之前認(rèn)證遠程客戶機計算機1130。認(rèn)證方法可以是例如RDP7. I中可用的網(wǎng)絡(luò)級認(rèn)證。另外,計算服務(wù)器1110可獲取諸如遠程客戶機計算機1130的IP地址之類的地址。
一旦完成認(rèn)證并在遠程客戶機計算機1130與計算服務(wù)器1110之間建立連接1105,計算服務(wù)器1110就可為遠程客戶機計算機1130啟動在計算服務(wù)器1110內(nèi)運行的遠程桌面會話、虛擬機、虛擬機內(nèi)的桌面會話、或其組合。這樣的虛擬機或桌面會話可具體化圖2-10的技術(shù)。另外,計算服務(wù)器1110可初始化圖形服務(wù)器1120。初始化可包括,例如在圖形服務(wù)器1120處于非活動狀態(tài)的情況下恢復(fù)或喚醒該圖形服務(wù)器,以及在計算服務(wù)器1110與圖形服務(wù)器1120之間建立連接1115。連接1115可基于TCP/IP,或可使用虛擬環(huán)境中的虛擬機總線。計算服務(wù)器1110還可向圖形服務(wù)器1120提供遠程客戶機計算機1130地址,并且指示圖形服務(wù)器1120準(zhǔn)備源自遠程客戶機計算機1130地址的連接請求。計算服務(wù)器還可獲取圖形服務(wù)器1120的地址(諸如IP地址),并且可向遠程客戶機計算機1130提供圖形服務(wù)器1120地址。一旦圖形服務(wù)器1120被初始化且遠程客戶機計算機1130獲取了圖形服務(wù)器1120地址,客戶機計算機1130就可經(jīng)由網(wǎng)絡(luò)(未示出)啟動與圖形服務(wù)器1120的連接1125。連接1125可以是基于TCP/IP。連接1125還可包括遠程桌面會話,諸如RDP7. I。在又一實施例中,如果連接1105和連接1125包括遠程桌面會話,則遠程桌面會話在連接1105和連接1125上可以是分開的或相同的。 一旦連接1105、1115和1125被建立,則遠程客戶機計算機1130可向計算服務(wù)器1110發(fā)送終端用戶圖形輸入,諸如鍵盤或鼠標(biāo)輸入。計算機服務(wù)器可使用圖2、6-10的技術(shù)來處理圖形輸入。在一個實施例中,計算服務(wù)器1110可將終端用戶對圖標(biāo)的鍵盤敲擊或鼠標(biāo)點擊轉(zhuǎn)換成實現(xiàn)應(yīng)用實例的顯示命令以及轉(zhuǎn)換成諸如旋轉(zhuǎn)、翻轉(zhuǎn)、調(diào)整大小和繪制之類的顯示調(diào)用。計算服務(wù)器1110可向圖形服務(wù)器1120發(fā)送顯示命令和調(diào)用數(shù)據(jù)以供渲染、捕捉和壓縮。圖形服務(wù)器1120可渲染、捕捉和壓縮顯示命令和調(diào)用數(shù)據(jù),并且將輸出編碼成輸出圖形數(shù)據(jù)。圖形服務(wù)器1120可經(jīng)由連接1125直接向遠程客戶機計算機1130傳輸輸出圖形數(shù)據(jù),而不是向計算服務(wù)器1110發(fā)送輸出圖形數(shù)據(jù)。遠程客戶機計算機1130可解碼該輸出圖形數(shù)據(jù)以便向終端用戶顯示。在其中諸如圖10的遠程服務(wù)器計算機1000之類的遠程服務(wù)器計算機1100被虛擬化的一個實施例中,可將計算服務(wù)器1110實現(xiàn)在客機分區(qū)上,而將圖形服務(wù)器1120實現(xiàn)在主機分區(qū)上。每一分區(qū)可被配置成具有諸如IP地址之類的地址??蜋C分區(qū)或計算機服務(wù)器1110的地址可與虛擬NIC相關(guān)聯(lián)。主機分區(qū)或圖形服務(wù)器1120的地址可與虛擬NIC相關(guān)聯(lián)或與遠程服務(wù)器計算機1100的底層硬件的物理NIC114相關(guān)聯(lián)。計算服務(wù)器1110可向遠程客戶機計算機1130提供虛擬機或其中運行的會話。計算服務(wù)器1110與圖形服務(wù)器1120之間的連接1115可包括分區(qū)內(nèi)通信信道,諸如虛擬機總線。遠程客戶機計算機1130處諸如終端用戶輸入之類的圖形數(shù)據(jù)可經(jīng)由連接1105從遠程客戶機計算機1130被發(fā)送到與計算機服務(wù)器1110虛擬NIC相關(guān)聯(lián)的計算服務(wù)器1110地址。計算服務(wù)器1110可將接收到的圖形數(shù)據(jù)處理成上述顯示命令和調(diào)用數(shù)據(jù)。計算服務(wù)器1110可向圖形服務(wù)器1120發(fā)送經(jīng)處理的圖形數(shù)據(jù)以供渲染、捕捉和壓縮。在一個實施例中,發(fā)送經(jīng)處理的數(shù)據(jù)可包括將經(jīng)處理的數(shù)據(jù)從分配給計算服務(wù)器1110的存儲器空間傳輸?shù)椒峙浣o圖形服務(wù)器1120的存儲器空間。在另一實施例中,遠程服務(wù)器計算機1100內(nèi)的分區(qū)可共享存儲器空間。在這樣的實施例中,將數(shù)據(jù)從計算服務(wù)器1110發(fā)送到圖形服務(wù)器1120可包括路由包含經(jīng)處理的數(shù)據(jù)在內(nèi)的物理空間地址,而不是在兩個物理空間之間復(fù)制經(jīng)處理的數(shù)據(jù)。例如,計算服務(wù)器1110和圖形服務(wù)器1120可利用虛擬機總線內(nèi)的共享存儲器空間以便路由經(jīng)處理的數(shù)據(jù)。如上所述,圖形服務(wù)器1120可渲染、捕捉和壓縮經(jīng)處理的數(shù)據(jù)。圖形服務(wù)器1120可將經(jīng)渲染、捕捉和壓縮的數(shù)據(jù)編碼成輸出數(shù)據(jù),并且可使用圖形服務(wù)器NIC將輸出數(shù)據(jù)傳輸?shù)脚c遠程客戶機計算機1130相關(guān)聯(lián)的地址。遠程客戶機計算機1130可解碼接收到的輸出數(shù)據(jù)以便向終端用戶顯示。圖12在包括多個遠程客戶機計算機1130(A_N)、多個計算服務(wù)器IllO(A-N)以及多個圖形服務(wù)器1120 (A-N)的環(huán)境中描繪了圖11的體系結(jié)構(gòu)的實施例。重要的是注意到,遠程客戶機計算機、計算服務(wù)器、以及圖形服務(wù)器的數(shù)量不需要相等。換言之,遠程客戶機計算機1130 (A-N)和計算服務(wù)器IllO(A-N)、計算服務(wù)器IllO(A-N)和圖形服務(wù)器1120 (A-N)、以及圖形服務(wù)器1120 (A-N)和遠程客戶機計算機1130 (A-N)之間的關(guān)系可以是 一對一、一對多、或其組合。遠程服務(wù)器計算機1200的各實施例可執(zhí)行參考圖2的遠程服務(wù)器計算機220、圖3的遠程服務(wù)器計算機320、圖7-10的遠程服務(wù)器計算機700、圖10的遠程服務(wù)器計算機1000、以及圖11的遠程服務(wù)器計算機1100所描述的全部或部分組件。在一個實施例中,遠程服務(wù)器計算機1200可包括多個物理計算系統(tǒng)。重定向器和代理程序1240可執(zhí)行參考圖3的重定向器330和代理程序340所描述的部分或全部組件。圖形服務(wù)器管理器1250可執(zhí)行參考圖7的圖形服務(wù)器管理器740和圖8-9的圖形服務(wù)器管理器850所描述的部分或全部組件。另外,重定向器和代理程序1240可與計算服務(wù)器IllO(A-N)集成。類似地,圖形服務(wù)器管理器1250可與圖形服務(wù)器1120 (A-N)集成。在另一實施例中,遠程服務(wù)器計算機可被虛擬化,并且可執(zhí)行參考圖4-5的計算機系統(tǒng)400、圖10的遠程服務(wù)器計算機1000、以及圖11的遠程服務(wù)器計算機1100所描述的部分或全部組件。在這樣的實施例中,計算服務(wù)器IllO(A-N)可在一個或多個客機分區(qū)上實現(xiàn),而圖形服務(wù)器1120 (A-B)可在一個或多個主機分區(qū)上實現(xiàn)。重定向器和代理程序1240以及圖形服務(wù)器管理器1250也可使用上述技術(shù)在一個或多個客機分區(qū)和/或一個或多個主機分區(qū)上被虛擬化。在又一實施例中,遠程服務(wù)器計算機1200可以是虛擬機和物理機的組合。例如,計算服務(wù)器IllO(A-N)和圖形服務(wù)器1120 (A-N)可以是虛擬化的,而重定向器和代理程序1204以及圖形服務(wù)器管理器1250可以是物理計算設(shè)備。重定向器和代理程序1240可用于在遠程客戶機計算機1130與計算服務(wù)器1110之間建立第一連接。例如,重定向器和代理程序1240可向遠程客戶機計算機1130分配來自多個計算服務(wù)器IllO(A-N)的計算服務(wù)器1110和/或其中的會話。由此,重定向器和代理程序1240可提供關(guān)于計算服務(wù)器IllO(A-N)的可用性的負載平衡技術(shù)。一旦分配完成,則所分配的計算服務(wù)器1110可認(rèn)證遠程客戶機計算機1130。遠程客戶機計算機1130和所分配的計算服務(wù)器1110可建立如上所述的第一連接。例如,第一連接可包括圖11的連接1105。所分配的計算服務(wù)器1110還可獲取遠程客戶機計算機1130的地址。圖形服務(wù)器管理器1250可用于在所分配的計算服務(wù)器1110與來自多個圖形服務(wù)器1120(A-N)的圖形服務(wù)器1120之間建立第二連接。圖形服務(wù)器管理器1250可執(zhí)行負載平衡計算,并且可確定圖形服務(wù)器1120 (A-N)的可用性。因此,圖形服務(wù)器管理器1250隨后可向與所分配的計算機服務(wù)器1110的連接分配圖形服務(wù)器1120。一旦分配完成,則可建立第二連接。例如,第二連接可包括圖11的連接1115。所分配的計算服務(wù)器1110可包括向圖形服務(wù)器1120提供遠程客戶機計算機1130的地址,并且可獲取所分配的圖形服務(wù)器1120地址并將其提供給遠程客戶機計算機1130。遠程客戶機計算機1130和所分配的圖形服務(wù)器1120可使用所獲取的遠程客戶機1130的和所分配的圖形服務(wù)器1120的地址來建立第三連接。第三連接可包括圖11的連接1125。此外,負載平衡計算可在圖12的體系結(jié)構(gòu)上執(zhí)行。例如,在對圖形服務(wù)器1120 (A-N)進行負載平衡的情況下,當(dāng)所分配的圖形服務(wù)器1120不再能夠適當(dāng)?shù)貫檫h程客戶機計算機1130提供服務(wù)時,計算服務(wù)器1110可與可用圖形服務(wù)器1120建立新連接,并且指示遠程客戶機計算機1130與可用圖形服務(wù)器1120建立對應(yīng)的新連接。遠程客戶機計算機1130隨后可無縫地轉(zhuǎn)移到可用圖形服務(wù)器1120。另外,在對計算服務(wù)器IllO(A-N)進行負載平衡的情況下,當(dāng)所分配的計算服務(wù)器1110不再能夠適當(dāng)?shù)貫檫h程客戶機計算機1130提供服務(wù)時,可在遠程客戶機計算機1130與可用計算服務(wù)器1120之間以及可用計算 服務(wù)器1110與已分配的圖形服務(wù)器1120之間建立新連接,而遠程客戶機計算機1130與已分配的圖形服務(wù)器1120之間的連接可保持不變。諸如虛擬機實時遷移之類的技術(shù)可將工作負載從一個計算服務(wù)器1110無縫地轉(zhuǎn)移到另一個計算服務(wù)器,而圖形服務(wù)器1120的工作負載可保持不變。在一個實施例中,各技術(shù)可用于使一個或多個遠程客戶機計算機1130能夠從各個圖形服務(wù)器1120接受顯示流或圖形輸出數(shù)據(jù)。例如,遠程客戶機計算機1130A可獲取來自其他遠程客戶機計算機1130 (B-N)的準(zhǔn)許來查看與其他遠程客戶機計算機1130 (B-N)相關(guān)聯(lián)的終端用戶顯示。準(zhǔn)許可包括例如,分配給其他遠程客戶機計算機1130 (B-N)中的每一個的各個圖形服務(wù)器1120的地址。另外,準(zhǔn)許可包括其他遠程客戶機計算機1130 (B-N)的地址,分配給每一其他遠程客戶機計算機1130 (B-N)的計算服務(wù)器1110的地址,對應(yīng)的會話ID,用戶名,計算服務(wù)器1110和圖形服務(wù)器1120的名稱,每一計算服務(wù)器1110中的活動會話數(shù)量等。遠程客戶機計算機1130A可使用該準(zhǔn)許來與分配給每一其他遠程客戶機計算機1130 (B-N)的圖形服務(wù)器1120建立連接。連接可包括圖11的連接1125。一旦連接被建立,各個圖形服務(wù)器1120就可將來自其他遠程客戶機計算機1130 (B-N)的圖形數(shù)據(jù)輸出傳輸?shù)竭h程客戶機計算機1130A。遠程客戶機計算機1130A可解碼從各個圖形服務(wù)器1120接收到的圖形輸出數(shù)據(jù),并且可向終端用戶顯示經(jīng)解碼的數(shù)據(jù)。例如,遠程客戶機計算機1130A可以按平鋪方式來顯示經(jīng)解碼的數(shù)據(jù),或者可以允許終端用戶可翻過與其他遠程客戶機計算機1130 (B-N)相關(guān)聯(lián)的屏幕中的每一個。此外,遠程客戶機計算機1130A可顯示該準(zhǔn)許中可用的其他信息,諸如用戶名、對應(yīng)的計算服務(wù)器1110和圖形服務(wù)器1120的名稱等。在另一實施例中,傳輸與遠程客戶機計算機1130Φ-Ν)對應(yīng)的各個圖形輸出數(shù)據(jù)的圖形服務(wù)器1120可被配置成也向另一遠程客戶機計算機1130A傳輸與對應(yīng)的遠程客戶機計算機1130 (B-N)有關(guān)的各個圖形輸出數(shù)據(jù)及其他信息。由此,遠程客戶機計算機1130A可顯示與遠程客戶機計算機1130 (B-N)有關(guān)的屏幕及信息。圖13描繪了用于處理要傳送到客戶機的圖形數(shù)據(jù)的示例性操作過程,該過程包括操作1300、1310、1320、1330、1340、1350和1360。操作1300開始該操作過程,且操作1310示出在遠程客戶機與計算服務(wù)器之間建立第一連接。第一連接可包括圖11的連接1105。操作1320示出在計算服務(wù)器與圖形服務(wù)器之間建立第二連接。第二連接可包括圖11的連接1115。操作1330示出在遠程客戶機與圖形服務(wù)器之間建立第三連接。第三連接可包括圖11的連接1125。操作1340示出由計算服務(wù)器經(jīng)由第一連接從遠程客戶機接收圖形數(shù)據(jù)。接收到的圖形數(shù)據(jù)可包括例如用戶圖形輸入,諸如與遠程客戶機相關(guān)聯(lián)的鍵盤敲擊或鼠標(biāo)點擊。操作1350示出了處理接收到的圖形數(shù)據(jù),并且經(jīng)由第二連接向圖形服務(wù)器發(fā)送經(jīng)處理的圖形數(shù)據(jù)。對接收到的圖形數(shù)據(jù)的處理可包括計算服務(wù)器將接收到的圖形數(shù)據(jù)轉(zhuǎn)換成顯示命令和調(diào)用。操作1360示出了渲染、捕捉、壓縮該經(jīng)處理的圖形數(shù)據(jù),并經(jīng)由第三連接將處理后的圖形數(shù)據(jù)傳輸?shù)竭h程客戶機。圖14描繪了如上所述用于處理傳送到客戶機計算機的圖形數(shù)據(jù)的示例性系統(tǒng)。系統(tǒng)1400包括處理器1410和存儲器1420。在一實施例中,處理器1410可被實現(xiàn)成圖I中的邏輯處理單元102,而存儲器1420可被實現(xiàn)成圖I中的系統(tǒng)存儲器22的組件中的某些或全部。存儲器1420進一步包括被配置成使系統(tǒng)處理要傳送到遠程客戶機的圖形數(shù)據(jù)的計算機指令???422示出在遠程客戶機與計算服務(wù)器之間建立第一連接???424示出在計算服務(wù)器與圖形服務(wù)器之間建立第二連接???426示出在遠程客戶機與圖形服務(wù)器 之間建立第三連接???428示出由計算服務(wù)器經(jīng)由第一連接從遠程客戶機接收圖形數(shù)據(jù)。框1430示出處理接收到的圖形數(shù)據(jù),并且經(jīng)由第二連接向圖形服務(wù)器發(fā)送經(jīng)處理的圖形數(shù)據(jù)。框1432示出渲染、捕捉、壓縮該經(jīng)處理的圖形數(shù)據(jù),并經(jīng)由第三連接將處理后的圖形數(shù)據(jù)傳輸?shù)竭h程客戶機。上文所提及的方面中的任何一個方面都可以以方法、系統(tǒng)、計算機可讀介質(zhì)或任何類型的產(chǎn)品來實現(xiàn)。上述詳細描述通過示例和/或操作圖闡明了系統(tǒng)和/或過程的各種實施例。就這些框圖和/或示例包含一個或多個功能和/或操作而言,本領(lǐng)域技術(shù)人員將理解,這些框圖或示例中的每一功能和/或操作都可由各種各樣的硬件、軟件、固件、或?qū)嶋H上其任意組合來單獨地和/或共同地實現(xiàn)。應(yīng)該理解,此處描述的各種技術(shù)可以結(jié)合硬件或軟件,或在適當(dāng)時結(jié)合兩者的組合來實現(xiàn)。因此,本公開的方法和裝置或其某些方面或部分,可以采用包含在諸如軟盤、CD-ROM、硬盤驅(qū)動器或任何其它機器可讀存儲介質(zhì)等有形介質(zhì)中的程序代碼(S卩,指令)的形式,其中,當(dāng)程序代碼被加載至諸如計算機等機器并由其運行時,該機器成為用于實現(xiàn)本公開的裝置。在程序代碼在可編程計算機上執(zhí)行的情況下,計算設(shè)備通常包括處理器、該處理器可讀的存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備、以及至少一個輸出設(shè)備。一個或多個程序可以例如,通過使用應(yīng)用編程接口(API)、可重用控件等來實現(xiàn)或利用結(jié)合本公開所描述的過程。這樣的程序優(yōu)選地用高級過程語言或面向?qū)ο缶幊陶Z言來實現(xiàn),以與計算機系統(tǒng)通信。然而,如果需要,該程序可以用匯編語言或機器語言來實現(xiàn)。在任何情形中,語言可以是編譯語言或解釋語言,且與硬件實現(xiàn)相結(jié)合。盡管具體地參考其優(yōu)選實施例來示出并描述了本發(fā)明,但本領(lǐng)域的技術(shù)人員可以理解,可以作出形式和細節(jié)上的各種改變而不脫離所附權(quán)利要求書中所述的本發(fā)明的范圍。此外,盡管本發(fā)明的各元素可以用單數(shù)來描述或要求保護,但構(gòu)想了復(fù)數(shù),除非明確地規(guī)定了限于單數(shù)。
權(quán)利要求
1.一種用于處理數(shù)據(jù)的系統(tǒng),包括 至少一個計算設(shè)備,被配置成至少 建立與至少一個客戶機設(shè)備和至少一個圖形計算設(shè)備的連接; 從所述至少一個客戶機設(shè)備接收數(shù)據(jù); 處理從所述客戶機設(shè)備接收到的數(shù)據(jù);以及 將經(jīng)處理的數(shù)據(jù)發(fā)送到所述至少一個圖形計算設(shè)備,所述經(jīng)處理的數(shù)據(jù)被用于生成由所述至少一個圖形計算設(shè)備發(fā)送到所述客戶機設(shè)備的圖形數(shù)據(jù)。
2.如權(quán)利要求I所述的系統(tǒng),其特征在于,所述至少一個計算設(shè)備在至少一個虛擬機中被實例化。
3.如權(quán)利要求I所述的系統(tǒng),其特征在于,所述至少一個圖形設(shè)備在至少一個虛擬化機器上的至少一個分區(qū)內(nèi)被實例化。
4.如權(quán)利要求I所述的系統(tǒng),其特征在于,建立與所述至少一個客戶機設(shè)備和所述至少一個圖形計算設(shè)備的連接包括對所述至少一個計算設(shè)備和所述至少一個圖形計算設(shè)備進行負載平衡。
5.如權(quán)利要求I所述的系統(tǒng),其特征在于,所述至少一個圖形計算設(shè)備中的一個或多個圖形計算設(shè)備被配置成向單個客戶機設(shè)備發(fā)送與多個客戶機設(shè)備對應(yīng)的圖形數(shù)據(jù)。
6.一種用于處理圖形數(shù)據(jù)的方法,包括 在多個計算設(shè)備與多個客戶機設(shè)備之間建立連接,以及在所述多個計算設(shè)備與多個圖形設(shè)備之間建立連接; 由所述多個計算設(shè)備從所述多個客戶機設(shè)備接收數(shù)據(jù); 處理接收到的數(shù)據(jù); 將經(jīng)處理的數(shù)據(jù)發(fā)送到所述多個圖形設(shè)備;以及 指示所述多個圖形設(shè)備使用所述經(jīng)處理的數(shù)據(jù)來生成圖形數(shù)據(jù),并且將所生成的圖形數(shù)據(jù)發(fā)送到所述多個客戶機設(shè)備。
7.如權(quán)利要求6所述的方法,其特征在于,所述多個計算設(shè)備在多個虛擬機中被實例化,而所述多個圖形設(shè)備在與所述多個計算設(shè)備的相同的多個物理計算設(shè)備上的多個分區(qū)內(nèi)被實例化。
8.如權(quán)利要求7所述的方法,其特征在于,所述多個計算設(shè)備正在執(zhí)行與所述多個客戶機設(shè)備的多個遠程桌面會話,并且所述圖形數(shù)據(jù)包括對用戶遠程桌面會話的至少一部分的圖形表示。
9.如權(quán)利要求6所述的方法,其特征在于,在所述多個計算設(shè)備和所述多個客戶機設(shè)備之間建立連接以及在所述多個計算設(shè)備與所述多個圖形設(shè)備之間建立連接包括獲取多個客戶機設(shè)備地址并將所獲取的多個客戶機地址提供給所述多個圖形設(shè)備,獲取多個圖形設(shè)備地址并將所獲取的多個圖形設(shè)備地址提供給所述多個客戶機設(shè)備,以及指示所述多個客戶機設(shè)備和所述多個圖形設(shè)備使用所提供的地址來建立連接。
10.一種其上存儲有指令的計算機可讀存儲介質(zhì),所述指令在由一個或多個處理器執(zhí)行時使得所述一個或多個處理器執(zhí)行以下步驟 在多個計算設(shè)備與多個遠程客戶機計算機之間建立連接,以及在所述多個計算設(shè)備與多個圖形計算設(shè)備之間建立連接;由所述多個計算設(shè)備從所述多個客戶機計算機接收數(shù)據(jù); 處理接收到的數(shù)據(jù); 將經(jīng)處理的數(shù)據(jù)發(fā)送到所述多個圖形計算設(shè)備;以及 指示所述多個圖形計算設(shè)備使用所述經(jīng)處理的數(shù)據(jù)來生成圖形數(shù)據(jù),并且將所生成的圖形數(shù)據(jù)發(fā)送到所述多個遠程客戶機計算機。
全文摘要
本發(fā)明公開了從多個服務(wù)器向客戶機遞送單個終端用戶體驗。公開了用于在遠程桌面環(huán)境中創(chuàng)建多端口的客戶機服務(wù)器連接的方法、系統(tǒng)和計算機可讀介質(zhì)。在一個實施例中,多客戶機服務(wù)器連接可將客戶機-服務(wù)器連接與客戶機-服務(wù)器輸入從自服務(wù)器遞送到客戶機的圖形中去耦。這一實施例提供了更高的服務(wù)器性能,并且允許動態(tài)的服務(wù)器資源管理。該多客戶機服務(wù)器連接可在虛擬環(huán)境中實現(xiàn)、或在各物理機之間實現(xiàn),在各物理機中,一組物理機接收來自客戶機的圖形請求,而另一組物理機生成數(shù)據(jù)并向客戶機傳送顯示數(shù)據(jù)。
文檔編號H04L29/08GK102946409SQ201210388410
公開日2013年2月27日 申請日期2012年10月12日 優(yōu)先權(quán)日2011年10月14日
發(fā)明者P·查克拉博蒂, B·波斯特 申請人:微軟公司