用于支持远程同步设备的系统和方法

文档序号:7738684阅读:123来源:国知局
专利名称:用于支持远程同步设备的系统和方法
技术领域
本发明一般涉及用于使附连到第一计算机主机的外围设备可访问正运行在远离所述第一计算机主机的第二计算机主机上的资源的技术。
背景技术
存在使在本地计算机处的用户能够通过计算机网络来访问和共享远程计算机(例如,中央服务器)的桌面的协议。一种此类协议是通过网络连接提供远程显示和输入能力的远程桌面协议(“RDP”),如由微软公司所提供的。另一种可在这种情况下使用的协议是来自惠普公司(Hewlett Packard Co.)的远程图形软件(“RGS”)协议。RGS被设计成利用远程计算机的计算机和图形资源以传递在本地计算机处的交互远程访问。远程计算机的桌面视频数据被通过网络传输到本地计算机,其在本地计算机处的窗口中本地地显示所述桌面视频数据。RGS捕获本地计算机处的用户键盘输入和鼠标输入,并且将键盘输入和鼠标输入发送到远程计算机以便通过远程计算机的操作系统、以及通过运行在远程计算机上的应用来处理。RGS还允许从本地计算机将一些外围设备(诸如存储设备)的数据传送到远程计算机。一种普通种类的外围设备是能够生成或接收同步数据的种类的设备(“同步设备”)。同步数据就其本性而言被预期在其创建、传递和消耗中是连续并且实时的。因为与定时相关的信息是由接收及传送同步数据所依照的稳定速率来暗示的,所以必须至少与其被生成一样快地传递同步数据以便其能被按预期使用。例如,当语音数据正被从同步设备传输时,在已传输的数据流中的任何延迟或中断都能够引起将在接收器处被可听见地注意到的丢失(drop-out)或其它不合常规性。


图1是图示了根据发明的优选实施例的、用于支持远程同步数据设备的系统的方框图。图2是图示了高时延IO事务处理的部件的方框图。图3是图示了根据发明的优选实施例的低时延IO事务处理的部件的方框图。图4是图示了根据发明的优选实施例的低时延写事务处理的流程图。图5是图示了高时延读事务处理的流程图。图6是图示了根据发明的优选实施例的、支持低时延读事务处理的处理步骤的流程图。图7是图示了根据发明的优选实施例的低时延读事务处理的流程图。图8是图示了根据发明的优选实施例的、用于激活推测性读功能的方法的状态图。
具体实施方式
图1图示了根据发明的优选实施例的、用于支持远程同步数据设备的系统100。系统100包括第一和第二不同的计算机主机102、104。主机102、104中的每一个都包含虚拟内插器逻辑106、108、发送/接收逻辑110、112和至少一部分设备驱动堆栈114、116。发送/ 接收逻辑110、112被配置成经由网络118在彼此间传送分组。分组表示传递在主机102处的用户级应用120与主机104处的外围设备122之间的命令和数据。虚拟内插器逻辑106 被配置成将发送/接收逻辑110与主机102中的至少部分设备驱动堆栈114进行对接。类似地,在主机104中,虚拟内插器逻辑108被配置成将发送/接收逻辑112与至少部分设备驱动堆栈116进行对接。虚拟内插器逻辑106可以包括推测性写完成逻辑124,并且虚拟内插器逻辑108可以包括推测性读逻辑126。(将在下文中对推测性写完成逻辑IM和推测性读逻辑126的行为进行更详细的讨论。)优选地,主机102包括可由发送/接收逻辑110访问的缓冲器128。同样地,主机102、104中的每一个都包括一些用于物理上与网络118进行对接的装置。例如,主机102、104中的每一个都可以包括网络接口卡(“NIC”)130、132。类似地,主机104将优选地包括一些用于与外围设备122进行连接的装置,诸如通过通用串行总线(“USB”)主机控制器134。在某些实施例中,缓冲器152可以位于主机104中。在其它实施例中,缓冲器156 可以位于与主机102、104不同但是以某种方式(诸如经由网络118)连接到主机102、104的主机154中。在主机102、104、154内部的操作环境无需相同。例如,任何一个主机都可以使用Microsoft Windows操作系统或Linux操作系统或一些其它类型的操作系统。依靠主机环境,应用120可以通过应用编程接口(“API”)136与至少部分设备驱动堆栈114通信, 其反过来利用由内核子系统和输入/输出(“10”)管理器138所输出的功能。可选择地, 主机102还可以包括下部(lower)设备驱动堆栈140和诸如USB主机控制器142等的装置以用于连接到其自已的可选的外围设备。还可选择地,主机104可以包括经由可选的 API 148与可选的内核子系统和IO管理器150与可选的应用146进行通信的上部(upper) 设备驱动堆栈144。网络118可以是任何种类的网络,诸如有线或无线局域网络、内部网络(intranetwork)、因特网或这些或其它种类的网络的任意组合。例如,网络118可以是 TCP/IP或UDP/IP网络。并且至少部分设备驱动堆栈114、116可以是任何种类的设备驱动堆栈。在一个实施例中,它们分别可以是上部和下部USB设备驱动堆栈。在Microsoft Windows Driver Foundation的符号集中,上部USB设备驱动堆栈的示例将是功能驱动器对象(“FD0”),并且下部USB设备驱动堆栈的示例将是物理设备对象(“PD0”)。为了理解系统100如何能够被用来产生低时延同步数据事务处理,首先理解高时延10事务处理的时间组成部分(component)将是有用的。图2图示了该高时延10事务处理200。在步骤202处,应用120生成10请求(例如读或写请求)。在步骤204处,在主机 102的上部设备堆栈中处理这个10请求。例如,内核子系统/10管理器138可以创建对应于该请求的10请求分组(“IRP”)并且可以将该IRP发送到上部设备堆栈114以用于处理。 虚拟内插器106然后将拦截该IRP并且经由发送/接收逻辑110、NIC 130和网络118将表示该10请求的命令和/或数据发送到主机104。后面的步骤对应于网络发送时间206。在接收端,在步骤208处,通过主机104的下部设备堆栈进一步处理表示该10请求的命令和/ 或数据。例如,虚拟内插器108可以访问从发送/接收逻辑112所接收的命令和/或数据并且可以创建适当的IO请求以便提交给下部设备堆栈116。如果该IO请求是读请求,则在步骤210中将需要将结果数据发送回主机102。即使该IO请求是写请求,通常一些形式的信号交换或肯定应答将被从主机104发送回主机102以指示完成该写请求。在步骤212 中,这个结果数据或这个完成信号交换必须由主机102中的设备堆栈来处理。最后,上部设备堆栈114能够通过将结果数据向上传递到应用120或通过以其他方式向内核子系统/10 管理器138指示该IO请求已经被完成来完成该IO请求。对于诸如同步USB设备122等的同步数据设备,这种时延可能是有问题的USB标准规定通常响应于由应用所生成的IO请求,每个事务处理都将由主机控制器发起。而且, 根据USB标准,在同步情况下被传送的数据的每个片段都必须在分别的不同的事务处理 (例如同步IN或OUT事务处理)中加以传送。结果,同步情况看起来像长的一系列不同的 USB事务处理。但是在远程USB实施方式的情况下,这些事务处理中的发起应用被通过类似网络118的网络与发起的主机控制器分离。由此,系列中的每个不同的事务处理通常都将类似高时延事务处理200。然而,在本文中的发明人已经确定即使在远程情况下,实现低时延IO事务处理 300也是可能的。在低时延事务处理300中,在步骤302处应用120生成IO请求。在步骤 304处,该IO请求由主机102中的设备堆栈来处理,如其在高时延事务处理200的步骤204 中那样。但是紧接其后,在低时延事务处理的步骤306中,应用120被通知该IO请求被完成。对于读IO事务处理而言,这意味着响应于步骤306中的读请求将数据传递到应用120。 对于写IO事务处理,这意味着在步骤306中告知应用120写已经被执行,从而使得应用120 然后可以立即开始准备随后的IO请求。现在将与图4-7相关地提供关于实现远程情况下的低时延事务处理300的方式的更多讨论。图4图示了根据本发明的一个优选实施例的低时延写事务处理400,其中外围设备122是USB设备。在其它实施例中,设备122可以是非USB设备。在步骤402中,应用 120可以发出同步写请求。(通常但不是必须地,从应用120的角度来看,同步写请求将是非阻塞(non-blocking)系统调用。)在步骤404中,内核子系统/10管理器138可以创建对应于写请求的IRP并且可以将该IRP发送到上部USB设备堆栈114。在步骤406中,虚拟内插器106可以拦截该IRP并且将对应的写数据传送到发送/接收逻辑110。在步骤408中, 紧接在写数据已经被安全地传送到发送/接收逻辑110之后,虚拟内插器106然后可以向上部USB设备堆栈114指示IO请求被完成,并且设备堆栈114可以将该完成状态转达给内核子系统/10管理器138。同时,步骤410的行为可以同时地进行。就是说,发送/接收逻辑110可以经由网络118开始将用于所请求的事务处理的写数据发送到主机104。但是在步骤408中所给出的请求完成指示可以在步骤410中数据被实际地传输到主机104之前进行。后面的功能可以由虚拟内插器106中的推测性写完成逻辑IM来实现。按这种方式, 内核子系统/10管理器138无需在事务处理的组成部分208-212期间保持资源(例如挂起 IRP资源)。作为替代,根据本发明的实施例,可以在时间上更早地释放那些资源。结果,从设备122的角度来看,在一系列同步写事务处理中的各写事务处理之间的延迟和中断可以在具有有益影响的情况下减少。图6-7图示了根据本发明的一个优选实施例的(低时延)推测性同步USB读事务处理模式。在某些实施例中,这个模式可以响应于检测到一个或多个(高时延)实际同步USB读事务处理已经发生在主机102与104之间而被激活。在图5中的500处图示了该高时延实际同步USB读事务处理。特别地,在该事务处理中,在步骤502中应用120生成同步读请求。在步骤504中,内核子系统/10管理器138创建对应的IRP并且将该IRP发送到上部 USB设备堆栈114。在步骤506中,虚拟内插器106拦截该IRP并且将读请求指示给发送/ 接收逻辑110。在步骤508中,发送/接收逻辑110将读请求传送给主机104。在步骤510 中,在主机104中的虚拟内插器108生成同步读请求至下部USB设备堆栈116。当设备堆栈116以结果数据回应时,在步骤512中虚拟内插器108经由发送/接收逻辑112将来自读的结果发送到主机102。在步骤514中,在主机102中的虚拟内插器106然后通过将结果发送到上部USB设备堆栈114来完成读请求,所述上部USB设备堆栈114转而经由内核子系统/10管理器138将结果发送到应用120。图6图示了可以发生在主机102、104中、以在推测性读模式是有效的时支持图7 中所图示的低时延读事务处理700的行为600。在图6的步骤602和604中,虚拟内插器 108中的推测性读逻辑1 可以开始重复地将推测性同步读请求发出至下部USB设备堆栈 116。虚拟内插器108经由发送/接收逻辑112将这些推测性读的结果发送到主机102。注意,在步骤602中所发出的推测性读请求可以自主地发生在主机104中,即使在没有正被呈现在主机104中的、来自主机102的任何未得到满足的读请求的情况下也是如此。在步骤 606中,在主机102中的发送/接收逻辑110可以将来自主机104的推测性读数据存储在缓冲器128中。缓冲器1 可以采取任何形式。在一个实施例中,缓冲器1 可以是环形缓冲器,其中如果缓冲器128已经变满并且最先被缓冲的数据还没有被诸如应用120等用户进程消耗,则最先的缓冲器数据以环形方式被更新的数据覆盖。作为替换,还可以使用其它非环形缓冲器实施方式。图7图示了通过图6的行为而变得可能的低时延读事务处理700。在步骤702中, 应用120发出同步读请求。在步骤704中,内核子系统/10管理器138创建对应的IRP并且将该IRP发送到上部USB设备堆栈114。在步骤706中,虚拟内插器106拦截该IRP并且将读请求传送到发送/接收逻辑110。在步骤708中,发送/接收逻辑110使用其从缓冲器 1 检索的数据来立即满足该读请求,而不用将读请求传输到主机104。在步骤710中,虚拟内插器106通过将结果发送到上部USB设备堆栈114来完成该读请求,所述上部USB设备堆栈114经由内核子系统/10管理器138将结果转发给应用120。按这种方式,即使在远程情况下,也实现类似事务处理300的低时延读事务处理。在另一类别的实施例中,除了主机102中的缓冲器1 之外或者代替主机102中的缓冲器128,可以将缓冲器152设置在主机104中。在此类实施例中,行为600可以被修改成如下。在步骤604中,虚拟内插器108可以将推测性读数据存储在缓冲器152中,并且仅在稍后就将该数据发送到主机102。在这些实施例中,响应于来自主机102对数据的请求可以进行数据到主机102的发送。(可相应地修改步骤708,从而使得所述请求由主机104 中的缓冲器152来加以满足。)按这种方式,可以消除在全部的事务处理中的与步骤208相关联的时延。在又一类别的实施例中,缓冲器156可以设置在第三主机154中。在此类实施例中,行为600和700可以被修改为如下。在步骤604中,虚拟内插器108可以将推测性读数据发送到主机154中的缓冲器156,并且主机154因此在步骤608中进行该缓冲。然后,在步骤708中,发送/接收逻辑110通过将读请求传输到主机巧4来由主机巧4上的缓冲器156满足实际同步读请求。在这些实施例中,主机102无需将实际的读请求发送到主机 104。要知道,此类实施例在主机102与巧4之间的网络连接快于主机102与104之间的网络连接的情况下可能是最有用的。在那些情况下,可以如在先前的示例中那样消除与步骤 208相关联的时延,而且从正被主机102所请求的IO事务处理的角度来看,可以减少与步骤 206和210相关联的时延。图8是图示了若干方法800的状态图,通过这些方法,上文所描述的推测性读功能中的任一个都可以在本发明的优选实施例中被激活。假定系统100处于状态802中,从而使得推测性读功能未被激活。系统100然后可以在主机中的逻辑检测到一个或多个实际的同步读请求已经被发送到主机104之后进入其中推测性读功能被激活的状态804中。(见转变806)。同样地,系统100可以在主机中的逻辑检测到已经从主机102发送到设备122 的特定预定模式的写和读时进入状态804。(见转变808)。此外,系统100可以在主机中的逻辑检测到已经从主机102发送到设备122的特定预定模式的只写时进入状态804。(见转变810)。要知道,当一系列同步读代表性地跟着某可预测的配置行为时,转变808和810将是最有用的。例如,主机102可以代表性地在发起一系列同步数据读之前查询外围设备122 以得到状态或能力信息或其它特性。它可以使用一个或多个读事务处理来这么做,而且还可以使用一个或多个写事务处理将配置命令发至外围设备122。主机中的逻辑可以检查此类读和写以(例如)寻找通常是在外围设备上的一系列同步数据读事务处理的前奏的对USB 设备中的某些端点(诸如控制端点)的访问。应当理解的是,采用推测性读功能的本发明的实施例无需实现所有转变806-810以使有效,而是可以作为替代不实现转变或仅实现转变中的一个或两个。应当注意的是,上文所描述的逻辑无需如所图示的那样在离散的部件中加以实现。例如,虚拟内插器106、推测性写完成逻辑124、发送/接收逻辑110以及缓冲器128中的任一个或全部都可以在同等效果的情况下被整体地实现。并且虚拟内插器108、推测性读逻辑126、发送/接收逻辑112和缓冲器152中的任一个或全部都可以在同等效果的情况下被整体地实现。在此类实施例中,在权利要求中所描述的任何离散的部件之间的行为和连接、在本文中的书面描述和附图应该作为替代被归于整体地成形的并且等效的逻辑部件。除了上文所描述的创造性的逻辑以外,主机102、104、154中的剩余部分可以是常规的,并可以采取任何形式,并且主机102、104、巧4无需相同。例如,任一主机可以是服务器计算机、台式计算机、膝上型计算机、嵌入式计算机、移动计算机或通常依照上述描述适当地配置的任何其它种类的计算设备。上文所描述的所有逻辑都可以以硬件、软件、固件或其任何组合来加以实现。例如,逻辑中的任一个或全部都可以采取存储在计算机可读存储介质上的指令的形式,所述指令在由计算机执行时使计算机执行该逻辑。该计算机可读存储介质可以采取现在已知的或仍待开发的任何常规的形式,包括(例如)光盘或磁盘、磁带、固态静态随机存取存储器或动态随机存取存储器、固态只读存储器、闪速存储器等等。虽然已经参考其优选实施例对本发明进行了详细的描述,但是所描述的实施例是通过举例的方式而非通过限制的方式被提供的。本领域中熟练的且参考了本说明书的技术人员将理解的是,在不偏离如由随附权利要求限定的本发明的精神和范围的情况下,可以在所描述的实施例的形式和细节方面作出各种变化。
权利要求
1.一种系统,包括第一和第二计算机主机,其分别具有第一和第二虚拟内插器逻辑、第一和第二发送/ 接收逻辑以及其中的第一和第二至少部分设备驱动堆栈;其中所述第一和第二发送/接收逻辑被配置成经由网络在彼此之间传送分组,所述分组表示在所述第一主机处的用户级应用与所述第二主机处的外围设备之间传递的命令和数据;所述第一和第二虚拟内插器逻辑被配置成将所述第一和第二发送/接收逻辑对接到它们各自的主机内的所述第一和第二至少部分设备驱动堆栈;以及所述系统包括选自下述组中的至少一个配置在所述第一虚拟内插器逻辑中的推测性写完成功能和在所述第二虚拟内插器逻辑中的推测性读功能。
2.根据权利要求1所述的系统,其中所述推测性写完成功能包括用于接收来自所述第一至少部分设备驱动堆栈的同步写请求的内核表示的逻辑;用于将所述同步写请求传送到所述第一发送/接收逻辑以便传输到所述第二主机的逻辑;以及用于即使所述同步写请求实际上尚未被传输到所述第二主机也向所述第一至少部分设备驱动堆栈指示所述同步写请求已经被完成的逻辑。
3.根据权利要求1所述的系统,其中所述推测性读功能包括用于重复地将推测性同步读请求发至所述第二至少部分设备驱动堆栈的逻辑;和用于将来自所述推测性同步读请求的结果传送到所述第二发送/接收逻辑以便传输到另一主机的逻辑。
4.根据权利要求3所述的系统,进一步包括在所述第一主机中的、用于缓冲从所述第二主机接收的所述推测性同步读请求的结果的缓冲器;和在所述第一主机中的、用于在不将所述实际的同步读请求传输到所述第二主机的情况下由所述缓冲器满足通过所述第一至少部分设备驱动堆栈所生成的实际的同步读请求的逻辑。
5.根据权利要求3所述的系统,进一步包括在所述第二主机中的、用于缓冲所述推测性同步读请求的结果的缓冲器;和在所述第一主机中的、用于由所述第二主机中的所述缓冲器满足通过所述第一至少部分设备驱动堆栈所生成的实际的同步读请求的逻辑。
6.根据权利要求3所述的系统,进一步包括在第三主机中的、用于缓冲所述推测性同步读请求的结果的缓冲器;和在所述第一主机中的、用于在不将所述实际的同步读请求传输到所述第二主机的情况下由所述第三主机中的所述缓冲器满足通过所述第一至少部分设备驱动堆栈所生成的实际的同步读请求的逻辑。
7.根据权利要求3所述的系统,其中响应于所述第二主机已经从所述第一主机接收到至少一个实际的同步读请求,用于重复地发出推测性同步读请求的所述逻辑变为有效。
8.根据权利要求3所述的系统,其中响应于已经检测到所述外围设备上的预定模式的写和读,用于重复地发出推测性同步读请求的所述逻辑变为有效。
9.根据权利要求3所述的系统,其中响应于已经检测到所述外围设备上的预定模式的写,用于重复地发出推测性同步读请求的所述逻辑变为有效。
10.根据权利要求1所述的系统,其中 所述外围设备是USB设备。
11.一种用于支持远程同步数据设备的方法,包括在所述数据设备被耦合到的第二主机中,重复地将推测性同步读请求发至所述数据设备并且将来自所述推测性请求的结果传输到缓冲器;在其上正在运行用户进程的第一主机中,生成实际的同步读请求;以及在所述第一主机中,由所述缓冲器满足所述实际的同步读请求。
12.根据权利要求11所述的方法,其中 所述缓冲器位于所述第一主机中;并且在不将所述实际的同步读请求传输到所述第二主机的情况下实现满足所述实际的同步读请求。
13.根据权利要求11所述的方法,其中 所述缓冲器位于所述第二主机中。
14.根据权利要求11所述的方法,其中所述缓冲器位于与所述第一和第二主机不同的第三主机中;并且在不将所述实际的同步读请求传输到所述第二主机的情况下实现满足所述实际的同步读请求。
15.一种包含代码的计算机可读存储介质,所述代码当在第一和第二主机计算机上被执行时使所述计算机执行下述方法,所述方法包括在数据设备被耦合到的所述第二主机中,重复地将推测性同步读请求发至所述数据设备并且将来自所述推测性请求的结果传输到其上正在运行用户进程的所述第一主机; 在所述第一主机中,缓冲所述推测性同步读请求的所述结果;以及在所述第一主机中,在不将实际的同步读请求传输到所述第二主机的情况下由所述缓冲器满足所述实际的同步读请求。
全文摘要
提供了一种用于有效地支持远程同步设备的系统和方法。在一个实施例中,第一和第二计算机主机包括第一和第二虚拟内插器逻辑、第一和第二发送/接收逻辑以及其中的第一和第二至少部分设备驱动堆栈。所述第一和第二发送/接收逻辑被配置成在彼此之间传送分组,所述分组表示在所述第一主机处的用户级应用与所述第二主机处的外围设备之间传递的命令和数据。所述第一和第二虚拟内插器逻辑被配置成将所述第一和第二发送/接收逻辑对接到它们各自的主机内的所述第一和第二至少部分设备驱动堆栈。为了实现低时延的事务处理,所述系统包括推测性写完成功能和/或推测性读功能。
文档编号H04L12/16GK102334322SQ200980157556
公开日2012年1月25日 申请日期2009年2月27日 优先权日2009年2月27日
发明者M. 金 J., 奥利诺 R. 申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1