从多个服务器向客户机递送单个终端用户体验的制作方法

文档序号:7862802阅读:532来源:国知局
专利名称:从多个服务器向客户机递送单个终端用户体验的制作方法
技术领域
本发明涉及通信领域,尤其涉及优化数据处理技术。
背景技术
远程计算系统可使得用户能访问由远程计算系统主存的资源。远程计算系统上的服务器可执行程序并将指示用户界面的信号发送到可通过经由符合诸如TCP/IP、UDP、或其他协议等通信协议的网络发送信号来连接的客户机。可向每个连接客户机提供虚拟桌面或会话,即,包括一组资源的执行环境。每个客户机可向服务器发送指示用户输入的信号并且服务器可将该用户输入应用于合适的会话。客户机可使用诸如远程桌面协议(RDP)等协议来连接到服务器资源。 随着网络带宽可用性的增加以及对丰富2D和3D客户机图形应用需求的增加,远程计算系统体系结构中已经存在转变。服务器结合将图形处理智能转移到数据中心中所部署的主存虚拟桌面基础结构(VDI)的图形虚拟平台,而不是单纯地依赖本地计算能力。客户机体验全保真度的虚拟桌面,从而利用VDI上所安装的共享图形处理单元(GPU)的图形处理能力和处理器。图形虚拟平台的一个示例是构建在Hyper-V VDI体系结构上并且集成RDP以传送为主存VDI桌面所设计的新的有效载荷的Microsoft RemoteFXSo典型的VDI体系结构可包括一个主机分区和多个客机分区或虚拟机。主机分区可访问诸如GPU、中央处理单元(CPU)、和存储器空间等VDI的底层物理资源,并且可分配和管理虚拟机对这些资源的访问。每一虚拟机具有作为所分配的物理资源的虚拟化的一组虚拟资源。由此,在远程计算系统中,客户机可连接到虚拟机或其中运行的虚拟桌面会话,在那里对客户机的认证被管理。要从客户机传送到虚拟机的诸如用户输入数据或图形数据等数据首先被传送到主机分区上的网络接口卡(NIC),随后被重新路由到虚拟机。虚拟机可使用其虚拟资源来处理数据。虚拟机可将经处理的数据发送到主机分区以供进一步对底层物理资源进行处理。主机分区进一步处理数据并将数据发送回虚拟机以便对客户机认证。虚拟机打包数据并将数据重新路由回主机分区以供经由主机分区网络接口控制器(NIC)传送到客户机。主机分区与虚拟机之间数据的反复遍历可能需要密集的操作,这些密集的操作可消耗非常大量的存储器和CPU资源并且可增加对客户机的数据递送等待时间。

发明内容
公开了用于优化对从远程计算系统环境中的客户机接收到的诸如图形数据等数据的处理的系统、方法和计算机可读介质。相比于当前体系结构,这样的优化包括降低主存的存储器和CPU资源的使用、以及降低对客户机的数据递送等待时间。在一个实施例中,客户机可启动与诸如计算服务器之类的另一计算设备的第一连接,以便在虚拟桌面或其中的会话中执行客户机工作负载。计算服务器可认证第一连接并且可获得客户机地址。计算服务器随后可与图形服务器协商连接,并且可初始化和指示图形服务器期待源自客户机地址的连接。计算服务器还可从图形服务器获得图形服务器地址。计算服务器可向客户机提供图形服务器地址。进而,客户机可使用图形服务器地址与图形服务器建立第三连接。一旦连接被建立,客户机就可经由第一连接向计算服务器提供用户的屏幕输入,诸如键盘输入、鼠标输入等。计算服务器可处理所提供的输入并输出经处理的数据,诸如显示命令和调用。计算服务器可向图形服务器发送经处理的数据以供处理。图形服务器随后可处理接收到的数据并且可将图形输出数据发送给客户机。由此,图形服务器不需要将图形输出数据发送回计算服务器。类似地,计算服务器不需要将图形输出数据发送到客户机。计算服务器可以是主存在虚拟化计算系统上的客机分区或虚拟机,而图形服务器可以是虚拟化计算系统上的主机分区。第一连接可以是例如TCP/IP、UDP、或任何其他基于网络的通信,并且可包括远程桌面会话连接。第二连接可包括例如分区内通信信道(诸如VMBus)、通过系统管理程序(也被称为虚拟机监控程序)的通信、TCP/IP、UDP、或任何其他基于网络的连接。第三连接可以是例如TCP/IP、TOP、FCOE、100GB以太网、或任何其他基于网络的连接。
在一个实施例中,多个客户机可同时连接到多个计算服务器以及多个图形服务器。在建立与多个客户机中的一个客户机的连接以及对其认证的初始步骤处,可使用重定向器和/或代理程序将客户机连接到多个计算服务器中的第一计算服务器。重定向器和/或代理程序可确定多个计算服务器的可用性,并相应地分配客户机和第一计算服务器之间的连接。由此,在对计算资源进行负载平衡的情况下,诸如虚拟机实时迁移之类的技术可无缝地将负载从第一计算服务器转移到第二计算服务器。到第二计算服务器的客户机连接可被重新建立,而客户机与多个图形服务器中的一个图形服务器之间的连接可保持不变。类似地,还可使用图形服务器管理器将连接有客户机的计算服务器连接到多个图形服务器中的第一图形服务器。图形服务器管理器可确定多个图形服务器的可用性,并且相应地分配连接有客户机的计算服务器和第一图形服务器之间的连接。由此,在对图形服务器进行负载平衡的情况下,连接有客户机的计算服务器可创建与第二图形服务器的新连接,并且可请求客户机与第二图形服务器建立新连接。客户机随后可无缝地转移到第二图形服务器上。在其中多个客户机同时连接到多个计算服务器和多个图形服务器的实施例中,至少一个客户机可被配置成从多个图形服务器接收所渲染的、捕捉到的以及压缩的数据。由此,通过至少一个客户机来接口的用户可查看源自一个或多个客户机的所渲染的、捕捉到的以及压缩的数据。类似地,至少一个图形服务器可被配置成将源自多个客户机的所渲染的、捕捉到的以及压缩的经处理的数据传送给一个客户机。本发明内容旨在提供本发明各方面的概览。本发明内容并不旨在标识本发明的任何必要步骤或组件。除了上述方面,构成本公开的一部分的权利要求、附图、以及文本还描述了其他方面。本领域技术人员之一可理解,本公开的一个或更多个方面可包括但不限于用于实现本公开的本文所提及的各方面的电路和/或编程;该电路和/或编程实质上可以是配置成实现本文所提及的方面的硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。


参考附图来进一步描述根据本说明书的用于优化对在远程计算环境中接收到的数据(诸如图形数据)的处理的系统、方法和计算机可读介质,在附图中图I描绘了其中可实现本公开的各方面的示例计算环境。图2描绘了用于实施本公开的各方面的远程计算环境。图3描绘了其中多个客户机可连接到多个远程服务器以实施本公开的各方面的远程环境。图4描绘了具有多个虚拟机的一示例虚拟机环境。 图5描绘了具有多个虚拟机的另一示例虚拟机环境。图6描绘了主存多个虚拟桌面会话以实施本公开的各方面的远程服务器。图7描绘了用于实施本公开的各方面的一示例计算服务器和图形服务器体系结构。图8描绘了用于实施本公开的各方面的另一示例计算服务器和图形服务器体系结构。图9描绘了用于实施本公开的各方面的一示例计算服务器和多个图形服务器。图10描绘了在虚拟环境中实现、用于实施本公开的各方面的一示例计算服务器和图形服务器。图11描绘了用于实现本公开的各方面、具有一个客户机、计算服务器和图形服务器的计算环境。图12描绘了用于实现本公开的各方面、具有多个客户机、计算服务器和图形服务器的计算环境。图13描绘了示出用于实施本公开的各方面的示例方法的流程图。图14描绘了用于实施本公开的各方面的示例系统和计算机可读存储介质。
具体实施例方式在以下描述和附图中阐明了某些具体细节,以提供对本公开的各个实施例的全面理解。通常与计算和软件技术相关联的某些公知细节不在以下公开中描述,以避免不必要地使本公开的各实施例晦涩难懂。此外,相关领域的普通技术人员会理解,他们可以无需以下描述的细节中的一个或多个而实现本公开的其它实施例。最后,尽管在以下公开中参考了步骤和序列来描述各个方法,但是如此的描述是为了提供本公开的实施例的清楚实现,且步骤以及步骤序列不应被认为是实现本公开所必需的。应该理解,此处描述的各种技术可以结合硬件或软件,或在适当时结合两者的组合来实现。因此,本公开的方法和装置或其某些方面或部分,可以采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(S卩,指令)的形式,其中,当程序代码被加载至诸如计算机等机器并由其运行时,该机器成为用于实现本公开的装置。在程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。一个或多个程序可以例如,通过使用应用编程接口(API)、可重用控件等来实现或利用结合本公开所描述的过程。这样的程序优选地用高级过程语言或面向对象编程语言来实现,以与计算机系统通信。然而,如果需要,该程序可以用汇编语言或机器语言来实现。在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。贯穿本公开使用的术语电路可包括诸如硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件/软件。术语电路还可包括被配置成通过固件或通过开关集来以特定方式执行功能的微处理器,或一个或多个逻辑处理器,例如,多核通用处理单元的一个或多个核。此示例中的逻辑处理器可以通过从存储器,例如,RAM、ROM、固件和/或虚拟存储器中加载的体现可操作以执行功能的逻辑的软件指令来配置。在其中电路可包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行的机器可读代码。因为本领域技术人员可以明白,现有技术已经进化到硬件、软件或硬件/软件的组合之间几乎没有差别的地步,因而选择硬件还是软件来实现功能只是一个设计选择。因此,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现留给了实现者。本发明的实施例可以在一个或更多计算机上执行。图I及以下讨论旨在提供对其 中可实现本公开的合适的计算环境的简要概括描述。本领域技术人员可以理解,计算机系统可具有本文在下面所描述的组件的某些或全部。图I描绘了被配置成与本公开的各方面一起工作的计算系统的示例。计算系统可包括计算机100等等,其中包括逻辑处理单元102、系统存储器22,以及将包括系统存储器在内的各种系统组件耦合到逻辑处理单元102的系统总线23。系统总线23可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、以及局部总线。系统存储器包括只读存储器(ROM) 24和随机存取存储器(RAM) 104。基本输入/输出系统26 (BIOS)被存储在R0M24中,该基本输入/输出系统26包含了诸如在启动期间帮助在计算机100内的元件之间传输信息的基本例程。计算机100还可以包括用于读写硬盘(未示出)的硬盘驱动器27、用于读写可移动磁盘118的磁盘驱动器28,以及用于读写诸如CD ROM或其他光学介质之类的可移动光盘31的光盘驱动器30。在一些示例实施例中,实施本公开的各方面的计算机可执行指令可存储在R0M24、硬盘(未示出)、RAM104、可移动磁盘118、光盘31和/或逻辑处理单元102的高速缓存中。硬盘驱动器27、磁盘驱动器28,以及光盘驱动器30分别通过硬盘驱动器接口 32、磁盘驱动器接口 33,以及光盘驱动器接口 34连接到系统总线23。驱动器以及它们相关联的计算机可读介质为计算机100提供了计算机可读指令、数据结构、程序模块,及其他数据的非易失存储器。虽然此处所描述的环境使用了硬盘、可移动磁盘118、以及可移动光盘31,但是,那些本领域普通技术人员应该理解,在操作环境中也可以使用诸如盒式磁带、闪存卡、数字视频盘、伯努利磁带盒、随机存取存储器(RAM)、只读存储器(ROM)等等之类的可以存储可由计算机进行访问的数据的其他类型的计算机可读介质。可以有若干个程序模块存储在硬盘、磁盘118、光盘31、R0M24或RAM104上,包括操作系统35、一个或多个应用程序36、其他程序模块37、以及程序数据38。用户可以通过诸如键盘40和定点设备42之类的输入设备向计算机100中输入命令和信息。其他输入设备(未示出)可包括话筒、游戏杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些及其他输入设备常常通过耦合到系统总线的串行端口接口 46连接到逻辑处理单元102,但是,也可以通过诸如并行端口、游戏端口、通用串行总线(USB)之类的其他接口来连接。显示器47或其他类型的显示设备也可以通过诸如GPU/视频适配器112之类的接口连接到系统总线23。除了显示器47之外,计算机通常包括其他外围输出设备(未示出),如扬声器和打印机。图I的系统也包括主机适配器55、小型计算机系统接口(SCSI)总线56,以及连接到SCSI总线56的外部存储设备62。计算机100可使用到一个或多个远程计算机(诸如,远程计算机49)的逻辑连接而在联网环境中操作。远程计算机49可以是另一计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点、虚拟机,并通常包括上文相对于计算机100所描述的许多或全部元件,但是在图I中只示出了存储器存储设备50。图I中所描绘的逻辑连接可包括局域网(LAN) 51和网络52,作为一个示例该网络52是广域网(WAN)。这样的联网环境在办公室、企业范围的计算机网络、内联网和因特网中是普遍的。当用于LAN联网环境中时,计算机100可通过网络接口控制器(NIC)IH或适配器 连接到LAN51。当在WAN联网环境中使用时,计算机100通常可包括调制解调器54或用于通过例如因特网等网络52建立通信的其他手段。可以是内置的或外置的调制解调器54可通过串行端口接口 46连接到系统总线23。在联网环境中,相对于计算机100所示的程序模块或其部分可被存储在远程存储器存储设备中。可以理解,所示出的网络连接只是示例,也可以使用用于在计算机之间建立通信链路的其他手段。此外,虽然可构想本发明的许多实施例尤其适用于计算机系统,然而在本文中不意味着将本公开限于这些实施例。在某些情形中,用户可能想要远程地访问计算应用,即在单独的计算设备上运行的应用。一种实现通过诸如虚拟桌面等远程桌面向用户提供这样的访问。远程桌面系统的各实施例可执行一个或多个计算机,或者可具有参考图I的计算机100来描述的组件中的一些或全部。远程桌面系统是维护可由客户机计算机系统远程地执行并显示在客户机计算机系统上的应用的计算机系统。图2描绘了远程桌面系统200的示例体系结构。远程桌面系统200可包括远程客户机计算机210和远程服务器计算机220。远程客户机计算机210和远程服务器计算机220被配置成彼此进行诸如虚拟桌面会话等远程会话。如所描绘的,远程服务器计算机220将远程会话提供给远程客户机计算机210,其中,远程服务器计算机220将来自执行用户的客户机图形输出发送到远程客户机会话222。远程用户输入是在远程客户机计算机210处输入的。输入管理器212可处理远程用户输入并通过网络(例如,使用基于国际电信联盟(ITU)T. 120协议家族等协议,如远程桌面协议(RDP))将其传送到远程服务器计算机220上的远程用户应用224。网络可以是任何类型的通信网络,诸如局域网、广域网、电缆网络、因特网、万维网或公司企业网络。远程用户应用224可在远程服务器计算机220上主存的远程客户机会话222中被执行。远程用户应用224如同该输入是在远程服务器计算机220处输入的那样来处理该输入。远程用户应用224响应于接收到的输入生成远程服务器输出,并且该输出通过网络传送到远程客户机计算机210。远程客户机计算机210向远程用户呈现输出数据。由此,在远程客户机计算机210处接收输入并呈现输出,而处理实际上是在远程服务器计算机220处发生的。除了远程用户应用224以外,远程客户机会话222可包括外壳和诸如桌面之类的用户界面、跟踪桌面内的鼠标移动的子系统、将对图标的鼠标点击转换成实现程序实例的命令的子系统、其他应用等。应当理解,上述讨论是示例性的,并且当前公开的主题可在各种客户机/服务器环境中实现而不限于特定的远程呈现产品。在大多数(如果不是全部的话)远程桌面环境中,(在远程客户机计算机210处输入的)远程用户输入数据通常包括表示对应用的命令的鼠标和键盘数据。(远程用户应用在远程服务器计算机220处生成的)输出数据通常包括供在远程客户机计算机210处显示的图形数据。许多远程桌面环境也包括扩展到传输其他类型的数据的功能。在一示例实施例中,可将来自用户应用224的图形数据输出发送到远程服务器计算机220上主存的图形管理器226。图形管理器226可渲染、捕捉、压缩图形数据并经由网络将其传送到远程客户机计算机210上的远程用户显示器214。远程用户显示器214可向远程用户显示图形输出数据。在远程桌面环境的实施例中,远程服务器计算机可执行多个远程客户机计算机的多个远程会话(或虚拟桌面)。由此,代理程序可用于控制对多个远程客户机计算机的会话分配。另外,在远程桌面环境中,存在可服务特定远程客户机计算机的多个远程服务器计算机。由此,重定向器可用于控制对服务特定远程客户机计算机的远程服务器计算机的分配。图3描绘了这样的远程桌面系统300的示例实施例。 多个远程客户机计算机310(A_N)可以是能够经由网络与远程服务器系统350通信的任何计算设备,诸如图2的远程客户机计算机210。远程服务器系统350可包括重定向器330、代理程序340、和多个远程服务器计算机320 (A-N)。重定向器330和代理程序340可以是包括处理器和存储器的计算设备,处理器和存储器被配置成实现本文下面所描述的这些设备的相应功能。远程服务器计算机320 (A-N)可具有参考图I的计算机100以及图2的远程服务器计算机220所描述的组件中的部分或全部。远程服务器计算机320 (A-N)还作为虚拟机来实现。虚拟机可在单个硬件基础结构上或在单独的硬件基础结构上实现。代理程序340可以是使用网关(未示出)连接到重定向器330的独立设备,可以被放置在重定向器330内,或可以被放置在远程服务器计算机320 (A-N)内。重定向器330还可被放置在远程服务器计算机320 (A-N)内。代理程序340基于存储在代理程序340中的会话状态信息来向远程客户机计算机分配会话。会话状态信息可包括例如会话ID、用户名、会话所在的远程服务器计算机的名称、每一远程服务器计算机中的活动会话的数量等等。如此处使用的,会话可以是虚拟桌面会话(也称为虚拟机会话)。远程客户机计算机310首先连接到可提供对远程客户机计算机310 (A-N)的负载平衡的重定向器330。在这一情况下,重定向器330通常首先接收对连接的请求。重定向器330随后接受连接请求并且查询代理程序340,以便确定远程客户机计算机310被重定向到哪里。代理程序340分析该特定环境的会话状态信息并标识远程客户机计算机310可被重定向到的远程服务器计算机320。所标识的远程服务器计算机320可拥有由远程客户机计算机310先前访问但之后断开连接的会话,远程客户机计算机310可再次重新连接到该会话。在一个实施例中,假如远程客户机计算机310不拥有任何其他现有会话,所标识的远程服务器计算机320可提供远程客户机计算机310可连接到的新会话。代理程序340向所请求的远程服务器计算机320发送信息,使远程客户机计算机320能够与所标识的远程服务器计算机310建立连接。例如,该信息可包括机器ID、会话ID、以及所标识的远程服务器计算机320的位置。一旦远程客户机计算机310与所标识的远程服务器计算机320建立连接,远程客户机计算机310就可访问所标识的远程服务器计算机320中存在的应用。这些应用可与代理程序340的被用于标识远程服务器系统350中的远程服务器计算机320的逻辑兼容。在一个实施例中,上文描述的系统可用于例如将远程客户机计算机310连接到运行在远程服务器计算机上的多个虚拟桌面或其中的会话中的一个。远程客户机计算机检查远程桌面协议(RDP)分组中的重定向器令牌。远程客户机计算机基于重定向器令牌中所包含的信息来连接到许多虚拟桌面中的一个。在另一实施例中,远程客户机计算机310可使用代理程序340和池管理器(未示出)来连接到虚拟桌面中的一个。池管理器可放置在代理程序340内。代理程序340在远程客户机计算机310连接到虚拟机(VM)上主存的虚拟桌面时向远程客户机计算机310分配虚拟桌面,并且池管理器指示那些虚拟桌面可用于分配。在又一实施例中,远程客户机计算机310可连接到虚拟桌面。远程客户机计算机 310指示由代理程序340用于生成网际协议(IP)地址并在远程客户机计算机310与虚拟桌面之间建立连接的网络名。通过对远程客户机计算机310 (A-N)隐藏个别虚拟桌面IP地址,最初只需要向远程客户机计算机310 (A-N)外部暴露代理程序340的单个网络名。图4示出了具有多个虚拟机的一示例虚拟机环境。虚拟化计算机系统400可用于实现图2的远程服务器计算机220和图3的远程服务器计算机320 (A-N)。如图4所示,计算机系统400可包括图I中所描述的元件、以及可用于实现虚拟机的组件。一个这样的组件是在本领域中也可被称为虚拟机监控程序的系统管理程序微内核(hypervisor microkernel) 402。系统管理程序微内核402可被配置成控制并仲裁对计算机系统400的硬件的访问。系统管理程序微内核402可以生成被称为分区的执行环境,分区诸如客机分区I到客机分区N (其中N是大于I的整数)。在此,客机分区是系统管理程序微内核402所支持的基本隔离单元。客机分区也可被称为子分区。系统管理程序微内核402可以隔离一个分区中的进程,使其不能访问另一分区的资源。每个客机分区都可以被映射到在系统管理程序微内核402控制之下的一组硬件资源,例如,存储器、设备、处理器周期等。在各实施例中,系统管理程序微内核402可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件中、专用集成电路、或其组合。系统管理程序微内核402可以通过限制客操作系统对物理计算机系统中的存储器的视图来实施分区划分。当系统管理程序微内核402实例化一虚拟机时,它可以将系统物理存储器(SPM)的页(例如,具有开始和结束地址的固定长度存储器块)分配给虚拟机作为客物理存储器(GPM)。在此,客的受限的系统存储器视图由系统管理程序微内核402来控制。术语“客物理存储器”是从虚拟机的观点描述存储器页的简写方式,且术语“系统物理存储器”是从物理系统的观点描述存储器页的简写方式。因此,被分配给虚拟机的存储器页会有客物理地址(虚拟机所使用的地址)和系统物理地址(页的实际地址)。客操作系统可以虚拟化客物理存储器。虚拟存储器是一种管理技术,其允许操作系统过度提交存储器,并且给予应用对连续工作存储器的唯一访问。在虚拟化环境中,客操作系统可以使用一个或多个页表来将被称为虚拟客地址的虚拟地址转换成客物理地址。在该示例中,存储器地址可以具有客虚拟地址、客物理地址以及系统物理地址。在所描绘的示例中,计算机系统400包括主机分区,主机分区也可被认为是类似于Xen的开源系统管理程序的域O。主机分区也可被称为父分区或根分区。如所描绘的,主机分区可包括主机404。主机404可包括允许应用与计算机系统400的底层物理硬件进行交互的设备驱动程序424。由此,主机404可访问计算机系统400的物理硬件,诸如逻辑处理单元102、GPU112、以及NIC114。主机404可以是操作系统(或一组配置实用程序)。主机404可被配置成通过使用虚拟化服务提供者428 (VSP)向在客机分区1_N中执行的客操作系统提供资源。VPS428 (—般在开源社区中被称为后端驱动程序)可用来通过虚拟化服务客户机(VSC)(在开源社区或类虚拟化设备中一般称为前端驱动程序)对到硬件资源的接口进行多路复用。如图4所示,虚拟化服务客户机在客操作系统的上下文中执行。然而,这些驱动程序不同于客机中的其余驱动程序,因为向它们提供了系统管理程序而非客机。在一示例性实施例中,虚拟化服务提供者428与VSC416和418通信所使用的路径可以被认为是虚拟化路径。主机分区VSP428以及客机分区VSC416和418可连接到虚拟机总线(VMBus)。虚拟机总线是允许分区间通信的逻辑信道。对虚拟资源(诸如虚拟处理器430和432)的客机分区请求可经由虚拟机总线被重定向到主机分区中可管理这些请求的设备。从主机分区 到客机分区的响应也可经由虚拟机总线来重定向。这整个过程对于客操作系统220和222可以是透明的。在另一实施例中,主机分区VSP228与客机分区VSC216和218可经由诸如TCP/IP网络之类的网络通过发送和接收消息分组来通信。如图4所示,仿真器434(例如虚拟化IDE设备、虚拟化视频适配器、虚拟化NIC等)可被配置成在主机404内运行并被附连到对客操作系统420和422可用的资源。例如,当客操作系统接触被映射到设备的寄存器所处的存储器位置、或者存储器被映射的设备时,系统管理程序微内核402可截取该请求并将客机试图写入的值传递给相关联的仿真器。在此,该示例中的资源可被认为是虚拟设备所处的位置。仿真器的以这种方式的使用可以被认为是仿真路径。仿真路径与虚拟化路径相比是低效的,因为与在VSP和VSC之间传递消息相比,它需要更多的CPU资源来仿真设备。例如,可以将用来经由仿真路径把值写入盘的、被映射至寄存器的存储器上的几百个动作减少为单个消息,该消息在虚拟路径中从VSC被传递至VSP。每一客机分区可包括一个或多个虚拟处理器(430和432),客操作系统(420和422)可管理并调度线程以便在这些虚拟处理器上执行。一般而言,虚拟处理器是向物理处理器的表示提供特定架构的可执行指令以及相关联的状态信息。例如,一个虚拟机可具有带有英特尔x86处理器特性的虚拟处理器,而另一虚拟处理器可具有PowerPC处理器的特性。本例中的虚拟处理器可被映射到计算机系统的处理器,使得实现虚拟处理器的指令将得到处理器的支持。由此,在包括多个处理器的实施例中,虚拟处理器可以由处理器同时执行,同时例如其他处理器执行系统管理程序指令。分区中虚拟处理器和存储器的组合可被认为是虚拟机。客操作系统(420和422)可以是任何操作系统,诸如来自Microsoft ,Apple 、开
源社区等的操作系统。客操作系统可包括用户/内核操作模式,并且可具有可包括调度程序、存储器管理器等的内核。一般而言,内核模式可包括处理器中至少向特权处理器指令授予访问权的执行模式。每一客操作系统可具有相关联的文件系统,该文件系统上可存储有应用(诸如远程服务或虚拟桌面会话、终端服务器、电子商务服务器、电子邮件服务器等)以及客操作系统本身。客操作系统可调度要在虚拟处理器上执行的线程,且这些应用的实例可被实现。图5描绘了与图4的组件相类似的组件。然而,在该示例实施例中,系统管理程序542可包括微内核组件以及和图4的主机404中的组件(如虚拟化服务提供者428和设备驱动程序424)相类似的组件,而管理操作系统540可包含例如用于配置系统管理程序542的配置实用程序。在该体系结构中,系统管理程序542可执行与图4中的系统管理程序微内核402和主机404相同或相似的功能。系统管理程序542可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件内,和/或系统管理程序542的一部分可以由专用集成电路来实现。在各个实施例中,诸如图2中的远程服务器计算机220之类的远程服务器计算机可执行多个远程客户机会话或虚拟桌面。诸如远程客户机会话220之类的每一远程客户机会话可表示连接客户机的应用环境。远程服务器计算机可为图6中所示的连接远程客户机 计算机中的每一个生成至少一个远程客户机会话。此外,如上所述,远程服务器计算机220可以是执行图4和5的计算机系统400的组件中的部分或全部的虚拟机,该虚拟机进而执行多个远程客户机会话。图6中所描绘的是计算机系统600,计算机系统600可包括被配置成实现远程服务器计算机的电路,或者在其他实施例中,计算机系统600可包括被配置成支持远程桌面连接的电路。在所描绘的示例中,计算机系统600可被配置成生成用于连接客户机的一个或多个远程客户机会话,诸如会话I到N (其中N是大于2的整数)。简言之,在本发明的示例实施例中,会话一般可包括由被配置成与计算机系统600的内核614交互的多个子系统(例如,软件代码)实现的操作环境。例如,会话可包括实例化诸如桌面窗口之类的用户界面的进程、跟踪该窗口内的鼠标移动的子系统、将图标上的鼠标点击转换成实现程序实例的命令的子系统等。会话可在例如计算机系统600经由网络连接从客户机(诸如图2的远程客户机计算机210)接收连接请求时,由计算机系统600在逐个用户的基础上由计算机系统600生成。一般而言,连接请求首先可由传输逻辑610处理,传输逻辑610例如可由计算机系统600的电路实现。在一些实施例中,传输逻辑610可包括网络适配器、可被配置成接收连接消息并将其转发给引擎612的固件和软件。如图6所示,在一些实施例中,传输逻辑610可包括每个会话的协议栈实例。一般而言,每个协议栈实例可被配置成将用户接口输出路由到客户机,以及将从客户机接收到的用户输入路由到与其会话相关联的会话核心644。继续图6的一般性描述,在本发明的一些示例实施例中,引擎612可被配置成处理对会话的请求;确定每个会话的功能;通过为会话分配一组物理资源来生成会话;以及实例化会话的协议栈实例。在一些实施例中,引擎612可由能实现上述操作过程中的一部分的专门电路组件来实现。例如,一些示例实施例中,该电路在可包括存储器以及配置成执行实现引擎612的代码的处理器。如图6所描绘的,在一些情况下,引擎612可接收连接请求并确定例如许可证可用,并且可为该请求生成会话。在计算机系统600是包括远程桌面能力的远程计算机的情形中,引擎612可被配置成响应于连接请求生成会话而不检查许可。如图6所示,会话管理器616可被配置成接收来自引擎612的消息,并且响应于该消息,会话管理器616可将会话标识符添加到表中;向该会话标识符指派存储器;以及在指派给该会话标识符的存储器中生成系统环境变量和子系统进程的实例。
如图6所示,会话管理器616可实例化诸如运行时子系统640之类的环境子系统,该子系统可包括诸如会话核心644之类的内核模式部分。例如,在一实施例中,环境子系统被配置成将一些服务子集展示给应用程序并向计算机操作系统602的内核提供接入点。在示例实施例中,运行时子系统640可控制进程和线程的执行,并且会话核心644可向内核614的执行程序发送请求以向线程分配存储器并调度执行它们的时间。在一实施例中,会话核心644可包括图形显示界面646 (⑶I)、安全子系统650和输入子系统652。在这些实施例中,输入子系统652可被配置成经由与该会话相关联的协议栈实例接收来自客户机的用户输入并将该输入传送给合适会话的会话核心644。用户输入在一些实施例中可包括指示绝对和/或相对鼠标移动命令、鼠标坐标、鼠标点击、键盘信号、操纵杆移动信号等的信号。例如图标上的鼠标双击的用户输入可被会话核心644接收,并且输入子系统652可被配置成确定有图标位于与该双击相关联的坐标处。输入子系统652随后可被配置成向可执行与该图标相关联的应用的进程的运行时子系统640发送通知。
除了接收来自客户机的输入之外,还可从应用和/或桌面接收绘制命令并由⑶1646来处理。⑶1646 —般可包括能生成图形对象绘制命令的进程。⑶1646在该示例实施例中可被配置成将GDI646输出传递给远程显示子系统654,在此命令针对附连到该会话的显示器驱动程序被格式化。在某些示例实施例中,一个或多个物理显示器可被附连到计算机系统600,例如在远程桌面情形中。在这些示例实施例中,远程显示子系统654可被配置成镜像由远程计算机系统的显示器驱动程序呈现的绘制命令、并经由与该会话相关联的栈实例将镜像信息传送给客户机。在另一示例实施例中,远程显示子系统654可以被配置成包括可不与物理上附连到计算机系统600的显示器相关联的虚拟显示器驱动程序,例如计算机系统600可无头地(headless)运行。远程显示子系统654在该实施例中可被配置成接收针对一个或多个虚拟显示器的绘制命令并将它们经由与该会话相关联的栈实例传送给客户机。在本发明的实施例中,远程显示子系统654可被配置成确定每个显示器驱动程序的显示分辨率,例如确定与虚拟显示器相关联的虚拟显示器驱动程序的显示分辨率或与物理显示器相关联的显示器驱动程序的显示分辨率;以及经由相关联的协议栈实例将分组路由到客户机。在一些示例实施例中,会话管理器616可附加地实例化与该会话的会话标识符相关联的可被配置成处理该会话的登入和登出的登录进程的实例。在这些示例实施例中,指示与登录进程相关联的图形用户界面的绘制命令可被传送给客户机,在那里,客户机的用户可向登录屏幕输入帐户标识符(例如用户名/ 口令组合)、智能卡标识符、和/或生物测定信息。该信息可被传送给计算机系统600并被路由至引擎612以及会话核心644的安全子系统650。例如,在某些示例实施例中,引擎612可被配置成确定用户帐户是否与许可证相关联;并且安全子系统650可被配置成生成该会话的安全令牌。如图6所述,远程服务器计算机可向连接远程客户机计算机提供多个远程桌面会话。远程桌面会话可与远程客户机计算机所请求的一个或多个应用相关联。另外地并且如图6所描述的,远程服务器计算机可处理客户机桌面的图形数据表示,诸如用户界面屏幕、用户输入命令等。此外,远程服务器计算机可渲染、捕捉、压缩图形数据并将图形数据传送到客户机远程计算机。渲染指的是转换由远程桌面会话内运行的应用所作出的原始显示调用(诸如旋转、翻转和绘制)的过程。捕捉指的是取所渲染的应用内容(诸如屏幕上位图或帧改变)以及智能地捕捉应用内容的先前渲染上的改变的过程。压缩(也被称为编码)指的是向所连接的远程客户机计算机中的每一个最优地且公平地递送图形资源的过程。网络条件的质量和目标远程客户机计算机确定用于最优地递送所捕捉的内容的压缩/编码的类型。如本文中下面将描述的,在各个实施例中,远程服务器计算机可包括计算服务器和图形服务器。计算服务器可被配置成从远程客户机计算机接收图形数据,处理该图形数据,并且将经处理的图形数据发送给图形服务器。图形服务器可被配置成渲染、捕捉从计算服务器接收到的数据、并且将其压缩成图形输出数据。图形服务器还可被配置成直接将图形输出数据传送给远程客户机计算机,而不是将图形输出数据发送给计算服务器并使用计算服务器将图形输出数据传送给远程客户机服务器。图7描绘了包括计算服务器710和图形服务器720的远程服务器计算机700的示例实施例。远程服务器计算机700的各实施例可执行参考图I的计算机100、图2的远程服务器计算机220、图3的远程服务器计算机320、图4和5的计算机系统400、以及图6的计算机系统600所描述的全部或部分组件。 计算服务器710的各实施例可执行参考图I的计算机100、图2的远程服务器计算机220、图4和5的计算机系统400或虚拟机440、以及图6的计算机系统600所描述的全部或部分组件。计算服务器710没有足够的GPU资源或没有GPU资源。在又一实施例中,计算服务器710可以是被适当地配置以提供下述计算资源的标准服务器计算机。在另一实施例中,计算服务器710可以是针对特定功能来配置的计算设备。例如,计算服务器可以只是单个类型的处理单元以及小量的高速缓存存储器。图形服务器720可被配置成提供诸如渲染、捕捉和压缩操作之类的图形操作的资源。图形服务器还可被配置有多个GPU资源。在一个实施例中,图形服务器720可执行参考图I的计算机100所描述的部分或全部组件。在又一实施例中,图形服务器可被主存在诸如图4的主机404之类的主机分区上。计算服务器710和图形服务器720可经由网络(光纤通道、LAN、无线、以太网等)来连接。在诸如图4的环境之类的虚拟化环境中,图形服务器720和计算服务器710可使用虚拟机总线来连接。计算服务器710可运行一个或多个应用712。在一个方面,应用可与图形设备驱动程序714相关联。图形设备驱动程序714、应用712、和/或计算服务器710可与图形服务器720上的图形服务器管理器740相关联。图形设备驱动程序714、应用712、和/或计算服务器710可以能够将指令和数据发送到图形服务器管理器740以及从图形服务器管理器740接收指令和数据。作为一个示例,图形设备驱动程序714、应用712、和/或计算服务器710可以能够将第一数据发送到图形服务器管理器740,该第一数据指示对GPU资源的请求。图形服务器管理器740可将第二数据发送到图形设备驱动程序714、应用712、和/或计算服务器710,该第二数据指示对来自图形服务器720的GPU指令进行路由。图形服务器管理器740可管理图形服务器720。图形服务器管理器740可以能够将指令和数据发送到图形服务器720的各组件,并且可接收作为来自图形服务器720的各组件的响应的信息和数据。图形服务器720可专用于GPU主存和处理。图形服务器720可包括图形服务器管理器740、代理图形应用722、内核726、和GPU硬件730。代理图形应用722可与第一图形设备驱动程序724相关联,而内核726可与第二图形设备驱动程序728相关联。图形设备驱动程序724和728可转换、接收并且发送与图形处理任务相关联的数据和信息。在一个实施例中,图形设备驱动程序724和728被选择以便在特定GPU硬件730以及图形服务器管理器740上的应用、硬件、以及操作系统、计算服务器710、和/或远程客户机计算机之间进行转换。在图7的实施例中,与图形处理任务相关联的指令可流过一系列层,从应用712到图形服务器管理器740、到代理图形应用722、到内核726、到硬件730。经处理的信息可反向跟随同一路径。图8示出信息路径的替换实施例。图形服务器管理器850从计算服务器710、应用720、和/或图形设备驱动程序714接收GPU资源,并且将路由指令、状态指令等路由到计算服务器710和图形服务器720。之后,GPU任务、经处理的信息、和指令可在图形服务器720和计算服务器710之间直接发送。图形服务器管理器850可监视该交互,并且可执行与分配GPU上的资源(诸如GPU硬件730)有关的其他任务。图9描绘了多个图形服务器720 (A-N),这些图形服务器可在与单组GPU硬件730相关联的资源不足时执行GPU处理任务。该实施例还可在图形服务器管理器850将一部分GPU处理任务从第一图形服务器720A迁移到第二图形服务器720B时使用。在这样的实施例中,图形服务器管理器850可用作将第一图形服务器720A的状态复制到第二图形服务器 720B。图10描绘了在虚拟化环境或虚拟桌面基础结构(VDI)中实现的计算服务器1010和图形服务器1020的远程服务器计算机1000的示例实施例。计算服务器1010和图形服务器1020可被配置成实现图7-9的计算服务器710和图形服务器720。远程服务器计算机1000的各实施例可执行参考图I的计算机100、图2的远程服务器计算机220、图3的远程服务器系统350、图4和5的计算机系统400、以及图6的计算机系统600所描述的全部或部分组件。图10描绘了 VDI的基于主机的图形虚拟化。这样的体系结构的可以例如使用Microsoft RemoteFX 平台来实现。虚拟机1011 (A-N)可被称为虚拟桌面。体系结构使用虚拟图形处理单元(vGPU) 1016 (A-N)来在主存多用户环境中最优地共享GPU资源,该虚拟图形处理单元(vGPU) 1016 (A-N)抽象客操作系统(OS) 1014 (A-N)与物理GPU112之间的关系。系统管理程序微内核1002可被配置成实现多个主机分区和客机分区。在又一实施例中,系统管理程序微内核1002可集成远程桌面会话组件(未示出)。每一主机分区可被配置成可访问远程计算机服务器1000的物理GPU资源的图形服务器1020。每一主机分区还可包括用于图形渲染、捕捉和编码的管理组件。每一主机分区还可包括提供到物理GPU112和到基于主机的编码器的接口,诸如ASICS (未示出)。设备驱动程序1026可包括GPU、CPU和编码器专用驱动程序。每一客机分区可被配置成可访问vGPU资源的计算服务器1010。每一客机分区可实现多个已连接的远程客户机计算机(未示出)的一个或多个虚拟桌面或会话。每一客机分区和远程客户机计算机之间的连接可包括远程桌面会话(诸如RDP7. 1),类似于图2-3中示出的会话。VGPU1016可提供安装在每一虚拟机1011中的虚拟图形适配器。vGPU1016可利用一个或多个GPU112来提取对多个虚拟机的图形处理。当运行在虚拟机1011中的应用调用了诸如DirectX 或GDI操作之类的图形操作时,vGPU1016可使用客机分区1010与主机分区1020之间的通信信道从GPU112获取资源。通信信道可包括虚拟机总线或TCP/IP信道。虚拟机总线可被配置在系统管理程序微内核1002内用于存储器共享和对vGPU专用的其他功能。这样的虚拟机总线配置可直接向系统管理程序微内核1002提供集成机制,其中对图形相关设备的所有资源请求可被传送。VGPU1016还可向虚拟机1011提供服务质量机制。服务质量机制可基于最高效地使用GPU112的负载平衡机制向虚拟机1011公平地递送GPU112。主机分区1020可被配置成向虚拟机1011提供远程桌面虚拟图形管理(RDVGM)。RDVGM可管理分配给每一虚拟机客操作系统(OS) 1014的远程计算机服务器1000的物理资源和VGPU1016资源之间的资源分配和过程控制。RDVGM功能可包括管理该渲染、捕捉和压缩(RCC)过程,通过VGPU1016向虚拟机1011分配GPU112资源,向虚拟机1011分配资源策略,以及跨多个虚拟机IOll(A-N)对GPU112资源进行负载平衡。RDVGM还可在引导时向虚拟机1011 (A-N)分配适当的GPUl 12。
RDVGM可集成RCC引擎1022,RCC处理对图形数据的渲染、捕捉和压缩。RCC可从每一虚拟机1011接收图形请求作为输出,并且将这些请求转换成主机分区1020上例如符合DirectX 的命令。虚拟机总线可以为来自运行在虚拟机1011 (A-N)中的主存应用1012 (A-N)对物理GPU112资源的图形请求提供高速通信底板。对于符合DirectX 的命令,应用1012 (A-N)需要支持DirectX 9或之后版本,而GPUl 12需要支持DirectX 10或之后版本。如前所述,渲染指的是通过vGPU1016(A_N)来转换由应用1012(A_N)作出的原始显示调用(诸如旋转、翻转和绘制)、从而遵循对GPU112的请求并且由此渲染应用内容的过程。渲染可基于标准DirectX 句法。捕捉指的是取所渲染的应用内容(诸如屏幕上位图或帧变化)、并且智能地捕捉先前渲染该应用内容时的改变的过程。捕捉的次要功能是分配捕捉质量的服务质量策略和编码级别。压缩或编码指的是通过VGPU1016经由包括例如远程桌面会话协议在内的通信信道来向远程客户机计算机最优地且公平地递送GPU112资源的过程。通信信道的质量和条件以及目标远程客户机计算机的类型可确定被用于最优地递送捕捉到的内容的压缩/编码类型。当运行在VMlOll内的应用1012发出诸如绘制、调整大小、和旋转之类的显示调用时,VGPU1016可代理所有的渲染请求。虚拟路径对于客操作系统1014可以是透明的。如先前解释的,图形处理命令可由主机分区1020截取。该截取可在软件栈中的低级处完成。图形随后可在GPU112上被呈现到单个帧缓冲器中,该帧缓冲器充当图形更新的临时保持站。该帧缓冲器可表示终端用户的虚拟化显示;终端用户是使用远程客户机计算机连接到虚拟机1011的已连接用户。富图形应用、3D插件、以及其他图形调用和命令可以完全如同应用正在包含GPU的专用工作站上运行那样运行。主机分区1020可迅速且高效地捕捉所渲染的内容。内容内的每一帧可被分成可管理的单元。帧内的变化区域可通过由RCC引擎1022提供的优化能力来处理。通过这一捕捉机制,各个帧可被截取用于显示变化。只有帧内已经变化的区域被捕捉用于编码。主机分区1020还可压缩捕捉到的内容。压缩过程可通过管理工具来控制,通过给予某些虚拟机较高或较低的优先级来控制,或通过变化区域在捕捉到的帧内的大小来动态地控制。另外,在使用远程桌面会话(诸如RDP7. I)的实施例中,远程桌面会话可基于网络使用和公平性来提供帧速率优化。RCC引擎1022可伸展至远程桌面会话监听器过程,以评估远程客户机计算机的状态,包括远程客户机计算机的解码能力。可按动态地适应网络条件和远程客户机计算机消耗帧缓冲器变化的能力这一帧速率来将该帧缓冲器变化发送到远程客户机计算机。经编码的输出可在远程桌面会话内被隧穿,且可被发出到远程客户机计算机。图7-10中所示的用于实现包括一个或多个计算服务器和一个或多个图形服务器的远程服务器计算机的所有体系结构变体是示例性的实现。本文没有任何表述应被解释为将本公开限制于任何特定的实现方面。在远程计算环境中,远程客户机计算机通常仅与计算服务器通信,而与图形服务器不具有直接连接。与计算服务器的通信可包括使用类似于图3中所示的重定向器和/或代理。计算服务器通常管理与远程客户机计算机的连接。例如,计算服务器的客操作系统可被配置来认证该客户机。一旦完成认证,则远程客户机计算机与计算服务器之间的数据传 送可被启动。由此,来自远程客户机计算机的图形请求可由计算服务器接收。计算服务器将图形请求处理成图形调用和命令,并且将这些调用和命令传输到图形服务器以供渲染、捕捉和压缩。由于图形服务器与远程客户机计算机不具有直接通信路径,因此来自图形服务器的图形输出可被发送到计算服务器。计算服务器可打包图形输出并将其传输到远程客户机计算机以供向终端用户显示。将以上描述应用在图10的虚拟环境中,来自远程客户机计算机的图形请求可经由远程服务器计算机1000的物理NIC114、通过客机分区1010的虚拟NIC (未示出)来传输到应用1012。图形请求随后可被处理并被路由到主机分区1020以供渲染、捕捉和压缩。一旦输出数据经渲染、捕捉、和压缩,就可使用VGPU1016将输出数据从主机分区1020路由回计算服务器1010。为了将输出数据从客机分区1010传输到远程客户机计算机,客机分区1010可使用虚拟NIC来打包和传输该数据。虚拟NIC可将输出数据重定向至物理NIC114,物理NIC114经由网络将该数据传输到远程客户机计算机。如所描述的,远程服务器计算机1000的客机分区1010、主机分区1020、以及底层资源之间的反复数据遍历可能需要密集的操作,并消耗大量存储器和CPU资源,这可增加对远程客户机计算机的数据递送延迟。图11示出了消除远程服务器计算机1100的资源之间的反复数据遍历的替代体系结构。图11描绘了在计算服务器1110中保留管理与远程客户机计算机1130的连接以及使图形服务器1120能够将图形输出数据直接流传输到远程客户机计算机1130的体系结构。远程服务器计算机1100的各实施例可执行参考图7-9的远程服务器计算机700和图10的远程服务器计算机1000所描述的部分或全部组件。远程客户机计算机1130的各实施例可执行参考图I的计算机100、图2的远程客户机计算机210、和图3的远程客户机计算机310所描述的部分或全部组件。远程客户机计算机1130可通过网络(未示出)启动与计算服务器1110的连接1105。连接1105可基于TCPI/IP并且可包括远程桌面会话(诸如RDP7. I)。计算服务器1110可认证与远程客户机计算机1130的连接1105。认证方法可要求在计算服务器1110中设立远程客户机计算机1130的虚拟桌面或会话之前认证远程客户机计算机1130。认证方法可以是例如RDP7. I中可用的网络级认证。另外,计算服务器1110可获取诸如远程客户机计算机1130的IP地址之类的地址。
一旦完成认证并在远程客户机计算机1130与计算服务器1110之间建立连接1105,计算服务器1110就可为远程客户机计算机1130启动在计算服务器1110内运行的远程桌面会话、虚拟机、虚拟机内的桌面会话、或其组合。这样的虚拟机或桌面会话可具体化图2-10的技术。另外,计算服务器1110可初始化图形服务器1120。初始化可包括,例如在图形服务器1120处于非活动状态的情况下恢复或唤醒该图形服务器,以及在计算服务器1110与图形服务器1120之间建立连接1115。连接1115可基于TCP/IP,或可使用虚拟环境中的虚拟机总线。计算服务器1110还可向图形服务器1120提供远程客户机计算机1130地址,并且指示图形服务器1120准备源自远程客户机计算机1130地址的连接请求。计算服务器还可获取图形服务器1120的地址(诸如IP地址),并且可向远程客户机计算机1130提供图形服务器1120地址。一旦图形服务器1120被初始化且远程客户机计算机1130获取了图形服务器1120地址,客户机计算机1130就可经由网络(未示出)启动与图形服务器1120的连接1125。连接1125可以是基于TCP/IP。连接1125还可包括远程桌面会话,诸如RDP7. I。在又一实施例中,如果连接1105和连接1125包括远程桌面会话,则远程桌面会话在连接1105和连接1125上可以是分开的或相同的。 一旦连接1105、1115和1125被建立,则远程客户机计算机1130可向计算服务器1110发送终端用户图形输入,诸如键盘或鼠标输入。计算机服务器可使用图2、6-10的技术来处理图形输入。在一个实施例中,计算服务器1110可将终端用户对图标的键盘敲击或鼠标点击转换成实现应用实例的显示命令以及转换成诸如旋转、翻转、调整大小和绘制之类的显示调用。计算服务器1110可向图形服务器1120发送显示命令和调用数据以供渲染、捕捉和压缩。图形服务器1120可渲染、捕捉和压缩显示命令和调用数据,并且将输出编码成输出图形数据。图形服务器1120可经由连接1125直接向远程客户机计算机1130传输输出图形数据,而不是向计算服务器1110发送输出图形数据。远程客户机计算机1130可解码该输出图形数据以便向终端用户显示。在其中诸如图10的远程服务器计算机1000之类的远程服务器计算机1100被虚拟化的一个实施例中,可将计算服务器1110实现在客机分区上,而将图形服务器1120实现在主机分区上。每一分区可被配置成具有诸如IP地址之类的地址。客机分区或计算机服务器1110的地址可与虚拟NIC相关联。主机分区或图形服务器1120的地址可与虚拟NIC相关联或与远程服务器计算机1100的底层硬件的物理NIC114相关联。计算服务器1110可向远程客户机计算机1130提供虚拟机或其中运行的会话。计算服务器1110与图形服务器1120之间的连接1115可包括分区内通信信道,诸如虚拟机总线。远程客户机计算机1130处诸如终端用户输入之类的图形数据可经由连接1105从远程客户机计算机1130被发送到与计算机服务器1110虚拟NIC相关联的计算服务器1110地址。计算服务器1110可将接收到的图形数据处理成上述显示命令和调用数据。计算服务器1110可向图形服务器1120发送经处理的图形数据以供渲染、捕捉和压缩。在一个实施例中,发送经处理的数据可包括将经处理的数据从分配给计算服务器1110的存储器空间传输到分配给图形服务器1120的存储器空间。在另一实施例中,远程服务器计算机1100内的分区可共享存储器空间。在这样的实施例中,将数据从计算服务器1110发送到图形服务器1120可包括路由包含经处理的数据在内的物理空间地址,而不是在两个物理空间之间复制经处理的数据。例如,计算服务器1110和图形服务器1120可利用虚拟机总线内的共享存储器空间以便路由经处理的数据。如上所述,图形服务器1120可渲染、捕捉和压缩经处理的数据。图形服务器1120可将经渲染、捕捉和压缩的数据编码成输出数据,并且可使用图形服务器NIC将输出数据传输到与远程客户机计算机1130相关联的地址。远程客户机计算机1130可解码接收到的输出数据以便向终端用户显示。图12在包括多个远程客户机计算机1130(A_N)、多个计算服务器IllO(A-N)以及多个图形服务器1120 (A-N)的环境中描绘了图11的体系结构的实施例。重要的是注意到,远程客户机计算机、计算服务器、以及图形服务器的数量不需要相等。换言之,远程客户机计算机1130 (A-N)和计算服务器IllO(A-N)、计算服务器IllO(A-N)和图形服务器1120 (A-N)、以及图形服务器1120 (A-N)和远程客户机计算机1130 (A-N)之间的关系可以是 一对一、一对多、或其组合。远程服务器计算机1200的各实施例可执行参考图2的远程服务器计算机220、图3的远程服务器计算机320、图7-10的远程服务器计算机700、图10的远程服务器计算机1000、以及图11的远程服务器计算机1100所描述的全部或部分组件。在一个实施例中,远程服务器计算机1200可包括多个物理计算系统。重定向器和代理程序1240可执行参考图3的重定向器330和代理程序340所描述的部分或全部组件。图形服务器管理器1250可执行参考图7的图形服务器管理器740和图8-9的图形服务器管理器850所描述的部分或全部组件。另外,重定向器和代理程序1240可与计算服务器IllO(A-N)集成。类似地,图形服务器管理器1250可与图形服务器1120 (A-N)集成。在另一实施例中,远程服务器计算机可被虚拟化,并且可执行参考图4-5的计算机系统400、图10的远程服务器计算机1000、以及图11的远程服务器计算机1100所描述的部分或全部组件。在这样的实施例中,计算服务器IllO(A-N)可在一个或多个客机分区上实现,而图形服务器1120 (A-B)可在一个或多个主机分区上实现。重定向器和代理程序1240以及图形服务器管理器1250也可使用上述技术在一个或多个客机分区和/或一个或多个主机分区上被虚拟化。在又一实施例中,远程服务器计算机1200可以是虚拟机和物理机的组合。例如,计算服务器IllO(A-N)和图形服务器1120 (A-N)可以是虚拟化的,而重定向器和代理程序1204以及图形服务器管理器1250可以是物理计算设备。重定向器和代理程序1240可用于在远程客户机计算机1130与计算服务器1110之间建立第一连接。例如,重定向器和代理程序1240可向远程客户机计算机1130分配来自多个计算服务器IllO(A-N)的计算服务器1110和/或其中的会话。由此,重定向器和代理程序1240可提供关于计算服务器IllO(A-N)的可用性的负载平衡技术。一旦分配完成,则所分配的计算服务器1110可认证远程客户机计算机1130。远程客户机计算机1130和所分配的计算服务器1110可建立如上所述的第一连接。例如,第一连接可包括图11的连接1105。所分配的计算服务器1110还可获取远程客户机计算机1130的地址。图形服务器管理器1250可用于在所分配的计算服务器1110与来自多个图形服务器1120(A-N)的图形服务器1120之间建立第二连接。图形服务器管理器1250可执行负载平衡计算,并且可确定图形服务器1120 (A-N)的可用性。因此,图形服务器管理器1250随后可向与所分配的计算机服务器1110的连接分配图形服务器1120。一旦分配完成,则可建立第二连接。例如,第二连接可包括图11的连接1115。所分配的计算服务器1110可包括向图形服务器1120提供远程客户机计算机1130的地址,并且可获取所分配的图形服务器1120地址并将其提供给远程客户机计算机1130。远程客户机计算机1130和所分配的图形服务器1120可使用所获取的远程客户机1130的和所分配的图形服务器1120的地址来建立第三连接。第三连接可包括图11的连接1125。此外,负载平衡计算可在图12的体系结构上执行。例如,在对图形服务器1120 (A-N)进行负载平衡的情况下,当所分配的图形服务器1120不再能够适当地为远程客户机计算机1130提供服务时,计算服务器1110可与可用图形服务器1120建立新连接,并且指示远程客户机计算机1130与可用图形服务器1120建立对应的新连接。远程客户机计算机1130随后可无缝地转移到可用图形服务器1120。另外,在对计算服务器IllO(A-N)进行负载平衡的情况下,当所分配的计算服务器1110不再能够适当地为远程客户机计算机1130提供服务时,可在远程客户机计算机1130与可用计算服务器1120之间以及可用计算 服务器1110与已分配的图形服务器1120之间建立新连接,而远程客户机计算机1130与已分配的图形服务器1120之间的连接可保持不变。诸如虚拟机实时迁移之类的技术可将工作负载从一个计算服务器1110无缝地转移到另一个计算服务器,而图形服务器1120的工作负载可保持不变。在一个实施例中,各技术可用于使一个或多个远程客户机计算机1130能够从各个图形服务器1120接受显示流或图形输出数据。例如,远程客户机计算机1130A可获取来自其他远程客户机计算机1130 (B-N)的准许来查看与其他远程客户机计算机1130 (B-N)相关联的终端用户显示。准许可包括例如,分配给其他远程客户机计算机1130 (B-N)中的每一个的各个图形服务器1120的地址。另外,准许可包括其他远程客户机计算机1130 (B-N)的地址,分配给每一其他远程客户机计算机1130 (B-N)的计算服务器1110的地址,对应的会话ID,用户名,计算服务器1110和图形服务器1120的名称,每一计算服务器1110中的活动会话数量等。远程客户机计算机1130A可使用该准许来与分配给每一其他远程客户机计算机1130 (B-N)的图形服务器1120建立连接。连接可包括图11的连接1125。一旦连接被建立,各个图形服务器1120就可将来自其他远程客户机计算机1130 (B-N)的图形数据输出传输到远程客户机计算机1130A。远程客户机计算机1130A可解码从各个图形服务器1120接收到的图形输出数据,并且可向终端用户显示经解码的数据。例如,远程客户机计算机1130A可以按平铺方式来显示经解码的数据,或者可以允许终端用户可翻过与其他远程客户机计算机1130 (B-N)相关联的屏幕中的每一个。此外,远程客户机计算机1130A可显示该准许中可用的其他信息,诸如用户名、对应的计算服务器1110和图形服务器1120的名称等。在另一实施例中,传输与远程客户机计算机1130Φ-Ν)对应的各个图形输出数据的图形服务器1120可被配置成也向另一远程客户机计算机1130A传输与对应的远程客户机计算机1130 (B-N)有关的各个图形输出数据及其他信息。由此,远程客户机计算机1130A可显示与远程客户机计算机1130 (B-N)有关的屏幕及信息。图13描绘了用于处理要传送到客户机的图形数据的示例性操作过程,该过程包括操作1300、1310、1320、1330、1340、1350和1360。操作1300开始该操作过程,且操作1310示出在远程客户机与计算服务器之间建立第一连接。第一连接可包括图11的连接1105。操作1320示出在计算服务器与图形服务器之间建立第二连接。第二连接可包括图11的连接1115。操作1330示出在远程客户机与图形服务器之间建立第三连接。第三连接可包括图11的连接1125。操作1340示出由计算服务器经由第一连接从远程客户机接收图形数据。接收到的图形数据可包括例如用户图形输入,诸如与远程客户机相关联的键盘敲击或鼠标点击。操作1350示出了处理接收到的图形数据,并且经由第二连接向图形服务器发送经处理的图形数据。对接收到的图形数据的处理可包括计算服务器将接收到的图形数据转换成显示命令和调用。操作1360示出了渲染、捕捉、压缩该经处理的图形数据,并经由第三连接将处理后的图形数据传输到远程客户机。图14描绘了如上所述用于处理传送到客户机计算机的图形数据的示例性系统。系统1400包括处理器1410和存储器1420。在一实施例中,处理器1410可被实现成图I中的逻辑处理单元102,而存储器1420可被实现成图I中的系统存储器22的组件中的某些或全部。存储器1420进一步包括被配置成使系统处理要传送到远程客户机的图形数据的计算机指令。框1422示出在远程客户机与计算服务器之间建立第一连接。框1424示出在计算服务器与图形服务器之间建立第二连接。框1426示出在远程客户机与图形服务器 之间建立第三连接。框1428示出由计算服务器经由第一连接从远程客户机接收图形数据。框1430示出处理接收到的图形数据,并且经由第二连接向图形服务器发送经处理的图形数据。框1432示出渲染、捕捉、压缩该经处理的图形数据,并经由第三连接将处理后的图形数据传输到远程客户机。上文所提及的方面中的任何一个方面都可以以方法、系统、计算机可读介质或任何类型的产品来实现。上述详细描述通过示例和/或操作图阐明了系统和/或过程的各种实施例。就这些框图和/或示例包含一个或多个功能和/或操作而言,本领域技术人员将理解,这些框图或示例中的每一功能和/或操作都可由各种各样的硬件、软件、固件、或实际上其任意组合来单独地和/或共同地实现。应该理解,此处描述的各种技术可以结合硬件或软件,或在适当时结合两者的组合来实现。因此,本公开的方法和装置或其某些方面或部分,可以采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其它机器可读存储介质等有形介质中的程序代码(S卩,指令)的形式,其中,当程序代码被加载至诸如计算机等机器并由其运行时,该机器成为用于实现本公开的装置。在程序代码在可编程计算机上执行的情况下,计算设备通常包括处理器、该处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。一个或多个程序可以例如,通过使用应用编程接口(API)、可重用控件等来实现或利用结合本公开所描述的过程。这样的程序优选地用高级过程语言或面向对象编程语言来实现,以与计算机系统通信。然而,如果需要,该程序可以用汇编语言或机器语言来实现。在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。尽管具体地参考其优选实施例来示出并描述了本发明,但本领域的技术人员可以理解,可以作出形式和细节上的各种改变而不脱离所附权利要求书中所述的本发明的范围。此外,尽管本发明的各元素可以用单数来描述或要求保护,但构想了复数,除非明确地规定了限于单数。
权利要求
1.一种用于处理数据的系统,包括 至少一个计算设备,被配置成至少 建立与至少一个客户机设备和至少一个图形计算设备的连接; 从所述至少一个客户机设备接收数据; 处理从所述客户机设备接收到的数据;以及 将经处理的数据发送到所述至少一个图形计算设备,所述经处理的数据被用于生成由所述至少一个图形计算设备发送到所述客户机设备的图形数据。
2.如权利要求I所述的系统,其特征在于,所述至少一个计算设备在至少一个虚拟机中被实例化。
3.如权利要求I所述的系统,其特征在于,所述至少一个图形设备在至少一个虚拟化机器上的至少一个分区内被实例化。
4.如权利要求I所述的系统,其特征在于,建立与所述至少一个客户机设备和所述至少一个图形计算设备的连接包括对所述至少一个计算设备和所述至少一个图形计算设备进行负载平衡。
5.如权利要求I所述的系统,其特征在于,所述至少一个图形计算设备中的一个或多个图形计算设备被配置成向单个客户机设备发送与多个客户机设备对应的图形数据。
6.一种用于处理图形数据的方法,包括 在多个计算设备与多个客户机设备之间建立连接,以及在所述多个计算设备与多个图形设备之间建立连接; 由所述多个计算设备从所述多个客户机设备接收数据; 处理接收到的数据; 将经处理的数据发送到所述多个图形设备;以及 指示所述多个图形设备使用所述经处理的数据来生成图形数据,并且将所生成的图形数据发送到所述多个客户机设备。
7.如权利要求6所述的方法,其特征在于,所述多个计算设备在多个虚拟机中被实例化,而所述多个图形设备在与所述多个计算设备的相同的多个物理计算设备上的多个分区内被实例化。
8.如权利要求7所述的方法,其特征在于,所述多个计算设备正在执行与所述多个客户机设备的多个远程桌面会话,并且所述图形数据包括对用户远程桌面会话的至少一部分的图形表示。
9.如权利要求6所述的方法,其特征在于,在所述多个计算设备和所述多个客户机设备之间建立连接以及在所述多个计算设备与所述多个图形设备之间建立连接包括获取多个客户机设备地址并将所获取的多个客户机地址提供给所述多个图形设备,获取多个图形设备地址并将所获取的多个图形设备地址提供给所述多个客户机设备,以及指示所述多个客户机设备和所述多个图形设备使用所提供的地址来建立连接。
10.一种其上存储有指令的计算机可读存储介质,所述指令在由一个或多个处理器执行时使得所述一个或多个处理器执行以下步骤 在多个计算设备与多个远程客户机计算机之间建立连接,以及在所述多个计算设备与多个图形计算设备之间建立连接;由所述多个计算设备从所述多个客户机计算机接收数据; 处理接收到的数据; 将经处理的数据发送到所述多个图形计算设备;以及 指示所述多个图形计算设备使用所述经处理的数据来生成图形数据,并且将所生成的图形数据发送到所述多个远程客户机计算机。
全文摘要
本发明公开了从多个服务器向客户机递送单个终端用户体验。公开了用于在远程桌面环境中创建多端口的客户机服务器连接的方法、系统和计算机可读介质。在一个实施例中,多客户机服务器连接可将客户机-服务器连接与客户机-服务器输入从自服务器递送到客户机的图形中去耦。这一实施例提供了更高的服务器性能,并且允许动态的服务器资源管理。该多客户机服务器连接可在虚拟环境中实现、或在各物理机之间实现,在各物理机中,一组物理机接收来自客户机的图形请求,而另一组物理机生成数据并向客户机传送显示数据。
文档编号H04L29/08GK102946409SQ201210388410
公开日2013年2月27日 申请日期2012年10月12日 优先权日2011年10月14日
发明者P·查克拉博蒂, B·波斯特 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1