算法执行输出高速缓存的制作方法

文档序号:7603659阅读:145来源:国知局
专利名称:算法执行输出高速缓存的制作方法
技术领域
本申请涉及远程呈现会话服务,尤其涉及使用算法执行输出高速缓存的远程呈现会话服务。相关申请的交叉引用本申请根据35U. S.C. § 119(e)要求在2010年3月2日提交的美国临时专利申请 61/275,700的权益,其内容通过整体引用结合于此。
背景技术
虽然计算机曾经一度是孤立的并且与其他计算机具有最小的或很少的交互,但是现在计算机通过局域网(LAN)、广域网(WAN)、拨号连接等等与各种各样的其他计算机进行交互。随着因特网的广泛增长,计算机之间的连接已经变得更加重要并且已经开发了许多新的应用程序和技术。大规模网络的增长以及低成本个人计算机的广泛可用性已经从根本上改变了许多人工作、交互、通信、以及玩乐的方式。联网的一种日益增加的流行形式一般被称为远程呈现,其能使用诸如远程桌面协议(RDP)、独立计算体系结构(ICA)、以及其他协议等协议与远程客户机共享桌面和其他应用程序。这样的计算系统通常将来自客户机的键盘按压和鼠标点击或选择传送到服务器, 通过网络连接(例如,因特网)将屏幕更新转播回其他方向。由此,当实际上客户机设备仅仅被发送如在服务器方上出现的应用的屏幕截图时,用户具有好像他们的机器正在本地地执行应用的体验。远程呈现会话服务器可以与多个客户机进行并发远程呈现会话。这些多个客户机可以是每个发送相同数据。例如,在多个客户机会话欲显示同一屏幕保护程序(例如,带有静态徽标的黑色)的情形中。为了将该图像数据发送到每一个客户机,需要服务器为每一个客户机会话独立地编码该图形数据,导致使用服务器处理资源来执行冗余任务。

发明内容
因此,减少服务器处理资源的冗余使用的数量将是一种进步。与多个客户机进行并发远程呈现会话的远程呈现会话服务器,为要发给客户机的每个图像生成一签名。该远程呈现服务器还维持一包括签名和已压缩图像对的签名表。每个签名和已压缩图像对对应一个图像。也就说,签名是从一图像中生成的,而已压缩图像是从同一图像中生成的。远程呈现会话服务器对照该签名表检查签名。在远程呈现会话服务器确定在该签名和签名表中的一签名之间有匹配的情形中,它向客户机发送在生成该匹配的签名表中的对应于该签名的已压缩图像。这样做的时候,远程呈现会话服务器可以避免冗余地压缩该图像。在远程呈现会话服务器确定在该签名和签名表中的签名之间没有匹配的情形中, 它压缩该图像,并将包括该签名和所得的压缩图像的对存储在签名表中。这样做的时候,远程呈现会话服务器可以避免将来它如果再次遇到那图像时进行冗余的工作。远程呈现会话服务器向客户机发送已压缩图像。
当在此揭示的主实施例引用将这些技术应用到要被跨并行远程呈现会话发送的图像时,本领域技术人员可以理解这些技术可以被更宽地应用到其中服务器正发送必须在发送到多个客户机之前被处理的数据的情景,不管那些客户机会话是否是并行的。可以进一步理解,这些技术也可以被应用到更一般的情景,其中可能相同的数据被计算设备上的多个组件处理,并且处理那数据的输出可以被签名,且被该多个组件访问。本领域技术人员将理解,本发明的一个或多个方面可包括但不限于用于实现本发明的本文所述方面的电路和/或编程;该电路和/或编程实质上可以是被配置成实现本文所述方面的硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。以上是概述,并且因此必然包含细节的简化、一般化及省略。本领域技术人员将明白,本概述只是说明性的并且决不旨在是限制性的。


参考附图来进一步描述用于算法执行输出高速缓存的系统、方法和计算机可读介质,附图中图1示出了可在其中体现了在此描述的技术的示例性通用计算环境。图2描绘其中可实现本公开的各方面的示例远程呈现会话服务器。图3示出了算法执行输出高速缓存的示例操作过程。图4A描述了在不使用算法执行输出高速缓存进行操作的服务器上的多个远程呈现会话进程。图4B描述了在使用算法执行输出高速缓存进行操作的服务器上的多个远程呈现会话进程。
具体实施例方式图1是在其中可实现在此描述的技术的通用计算设备的框图。计算系统环境120 只是合适的计算环境的一个示例,并且不旨在对所公开的主题的使用范围或功能提出任何限制。也不应该将计算环境120解释为对示例性操作环境120中示出的任一组件或其组合有任何依赖性或要求。在某些实施方式中,所描绘的各种计算元素可包括被配置成实例化本公开的各具体方面的电路。例如,本公开中使用的术语电路可包括被配置成执行固件或开关的功能的专用硬件组件。在其他示例实施方式中,术语电路可包括由实施可用于执行功能的逻辑的软件指令配置的通用处理单元、存储器等。在电路包括硬件与软件组合的示例实施方式中,实现者可编写实施逻辑的源代码且该源代码可被编译成可由通用处理单元处理的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件、软件或硬件/软件组合之间几乎没有差别的地步,因而选择硬件或是软件来实现具体功能是留给实现者的设计选择。更具体地,本领域技术人员可以明白软件进程可被变换成等价的硬件结构,而硬件结构本身可被变换成等价的软件进程。因此,对于硬件实现还是软件实现的选择是设计选择并留给实现者。计算机141通常包括各种计算机可读介质。计算机可读介质可以是可由计算机 141访问的任何可用介质,并且包括易失性与非易失性介质、可移动与不可移动介质两者。 系统存储器22包括易失性和/或非易失性存储器形式的计算机可读存储介质,如只读存储器(ROM) M和随机存取存储器(RAM) 25。基本输入/输出系统沈¢10 包括如在启动时帮助在计算机141内的元件之间传输信息的基本例程,它通常储存在ROM M中。RAM 25通常包含处理单元21可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图1示出操作系统35、应用程序36、其他程序模块37和程序数据38。计算机141还可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图1示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器 27,从可移动、非易失性磁盘四中读取或向其写入的磁盘驱动器28,以及从诸如⑶ROM或其他光学介质等可移动、非易失性光盘31中读取或向其写入的光盘驱动器30。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器27 通常由诸如接口 32等不可移动存储器接口连接至系统总线23,而磁盘驱动器28和光盘驱动器30通常通过诸如接口 33和34等可移动存储器接口连接至系统总线23。以上讨论并在图1中示出的驱动器及其相关联的计算机存储介质为计算机141提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。在图1中,例如,硬盘驱动器27被示为存储操作系统35、应用程序36、其他程序模块37和程序数据38。注意,这些组件可以与RAM25中描述的操作系统35、应用程序36、其他程序模块37和程序数据38相同, 也可以与它们不同。至少,他们是不同拷贝。用户可以通过输入设备,诸如键盘40和定点设备42 (通常被称为鼠标、跟踪球或触摸垫),向计算机141输入命令和信息。其他输入设备(未示出)可以包括麦克风、游戏杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其他输入设备通常由耦合至系统总线的用户输入接口 46连接至处理单元21,但也可以由其他接口和总线结构,诸如并行端口、游戏端口或通用串行总线(USB),来连接。监视器47或其他类型的显示设备也经由接口,诸如视频接口 48,连接至系统总线23。除监视器以外,计算机也可以包括其他外围输出设备,诸如扬声器和打印机,它们可以通过输出外围接口 46 连接。计算机141可使用至一个或多个远程计算机,诸如远程计算机49的逻辑连接在网络化环境中操作。远程计算机49可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括以上关于计算机141所描述的许多或所有元件,但在图1 中仅示出了存储器存储设备50,其将应用程序36’存储在介质上。图1中所示的逻辑连接包括局域网(LAN)51和广域网(WAN) 52,但也可以包括其他网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。当在LAN联网环境中使用时,计算机141通过网络接口或适配器53连接至LAN 51。当在WAN联网环境中使用时,计算机141通常包括调制解调器M或用于通过诸如因特网等WAN 52建立通信的其他装置。调制解调器M可以是内置或外置的,它可以经由用户输入接口 46或其他适当的机制连接至系统总线23。在网络化环境中,相对于计算机141所描述的程序模块或其部分可被储存在远程存储器存储设备中。作为示例而非限制,图1示出驻留在存储器设备50上的远程应用程序36’。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。计算机141也可以具有主适配器55,其通过SCSI总线56连接到存储设备62。现在参照图2,其一般描绘其中可实现本公开的各方面的示例环境。本领域技术人员可理解,示出图2所描绘的示例元件是为了提供用于描述本公开的操作框架。因此,在一些实施例中,每个环境的物理布局可取决于不同的实现方案而有所不同。因此,该示例操作框架将仅被视为说明性的且不以任何方式限制权利要求的范围。本领域技术人员还可理解,以下讨论是介绍性的,且图2描绘的元件在由图3描绘的操作过程的讨论内更详细地描述。一般地,图2描绘了可被配置成包括本公开的各方面的服务器环境的高级概览。 参照该图,描绘了服务器204,其可包括配置成实现远程呈现会话服务器的电路,或者在其他实施例中,服务器204可包括配置成支持远程桌面连接的电路。在所描绘的示例中,服务器204可被配置成生成用于连接客户机的一个或多个会话,诸如会话1到N(其中N是大于 2的整数)。简言之,在本公开的示例实施例中,会话一般可包括由配置成与服务器204的内核214交互的多个子系统(例如,软件代码)实现的操作环境。例如,会话可包括实例化诸如桌面窗口之类的用户界面的进程、跟踪该窗口内的鼠标移动的子系统、将图标上的鼠标点击翻译成实现程序实例的命令的子系统等。会话可由服务器204在逐用户基础上生成, 例如在服务器204通过网络连接接收来自客户机201的连接请求时由服务器204生成。一般而言,连接请求首先可由传输逻辑210处理,传输逻辑210例如可由服务器204的电路实现。传输逻辑210在一些实施例中可包括网络适配器、可被配置成接收连接消息并将其转发给引擎212的固件和软件。如图2所示,传输逻辑210在一些实施例中可包括每个会话的协议栈实例。一般而言,每个协议栈实例可被配置成将用户界面输出路由到客户机,以及将从客户机接收到的用户输入路由到与其会话相关联的会话核心M4。继续图2的一般性描述,引擎212在本发明的一些示例实施例中可被配置成处理对会话的请求;确定每个会话的功能;通过为会话分配物理资源集来生成会话;以及实例化会话的协议栈实例。在一些实施例中,引擎212可由能实现上述操作过程中的一部分的专门电路组件来实现。例如,该电路在一些示例实施例中可包括存储器以及配置成执行实现引擎212的代码的处理器。如图2所描绘地,在一些情况下,引擎212可接收连接请求并确定例如许可是可用的,并且可为该请求生成会话。在服务器204是包括远程桌面能力的远程计算机的情形中,引擎212可被配置成响应于连接请求生成会话而不检查许可。如图2 所示,会话管理器216可被配置成接收来自引擎212的消息,并且响应于该消息,会话管理器216可将会话标识符添加到表中;向该会话标识符指派存储器;以及在指派给该会话标识符的存储器中生成系统环境变量和子系统进程实例。如图2所示,会话管理器216可实例化诸如运行时子系统240之类的环境子系统, 该子系统可包括诸如会话核心244之类的内核模式部分。例如,环境子系统在一实施例中被配置成将一些服务子集暴露给应用程序并向操作系统214的内核提供接入点。在示例实施例中,运行时子系统240可控制进程和线程的执行,并且会话核心244可向内核214的执行程序发送请求以向线程分配存储器并调度执行它们的时间。在一实施例中,会话核心244 可包括图形显示界面246 (⑶I)、安全子系统250和输入子系统252。在这些实施例中,输入子系统252可被配置成经由与该会话相关联的协议栈实例接收来自客户机201的用户输入并将该输入传送给合适会话的会话核心对4。用户输入在一些实施例中可包括指示绝对和 /或相对鼠标移动命令、鼠标坐标、鼠标点击、键盘信号、操纵杆移动信号等的信号。例如图标上的鼠标双击的用户输入可被会话核心244接收,并且输入子系统252可被配置成确定图标位于与该双击相关联的坐标处。输入子系统252随后可被配置成向可执行与该图标相关联的应用的进程的运行时子系统240发送通知。除了接收来自客户机201的输入之外,可从应用和/或桌面接收绘制命令并由GDI 246来处理。⑶I 246 —般可包括能生成图形对象绘制命令的进程。⑶1246在该示例实施例中可被配置成将其输出传递给远程显示子系统254,在那里,针对附连到该会话的显示驱动器,命令被格式化。在某些示例实施例中,一个或多个物理显示器可被附连到服务器204, 例如在远程桌面情形中。在这些示例实施例中,远程显示子系统2M可被配置成镜像由远程计算机系统的显示驱动器呈现的绘制命令,并经由与该会话相关联的栈实例将镜像信息传送给客户机201。在服务器204是远程呈现会话服务器的另一示例实施例中,远程显示子系统2M可被配置成包括可不与物理上附连到服务器204的显示器相关联的虚拟显示驱动器,例如服务器204可无头地(headless)运行。远程显示子系统邪4在该实施例中可被配置成接收针对一个或多个虚拟显示器的绘制命令并将它们经由与该会话相关联的栈实例传送给客户机201。在本公开的实施例中,远程显示子系统2M可被配置成确定每个显示驱动器的显示分辨率,例如确定与虚拟显示器相关联的虚拟显示驱动器的显示分辨率或与物理显示器相关联的显示驱动器的显示分辨率;以及经由相关联的协议栈实例将分组路由到客户机201。在一些示例实施例中,会话管理器216可附加地实例化与该会话的会话标识符相关联的可被配置成处理该会话的登入和登出的登录进程的实例。在这些示例实施例中,指示与登录进程相关联的图形用户界面的绘制命令可被传送给客户机201,在那里,客户机 201的用户可向登录屏幕输入账号标识符(例如用户名/ 口令组合)、智能卡标识符、和/ 或生物测定信息。该信息可被传送给服务器204并被路由至引擎212以及会话核心244的安全子系统250。例如,在某些示例实施例中,引擎212可被配置成确定用户账号是否与许可相关联;并且安全子系统250可被配置成生成该会话的安全令牌。图3描述了算法执行输出高速缓存的操作过程的示例。此处揭示的操作过程涉及远程呈现会话实例,但是可以理解它们可以被应用到其他情况,如发明内容中讨论的。操作302描述了确定第一数据的第一签名,该第一数据要被发送给第一客户机。 该第一数据可以包括第一数据集。在一个实施例中,该第一数据包括一图像。该第一数据可以包括一图像,如在远程呈现会话过程中。当远程呈现会话服务器跨远程呈现会话将数据发送给一客户机时,一些数据包括图像——要发送给该客户机的帧。此外,远程呈现会话服务器可以将帧细分成多个瓦片(tile)(诸如,为改善客户机端高速缓存,如果已经向该客户机发送了一瓦片并已经存储了它,则当它被遇见时,不向该客户机再次发送该瓦片,而是通过向客户机发送显示它已高速缓存的该瓦片的指示来节省带宽)。在一个实例中,该第一数据包括远程呈现会话中的瓦片。在一个实例中,该第一数据包括用基于历史的压缩器压缩的数据。也就是,数据元素η可以用一个操作或一个算法来压缩,其将数据元素η作为输入且在此操作下压缩结果为数据元素n-1 (对于数据元素η-1,操作进而将数据元素η-1作为输入且在相同操作或过程下压缩结果为数据元素η-2,以此类推)。在签名表(其包括在诸如图1的RAM25的存储器地址等存储器位置中存储第一数据和它所对应签名的对的表,如以下更详细描述)包括散列表的实施例中,确定第一数据的第一签名包括在该第一数据上执行散列函数。该散列函数的数据接着可以被看作第一签名并插入散列表,作为第一数据的密钥。在一个实例中,操作302还包括确定第一签名和签名表的第二签名抵触,该第二签名对应于第二已压缩数据,并用第一已压缩数据代替该第二已压缩数据。当签名包含比它对应的数据更少的位时,那么一个签名必须对应多个数据成员。给定在签名表中有冲突可能性——当两个共享相同签名的不同的已压缩数据要被存储的情况。在这种情况下,如上所述,可实施最近使用的(MRU)算法,其中签名表中新使用的数据(上述第一已压缩数据)代替老数据(上述第二已压缩数据)时。操作304描述了确定签名表不包括第一签名。当第一数据没有被先前压缩,那么该第一数据将没有被存储在签名表中。因此,如果该第一签名没有被存储在签名表中,那么可以确定该第一数据先前没有被压缩,因此没有高速缓存的第一已压缩数据,并且在被在发送到客户机之前该第一数据将当前被压缩。操作306描述从第一数据确定第一已压缩数据。可以诸如通过对第一数据执行联合图像专家组(JPEG)压缩来产生对应的第一已压缩数据来确定。操作308描述将第一已压缩数据发送到第一客户机。这可以诸如通过远程呈现会话协议跨诸如因特网等通信网络来完成。操作310描述在签名表中存储第一签名和第一已压缩数据。在签名表包括散列表的实例中,第一签名可以包括密钥,且第一已压缩数据可以包括存储在中桶的对应于该密钥的数据。可以存储对,包括用第一算法或进程处理第一数据的结果以及第一签名。本领域技术人员可以理解,这个操作过程不暗示操作的严格顺序,且其各种排列可以被用来实施本技术,可以讨论本操作以提供示例。例如,操作310(服务器侧高速缓存) 发生在操作308(向客户机发送已压缩数据)之前,本技术可以起作用。操作312描述确定第二数据的第二签名,该第二数据要被发送给第二客户机,基于签名表,确定该第二签名匹配第一签名;并向第二客户发送第一已压缩数据。在已高速缓存了第一已压缩数据的情况下,当遇到与第一数据匹配的新数据时,该新数据不需要被压缩,但可以从签名表中检索第一已压缩数据,从而节省了计算资源。例如,可以接收要被发送到其中进行了远程呈现会话的第二客户机的第二数据。 在第一数据由第一远程呈现会话进程始发的实施例中,第二数据可以由第二远程呈现会话进程始发。通过本技术,这两个进程可以共享来自远程呈现会话瓦片化进程的相同输出,该瓦片化过程将要压缩的图像作为输入,并从它产生包含一个或多个瓦片(可能已压缩)的输出,以发送到远程呈现会话中的客户机。那些瓦片接着被高速缓存在第一远程呈现会话进程与其对应客户机之间的客户机侧,从而减少了实现那远程呈现会话的带宽需求。当第一远程呈现会话进程确定客户机已经被发送了一特定瓦片(并因此把它存储在客户机侧高速缓存中),不是再次发送该瓦片,而是向客户机发送从其高速缓存获取该特定瓦片的指示(该指示需要比发送该瓦片更小的带宽,这个技术减少了带宽使用)。返回讨论已此接收到的第二数据,为这个第二数据确定第二签名,并接着可以对照签名表检查该第二签名。在这个操作中,确定第二签名匹配已经存储在签名表中的第一签名。例如,在签名表包括散列表的实例中,这可以通过把第二签名用作签名表的密钥并确定那数据(此处,第一已压缩数据)存在于对应的桶中来实现。由于第一签名和第二签名匹配,那指示了第一数据和第二数据匹配,并且,如果从该第二数据确定了第二已压缩数据,则它将匹配第一已压缩数据。因此,从第二数据产生第二已压缩数据的工作可以被避免,并使用第一已压缩数据(匹配第二已压缩数据),并将其发送到第二客户机。以此方式,已压缩数据的高速缓存可以跨由服务器进行的多个远程呈现会话。在一实例中,一旦确定第二签名匹配第一签名,就可以进行检查以确定第一已压缩数据能匹配第二已压缩数据,且这个签名的匹配不仅仅是(在散列表实施例中)冲突的结果。在实施例中,这包括,基于确定第二签名匹配第一签名,用第二操作(或算法)来处理用第一操作(或算法)处理第一数据的结果。例如,在远程呈现会话上下文中,第一操作可以是瓦片化操作,其把会话中要发送的图像作为输入,并产生包括那些图像的已压缩瓦片(或仅一个这样的已压缩瓦片)的第一数据集。接着第二操作可以是将已压缩诸瓦片传递到远程呈现会话的客户机的操作。在第一签名匹配第二签名的情形中,可以确定用第一操作来处理第一数据集的结果将与用第一操作来处理第二数据集的结果匹配(在该实例中,第二数据集不需要用第一操作来处理,因为第一签名匹配第二签名)。接着,这个第一数据集可以用第二操作来处理,并在发送到当前远程呈现会话的客户机之前,存储在诸如图1的通信地耦合到计算设备的CPU的RAM25的地址的存储器位置。图4A描述了在不使用算法执行输出高速缓存进行操作的服务器上的多个远程呈现会话进程。可以理解,图4A和4B的元素被逻辑地显示,并且不一定意味着每个单独元素必须是服务器的单独元素或组件。服务器402包括远程呈现会话进程4(Ma、图像编码器406a、远程呈现会话传送器 408a、呈现会话进程404b、图像编码器406b、远程呈现会话传送器408b。远程呈现会话进程 404a与客户机计算设备410a进行远程呈现会话,而远程呈现会话进程404b与客户机计算设备410b进行远程呈现会话。服务器402以及客户机计算设备410a和410b的每一个可以包括图1的计算设备141。远程呈现会话进程40 和404b可能向它们各自的客户机410a和410b发送完全相同的图像(例如,全黑屏,或示出缺省壁纸的缺省桌面配置),但是编码器406a和40 两者必须单独编码这些图像,因为它们每一个缺乏充分利用另一个可能已经执行了的进程的途径。这种在编码器之间共享能力的缺乏导致使用服务器处理资源执行冗余工作。图4B描述了在使用算法执行输出高速缓存进行操作的服务器上的多个远程呈现会话进程。在此,当远程呈现会话进程40 向编码器406a发送要被编码的图像时,它首先由高速缓存管理器41 处理。高速缓存管理器41 取得该图像的签名,接着对照签名表414 检查该签名。如果有匹配,则高速缓存管理器41 从签名表414检索对应于该签名的编码图像。如果给定该图像作为输入,则此所检索的编码图像就应该是编码器406a的输出。由于编码器406a的关于该图像的输出是已知的,而无需使用处理器资源来编码该图像,因此该编码图像可以被高速缓存管理器41 发送到远程呈现会话传送器408a,在那里它被传送到客户机410a。这样做节省了处理器资源的使用。可以观察到,所描述的数据流是示例性的,且本领域技术人员可以理解其他实例。 例如,高速缓存管理器41 不需要自己从签名表414检索编码图像,并接着将它发送到远程呈现会话传送器408a,而在一个实例中,可以指令与签名表414相关联的一进程将该编码图像直接发送到远程呈现会话传送器408a。当在签名表中没有该签名的匹配,该图像可以接着被发送到编码器406a来产生编码图像。接着可以将高速缓存管理器41 产生的签名和编码器406a产生的编码图像存储在签名表414中,以使得将来从新图像中发现当对该签名的匹配时,可以通过从签名表 414中获取对应编码图像来节省处理资源。编码器406a也可以将编码图像发送到远程呈现会话传送器408a,后者进而根据远程呈现会话协议将其发送到410a。远程呈现会话进程404b与远程呈现会话进程40 操作类似。由于远程呈现会话进程40 与远程呈现会话进程404b两者共享签名表414,在图像被编码器406a或406b编码的情形中,编码图像对远程呈现会话进程404b与远程呈现会话进程40 两个的流都可用。通过这种签名表414的共享,在服务的远程呈现会话之间避免了冗余编码。结论尽管已经结合各附图所示的较佳方面描述了本发明,但要理解,可使用其它相似方面或者可对所述方面进行修改或添加来执行本发明的相同功能而不脱离本发明。因此, 本发明应当不限于任何单个方面,而应按照所附权利要求书的广度与范围来解释。例如,本文描述的各种过程可用硬件或软件、或两者的组合来实现。因此,所公开的各实施例的方法和装置或其某些方面或部分可采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其他机器可读存储介质等有形介质中的程序代码(即,指令)的形式。当程序代码被加载到诸如计算机等机器并由其执行时,该机器变为被配置成实施所公开的各实施例的装置。除了此处明确阐述的具体实现之外,考虑此处所公开的说明书,其它方面和实现将对本领域的技术人员是显而易见的。说明书和所示实现旨在仅被认为是示例。
权利要求
1.一种用于在计算机上处理多个输入数据集中的数据的方法,包括 为第一数据集确定第一签名(302);确定签名表不包括所述第一签名;用第一操作处理所述第一数据集以产生第一结果(306);将包括所述第一结果和所述第一签名的对存储在存储于第一存储器位置中的签名表 (414)中;用第二操作处理所述第一结果以产生第二结果GOSa); 将所述第二结果存储在第二存储器位置; 为第二数据集Gl2b)确定第二签名;基于确定所述第二签名与所述第一签名匹配,用所述第二操作处理所述第一结果以产生第三结果GOSb);以及将所述第三年结果存储在第三存储器位置。
2.如权利要求1所述的方法,其特征在于,存储用所述第二操作处理所述第一输入数据集的结果包括根据远程呈现会话协议将所述第三结果发送到客户机。
3.如权利要求1所述的方法,其特征在于,所述输入数据集包括远程呈现会话数据。
4.如权利要求1所述的方法,其特征在于,所述输入数据集包括图像。
5.如权利要求1所述的方法,其特征在于,所述输入数据集包括用基于历史的压缩器压缩的数据。
6.如权利要求1所述的方法,其特征在于,确定所述第一数据集的所述第一签名包括在所述第一数据集上执行散列函数。
7.如权利要求1所述的方法,还包括 将所述签名表存储在非易失性存储器中。
8.一种系统,包括 处理器;通信地耦合到所述处理器的存储器(22),承载计算机可读指令,当在所述处理器上执行所述计算机可读指令时,使得所述处理器执行以下操作,包括 为第一数据确定第一签名(302); 确定签名表不包括所述第一签名(304); 将所述第一数据压缩为第一已压缩数据(306); 将所述第一已压缩数据发送到第一客户机(312); 为第二数据确定第二签名(312); 确定所述第二签名与所述第一签名匹配(312);以及将所述第一已压缩数据发送到第二客户机(312);
9.如权利要求8所述的系统,其特征在于,还承载计算机可读指令,当在所述处理器上执行所述计算机可读指令时,使得所述处理器执行以下操作,包括将所述第一签名和已处理的第一输入数据存储到签名表中。
10.如权利要求9所述的系统,其特征在于,还承载计算机可读指令,当在所述处理器上执行计算机可读指令时,使得所述处理器执行以下操作,包括为第二输入数据确定第二签名,所述第二输入数据要被发送到第二客户机; 基于所述签名表,确定所述第二签名与所述第一签名匹配;以及将所述第一已处理数据发送到所述第二客户机。
11.如权利要求8所述的系统,其特征在于,还承载计算机可读指令,当在所述处理器上执行计算机可读指令时,使得所述处理器执行以下操作,包括将所述签名表存储在非易失性存储器中。
12.如权利要求8所述的系统,其特征在于,所述签名表包括散列表,并且为所述第一输入数据确定所述第一签名包括在所述第一输入数据上执行散列函数。
13.如权利要求13所述的系统,其特征在于,还承载计算机可读指令,当在所述处理器上执行计算机可读指令时,使得所述处理器执行以下操作,包括确定所述第一签名和签名表的第二签名抵触,所述第二签名对应于第二已压缩数据;以及用所述第一已压缩数据代替所述第二已压缩数据。
14.如权利要求8所述的系统,其特征在于,所述第一输入数据包括图像。
全文摘要
揭示了算法执行输出高速缓存的技术。与多个客户机进行并发远程呈现会话的远程呈现会话服务器,为要发给客户机的每个图像生成一签名。该远程呈现服务器还维持一包括签名对和已压缩图像的签名表。每个签名和已压缩图像对对应于输入数据(即,签名从图像生成,已压缩图像从相同图像生成)。远程呈现会话服务器对照该签名表检查签名。在该远程呈现会话服务器确定在该签名和签名表中的一签名之间有匹配的情形中,它向客户机发送在生成该匹配的签名表中的对应于该签名的已压缩图像。这样做的时候,远程呈现会话服务器可以避免冗余地压缩第二图像。
文档编号H04L29/06GK102195968SQ20111005694
公开日2011年9月21日 申请日期2011年3月1日 优先权日2010年3月2日
发明者S·戈尔, W·R·施迈德 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1