CN1868193A - 通信缓冲管理器和通信缓冲管理方法 - Google Patents
通信缓冲管理器和通信缓冲管理方法 Download PDFInfo
- Publication number
- CN1868193A CN1868193A CNA2004800302256A CN200480030225A CN1868193A CN 1868193 A CN1868193 A CN 1868193A CN A2004800302256 A CNA2004800302256 A CN A2004800302256A CN 200480030225 A CN200480030225 A CN 200480030225A CN 1868193 A CN1868193 A CN 1868193A
- Authority
- CN
- China
- Prior art keywords
- buffer
- standby
- communication
- message
- transmission
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/30—Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W28/00—Network traffic management; Network resource management
- H04W28/02—Traffic management, e.g. flow control or congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W8/00—Network data management
- H04W8/02—Processing of mobility data, e.g. registration information at HLR [Home Location Register] or VLR [Visitor Location Register]; Transfer of mobility data, e.g. between HLR, VLR or external networks
- H04W8/04—Registration at HLR or HSS [Home Subscriber Server]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/28—Timers or timing mechanisms used in protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Computer And Data Communications (AREA)
- Mobile Radio Communication Systems (AREA)
- Small-Scale Networks (AREA)
- Communication Control (AREA)
Abstract
一种用于通信缓冲管理的方法,其在本地主机与远程主机之间传送消息。对套接字、处理缓冲器和备用缓冲器进行分配。处理缓冲器和备用缓冲器对于发送和接收是有区别的。将全局存储池划分为处理缓冲池和备用缓冲池,将备用缓冲池划分为发送池和接收池。将消息存储于处理缓冲器中,但如果存储空间不够(预定的操作状态,POS),则备用缓冲器就存储消息。通信系统和移动设备包括通信管理器,通信管理器将消息存储于处理缓冲器中,如果存在POS,则将消息存储于备用缓冲器中。一种通信缓冲管理器,用于对存储空间进行管理、分配、回收。该通信缓冲管理方法和该通信缓冲管理器都适用于静态存储管理和动态存储管理。
Description
技术领域
本发明涉及电信系统,特别地涉及无线通信设备,并且更特别地涉及存储受限的通信设备。
背景技术
移动无线设备越来越多地通过异构连接(heterogeneous connection)来传送消息,在异构连接中,一个或多个构成链路(constituent link)包括一个公共网络,诸如因特网。因特网是包括无线网络的自治的、互连的、基于分组的网络的松散地构成的国际联合,可以用分级多层的体系结构、服务描述和协议来表示因特网。可以使用称为路由器的分组交换计算机通过网络对通信端点或主机进行互连。为使用因特网来进行通信,主机通常实现来自网际协议组的至少一个层的协议。每个主机和路由器执行一个或多个程序或进程,这些程序或进程执行各种任务,包括信息的传送、处理和显示。一种应用是一种进程,其运行于网际协议组的最高层,并且其可以使用低层传输协议通过彼此不同但彼此互连的网络来提供传输层通信服务。接着,传输协议通常在通信进程之间使用网络协议通过网络来实现消息传送。在最低层,可以对消息进行逻辑的和物理的转换,并将其作为电磁信号或光电信号通过联网的媒体进行传送。
用于因特网上的一组主要的协议是传输控制协议/网际协议(TCP/IP)协议组。传输控制协议(TCP)是在成对的主机计算机进程之间提供可靠的进程间通信(interprocess communication)的面向连接的、端到端的、全双工的传输协议。全双工的协议允许在已连接的主机之间进行并行的通信。可靠的协议是提供发送方和接收方用来直接地或间接地交换关于通信状态(诸如“消息已传送”)的信息的机制的协议。一般称为“确认”或ACK的机制可以包括诸如格式化的响应之类的各种方法,以传送给定协议期望的信息。面向连接的协议即TCP协议通过在数据发送之前在进行通信的主机之间通过网络对双向逻辑连接进行路由而基本上确保了消息传送,并且TCP协议使用称为TCP分段(segment)的格式化数据单元的消息来进行传送。端到端协议通常在通信主机中而不是在中间网关或中间路由器中负责通信完整性、安全性和流量管理。然而,这种端到端协议有可能由于中间链路或中间路由器中的延迟或中断而受到破坏。为增强通信系统的健壮性,路由器通常使用无连接的网络层协议,这种协议独立于其他消息或数据单元而转发每个消息或数据单元。
网际协议(IP)是网络协议,其中每个消息由目的地地址即目的地主机IP地址来标识。IP协议是不能确保端到端的分段传送的无连接(无状态)协议。在通过网络对独立发送的TCP分段进行路由时,可以强制性地使这些TCP分段争用网络资源,并且这些TCP分段在到达目的地主机时有可能已被损坏、复制、次序颠倒,或者根本到达不了目的地主机。因此,诸如应用程序或TCP进程之类的高层进程通常会负责对基于IP协议而传送的分段或消息进行正确的接收、重新排序、修复、确认和请求重发。默认情况下,尽管TCP/IP有可能是可靠的、健壮的通信协议组,但传送期间的实际消息流可能是给定瞬间传送的大量消息中经历了各种变化的突发消息流。在一种极端的情况下,突发消息量有可能暂时超出主机接收和处理消息的能力。在另一种极端的情况下,连续消息之间的实际停顿在消息减少的时段期间有可能错误地指示通信已经停止或者已经终止中间链路。
当应用程序或进程(例如HTTP(超文本传输控制协议))使用TCP/IP类协议与另一主机进行通信时,任一端点上的传输层进程(例如TCP)使用称为TCP套接字的接口与相应的应用程序进行连接,该接口包括IP地址和TCP端口号。IP地址通常与主机相关联,并且TCP端口通常与调用主机传送进程的特定应用程序进程的特定通信功能相关联。通过经由特定的本地主机套接字将消息发往特定的远程主机套接字,本地主机能够通过网络与远程主机进行通信。
通常,当在主机之间建立传输层连接时,为每个主机套接字创建通信缓冲器。通信缓冲器可以用于补偿在消息传送过程中由于通信主机的特性、用于进行通信的方法以及在主机之间插入的网络连接的情况而出现的各种不规则和突发性。缓冲器可以包括多个存储器对象,这些存储器对象可以配置为逻辑数据结构和单元,并部署为在其中存储信息。在通信期间,可以从每个缓冲器中读取消息或向每个缓冲器写入消息。示例性的“缓冲器读取”(BUFFER READ)可以是将数据从缓冲器传送到正在执行的应用程序(进程)的操作,并且示例性的“缓冲器写入”(BUFFER WRITE)可以是将数据从进程传送到缓冲器的操作。
TCP协议是多种通信协议中的一种在网络和通信领域中公知的通信协议,TCP协议试图使用积极的基于确认的控制来确保消息传送。在发送方发起的确认协议中,无论是客户端还是服务器,通信的每个发送端点都保留发送消息的副本,以便进行可能的重发,直到相应的接收端点对特定消息进行了确认时为止。当接收到接收方的确认时,发送方可以释放其中存储了所保留副本的存储器对象。如果没有接收到正确的确认,则发送端点可以重发开始于最近一次正确的确认的时间点的消息。有可能发送例如TCP分段之类的多个消息,每个发送方累积发送消息的副本,直到接收到相应的确认。由于因特网通信的突发性质、对先前所发送的消息所进行的与确认有关的的保留以及主机发送多个消息的能力,存在这样的风险,即任一方主机或两个主机有可能暂时被在给定时间上处理、接收和发送的大量分段淹没(overwhelm)。在通信期间,远程主机可以用作客户端本地主机的服务器,并且反之亦然,其中在通信过程期间角色会发生改变。采用全双工通信,主机可以并行地传送消息。然而,客户端或服务器通常不能一次在内部执行两个事务,例如不能在主机缓冲器中与“缓冲器写入”并行地执行“缓冲器读取”,并且反之亦然。这一点也有可能会促使主机例如在消息量较高的时段期间暂时被淹没。
相对于其他通信系统,移动设备通常是存储受限的,只具有有限的可用通信存储空间。在某些情况下,这种限制有可能给流量控制和缓冲器管理带来不利的影响。例如,存储受限的设备有可能受到诸如缓冲器死锁(buffer deadlock)和缓冲器匮乏(buffer starvation)之类的消息流异常的影响。当正在执行的进程等待有可能永远无法获得的资源时,就会发生缓冲器死锁。与此类似,当在某些环境下,正在执行的进程停止了较长的时间段或永远地等待有可能永远无法获得的资源时,就会发生缓冲器匮乏。某些移动设备应用程序进程配置为推迟执行对通信缓冲器的“缓冲器读取”操作,直到已经完成进程内(in-progress)“缓冲器写入”时为止。在执行这种应用程序进程时,有可能同时在移动设备的发送缓冲器和接收缓冲器中累积所存储的TCP分段,导致可用的通信存储空间耗尽。由于耗尽了存储空间,进程有可能不能完成进程内“缓冲器写入”。同时,应用程序进程等待完成“缓冲器写入”以执行“缓冲器读取”操作。所形成的僵局称为“死锁”。通常,形成死锁一段时间之后,移动设备会停止通信,同时保持TCP连接断开。多种TCP协议和进程可以提供超时机制,在这些超时机制中在数量级为数秒的预定超时时段之后,会关闭移动设备和服务器之间的TCP连接。然而,死锁和TCP超时机制会浪费大量系统资源,因此希望减少死锁和TCP超时的发生。
发明内容
本发明提供通信方法和通信缓冲管理方法,以及通信系统和通信设备,诸如移动通信设备。该通信缓冲管理方法在此构成用于在本地主机与具有远程主机接口的远程主机之间传送消息的方法。这种方法包括:为本地主机接口分配通信控制数据结构;将处理缓冲器分配给该通信控制数据结构以便存储消息;以及将备用缓冲器分配给通信控制结构。通信控制数据结构存储于已分配的存储器对象中,并且对应于本地主机接口。本地主机接口位于本地主机中。
在通信期间,将消息存储于处理缓冲器中。然而,响应于预定的操作状态,可以将备用缓冲器用于存储消息。从位于全局存储池中的未分配的空闲存储器对象中分配通信控制数据结构、处理缓冲器和备用缓冲器,在此之后,在全局存储池中将存储器对象、通信控制数据结构、处理缓冲器和备用缓冲器指定为已分配的存储器对象。
可以从未分配的空闲存储器对象中分配多个处理缓冲器给通信控制数据结构,其中将多个选定的处理缓冲器指定为发送处理缓冲器。发送处理缓冲器存储从本地主机发送到远程主机的消息。与此类似,在已分配的多个处理缓冲器中,可将其他选定的处理缓冲器指定为接收处理缓冲器。接收处理缓冲器存储本地主机从远程主机接收到的消息。此外,可以从未分配的空闲存储器对象中分配多个备用缓冲器给通信控制数据结构,其中将多个选定的备用缓冲器指定为发送备用缓冲器。如同对多个处理缓冲器所进行的指定那样,可将其他选定的备用缓冲器指定为接收备用缓冲器。可将备用缓冲器与特定的处理缓冲器相关联。也就是说,可以将选定的发送备用缓冲器与相应的发送处理缓冲器相关联,并且可以将选定的接收备用缓冲器与相应的接收备用缓冲器相关联。顾名思义,在存在预定的操作状态之前,备用缓冲器都可以保持备用状态。预定的操作状态有可能表示未分配的空闲存储空间小于预定存储限度。有用的是,本地接口可以是诸如TCP套接字之类的套接字,并且通信控制数据结构可以是诸如TCP SCB之类的套接字控制功能块(SCB)。该方法还可以包括采用动态存储分配、动态存储回收以及其组合来管理全局存储器中的已分配的存储器对象和未分配的存储器对象,从而使由未分配的存储器对象表示的未分配的空闲存储空间最大化。
某些方法包括将全局存储池划分为处理缓冲池BP和备用缓冲池BR。在这种情况下,可以从指定的处理缓冲池BP中分配处理缓冲器,并且可以从指定的备用缓冲池BR中分配备用缓冲器。例如,当希望确保为备用缓冲器以及处理缓冲器和通信控制数据结构留出可确定的最小存储空间时,该方法有可能是有用的。这种方法还包括响应于对每个资源实体的请求,创建另外的通信控制数据结构、处理缓冲器和备用缓冲器,从而在进行了相应配置的情况下,使得进程可以根据需要调用另外的资源。在这种方法中,响应于预定的存储器状态的存在,将备用缓冲器投入使用。
某些方法还可以包括在本地主机与远程主机之间的通信网络上建立通信链路,以及在发送发送消息之前,将发送消息存储于发送处理缓冲器中,在从远程主机接收到接收消息之后,将接收消息存储于接收处理缓冲器中,或者同时包括这两个存储过程。
某些方法还可以包括监控是否存在预定的存储器状态。可以对池BP或与空闲存储池协作的池BP进行监控。如果存在预定的存储器状态,则在将发送消息发送给远程主机之前,将发送消息存储于发送备用缓冲器中,在从远程主机接收到接收消息之后,将接收消息存储于接收备用缓冲器中,或者同时包括这两个存储过程。处理缓冲池BP包括空闲存储位置、已占用的存储位置以及其组合,其中如果空闲存储位置小于预定存储级别L,则存在预定的存储器状态。
为方便起见,某些具体实现方法包括使用预定的传输层协议在本地主机接口与远程主机接口之间建立通信链路。同样,本地主机接口可以是套接字,并且通信控制数据结构可以是套接字控制功能块。此外,某些方法包括通过作为网络通信链路的一部分的物理空中接口Um使用预定的无线协议进行通信。
某些其他的方法在此还包括响应于选定的存储管理策略而将选定的发送处理缓冲器、选定的发送备用缓冲器、选定的接收处理缓冲器以及选定的接收备用缓冲器与相应的通信控制数据结构相关联。根据选定的存储管理策略,可以通过以下步骤来进行这种关联:将选定的已占用存储空间的发送处理缓冲器中的多个发送处理缓冲器指定为选定的空闲存储空间的发送处理缓冲器,并将该选定的空闲存储空间的发送处理缓冲器与池BP的空闲存储空间相关联;将选定的已占用存储空间的发送备用缓冲器中的多个发送备用缓冲器指定为选定的空闲存储空间的发送备用缓冲器,并将该选定的空闲存储空间的发送备用缓冲器与池BR的空闲存储空间相关联;将选定的已占用存储空间的接收处理缓冲器中的多个接收处理缓冲器指定为选定的空闲存储空间的接收处理缓冲器,并将该选定的空闲存储空间的接收处理缓冲器与池BP的空闲存储空间相关联;将选定的已占用存储空间的接收备用缓冲器中的多个接收备用缓冲器指定为选定的空闲存储空间的接收备用缓冲器,并将该选定的空闲存储空间的接收备用缓冲器与池BR的空闲存储空间相关联;或者这些步骤的某种组合。
所用的选定存储管理策略可以是动态存储管理,该动态存储管理包括动态存储分配、动态存储回收以及其组合中的一种方式。该动态存储管理适用于选择性地将缓冲器分配从第一通信控制数据结构变为第二通信控制数据结构。同样,该动态存储管理适用于选择性地将备用缓冲器关联从第一处理缓冲器变为第二处理缓冲器。此外,将该选定的存储管理策略配置为使空闲存储空间最大化。该方法还包括使用以下协议在通信网络中建立通信链路:预定的网络层协议,诸如网际协议;预定的传输层协议,诸如传输控制协议;以及结合预定的传输层协议而使用的预定的网络层协议,诸如使用TCP/IP协议。其中,一部分通信链路包括物理空中接口Um,可以使用预定的无线协议通过该部分通信链路进行通信。
另外某些具体实现方法在此还可以包括协作存储管理方法,其中如果存在预定的存储器状态,则处理缓冲器与备用缓冲器协作,以在本地进程与远程进程之间交换消息。在可协作的布置中,如果处理缓冲器可用,则通过处理缓冲器传送消息,或者如果处理缓冲器不可用,则通过相关联的备用缓冲器传送消息。因此,如果存在预定的存储器状态,则除非发送处理缓冲器已经充满,否则发送处理缓冲器仍然可以存储发送消息,在发送处理缓冲器已经充满的情况下,相关联的发送备用缓冲器可以存储发送消息。同样,除非接收处理缓冲器已经充满,否则接收处理缓冲器仍然可以存储接收消息,在接收处理缓冲器已经充满的情况下,相关联的接收备用缓冲器可以存储接收消息。
除包括将存储器划分为处理缓冲池BP和备用缓冲池BR之外,这些方法在此还可以将缓冲池BR划分为发送备用缓冲池TS和接收备用缓冲池RS。一般来说,BR中的存储位置的数目可以包括分别由发送备用缓冲池TS和接收备用缓冲池RS表示的存储位置的数目的总和。此外,当N是所创建的套接字的选定最大数目,则下标s可以代表套接字索引,套接字索引的值在大约1≤s≤N的近似范围内。有利的是,当未分配的空闲存储空间的量至少约为预定的空闲存储级别L时,从BP中为套接字s分配发送缓冲器和接收缓冲器。另一方面,当未分配的空闲存储空间的量小于大约预定的空闲存储级别L时,有可能希望分别从TS中分配发送缓冲器并从RS中分配接收缓冲器。
在未分配的空闲存储空间减小到小于预定的存储级别之前,可以随意地从处理缓冲池BP中分配发送备用缓冲器和接收备用缓冲器。当未分配的空闲存储空间减小到了小于预定的存储级别时,该方法可以包括从备用缓冲池BR中分配备用缓冲器。在某些实施例中,从备用缓冲池BR中进行分配可以包括从发送备用缓冲池TS中分配发送备用缓冲器,并从接收备用缓冲池RS中分配接收备用缓冲器。如同在此具体实现的其他方法,前述方法可以包括采用存储分配、存储回收或其组合来管理通信缓冲器、处理缓冲器和备用缓冲器中的存储空间。
本发明还提供了通信缓冲管理设备,其中某些设备可以在本地主机与远程主机之间的通信系统中具体实现。这种系统包括本地主机中的通信管理器,其适用于与远程主机之间传送消息。通信管理器包括:处理缓冲器,其配置为存储与远程主机之间传送的消息;备用缓冲器,其配置为在存在预定的操作状态的情况下存储消息。该系统还包括:网络通信链路,建立该网络通信链路是为了在本地主机与远程主机之间传送消息;以及收发信机,其连接在通信管理器与网络通信链路之间,并部署为在网络通信链路与通信管理器之间传送所述消息。
通信管理器还可以包括通信接口和通信控制数据结构。通信接口可以连接到本地进程,并且可适用于在处理缓冲器或备用缓冲器与本地进程之间交换消息。通信控制数据结构的特征可以在于通信接口并且可以将其分配给该通信接口。接着,可以将处理缓冲器和备用缓冲器分配给通信控制数据结构。通信管理器可以在其中包括通信缓冲器。通信缓冲器可以单独地或以组合形式包括已分配的存储器对象和未分配的空闲存储空间。通信控制数据结构、处理缓冲器和备用缓冲器均可以为通信缓冲器中的存储器对象。在这种通信管理器中,当未分配的空闲存储空间小于预定的空闲存储空间级别时,存在预定的操作状态。
通信缓冲管理器可以包括在通信管理器中,并连接到通信缓冲器。通信缓冲管理器可以监控未分配的空闲存储空间,以便确定是否存在预定的操作状态,并且可以响应于预定的操作状态的存在而将消息存储于备用缓冲器中。可以将多个处理缓冲器和备用缓冲器分配给通信控制数据结构,其中将多个处理缓冲器指定为接收处理缓冲器并将其他多个处理缓冲器指定为接收处理缓冲器。同样,可以将多个备用缓冲器分配给通信控制数据结构,其中将多个备用缓冲器指定为发送备用缓冲器并将其他多个备用缓冲器指定为接收备用缓冲器。使选定发送备用缓冲器可协作地与相应的发送处理缓冲器相关联,并且使选定接收备用缓冲器可协作地与相应的接收处理缓冲器相关联。可以将通信缓冲器划分为处理缓冲池BP和备用缓冲池BR,分别从处理缓冲池BP和备用缓冲池BR中分配处理缓冲器和备用缓冲器。在此处具体实现的某些系统中,本地主机可以与远程主机结合预定的传输层协议而使用预定的网络层协议通过网络通信链路传送消息。在此处选定的系统中,通信控制数据结构可以是TCP套接字控制功能块,并且通信接口可以是传输控制套接字。此外,预定的传输层协议可以是传输控制协议。其中一部分网络通信链路通过物理空中(Um)接口,本地主机与远程主机可以使用预定的无线协议通过该Um接口传送消息。
本发明的其他示例性实施例包括一种移动通信设备,其具有位于其中的收发信机和通信管理器。该收发信机适用于使用预定的无线协议通过一部分通信网络链路连接到远程主机。该通信管理器适用于与远程主机之间传送信息。该通信管理器可以包括通信缓冲器,该通信缓冲器可以具有未分配的空闲存储空间以及在其中分配的备用缓冲器。该备用缓冲器可以响应于未分配的空闲存储空间减小到了小于预定的存储级别而存储与远程主机之间传送的消息。该通信缓冲器还可以包括在其中分配的处理缓冲器,该处理缓冲器基本上独立于未分配的空闲存储空间是否减小到了小于预定的存储级别而存储与远程主机之间传送的消息。处理缓冲器与备用缓冲器协作,以响应于未分配的空闲存储空间减小到了小于预定的存储级别而存储与远程主机之间传送的消息。可以将通信缓冲器划分为处理缓冲池BP和备用缓冲池BR。然后,可以从处理缓冲池中分配处理缓冲器,并且可以从备用缓冲池中分配备用缓冲器。
在分配之后,还可以将处理缓冲器分配为发送处理缓冲器和接收处理缓冲器。同样,还可以将备用缓冲器分配为发送备用缓冲器和接收备用缓冲器。有利的是,可以将发送备用缓冲器与发送处理缓冲器相关联,并且可以将发送处理缓冲器和发送备用缓冲器均配置为可协作地存储发送给远程主机的消息。同样,可以将接收备用缓冲器与接收处理缓冲器相关联,并且可以将接收处理缓冲器和接收备用缓冲器均配置为可协作地存储从远程主机接收的消息。
在此具体实现的示例性移动设备还可以包括:本地进程,其在本地主机上执行,并且具有在本地进程与通信缓冲器之间交换消息的本地进程接口;以及本地主机通信接口控制结构,其对应于本地进程接口,并且配置为与远程主机中的远程进程接口之间传送消息。本地主机通信接口控制结构可通信地与处理缓冲器和备用缓冲器协作,将处理缓冲器和备用缓冲器分配给本地主机接口控制结构。可以将通信缓冲器划分为发送处理缓冲池TS和接收处理缓冲池RS。当未分配的空闲存储空间近似地在预定的存储级别L上或高于该预定的存储级别L,则可以从空闲存储池BP中分配处理缓冲器和备用缓冲器。在未分配的空闲存储空间减小到了小于预定的存储级别之后,可以从发送备用缓冲池TS中分配发送备用缓冲器并且可以从接收备用缓冲池RS中分配接收备用缓冲器。
这种移动通信设备可以包括连接到通信缓冲器的通信缓冲管理器。通信缓冲管理器可以将通信缓冲器划分为发送处理缓冲器和接收处理缓冲器,将处理缓冲器分配为发送处理缓冲器和接收处理缓冲器,将备用缓冲器分配为发送备用缓冲器和接收备用缓冲器,监控未分配的空闲存储空间,并且可以使得响应于未分配的空闲存储空间减小到了小于预定的存储级别而将消息存储于发送备用缓冲器、接收备用缓冲器或同时存储于这两个备用缓冲器中。
某些通信缓冲管理器可以配置为响应于期望的缓冲器大小、本地通信接口的预期通信用途、预定的通信参数以及其组合中的一个参数而选择处理缓冲器和备用缓冲器的大小、数目或同时选择其大小和数目。通信缓冲管理器可以实现动态存储分配、动态存储回收以及其组合,从而使未分配的空闲存储空间最大化。同样,通信缓冲管理器还可以包括处理缓冲管理器和备用缓冲管理器。处理缓冲管理器和备用缓冲管理器用来管理相应的处理缓冲存储器和备用缓冲存储器的方法可以包括存储分配、存储回收或其组合。处理缓冲管理器和备用缓冲管理器中的一个或两个缓冲管理器可以实现动态存储分配、动态存储回收以及其组合,从而使未分配的空闲存储空间最大化。
附图说明
结合附图,根据以下对本发明实施例的详细描述,可以更全面地理解本发明,其中:
图1是示出通信系统环境中的通信缓冲管理器的实施例的简化的示意性框图;
图2是位于本地主机中的通信缓冲管理器的另一实施例的简化的示意性框图;
图3A是根据本发明的包括初始化阶段(INSTANTIATION PHASE)和执行阶段(EXECUTION PHASE)的通信缓冲存储器管理过程的简化的示意性框图;
图3B是图3A中示出的实施例的初始化阶段的简化的示意性框图;以及
图3C是图3A中示出的实施例的执行阶段的简化的示意性框图。
具体实施方式
这些实施例在此提供了通信缓冲管理方法和设备,其可以用于在移动通信设备中管理移动设备通信缓冲器。
1.术语定义
如同在此所用,消息是在通信期间在两个通信端点或主机之间传送的示例性数据单元。消息的组成部分可以是一个或多个数据单元,诸如TCP分段(称为分段)。TCP分段可以包括TCP报头和TCP数据有效载荷(分别称为报头和有效载荷)。此外,消息可以是视频、音频、文本、数据、多媒体以及对主机或主机用户有意义的其他内容中的一个或多个数据单元,包括重发消息和控制消息。消息可以由一个或多个数据单元构成,这些数据单元非限制性地包括数据帧、分组、数据报、分隔流(delimited stream)、管理响应和通信控制数据。控制消息可以采取积极确认或消极确认、状态更新、请求、应答等形式。
一般来说,可以从一个或多个存储功能块中分配存储缓冲器,或简单地说是缓冲器。可以从一个或多个单位存储位置中依次分配每个存储块。构成存储块的单位存储位置的数目以及构成存储缓冲器的存储块的数目可以是固定的、可选的、可变的或其组合。固定的值是一个单独的值,并且通常在进行操作之前分配。可选的值可以从一组离散的值中选取,并且通常在操作之前分配。可变的值通常在预定范围内取值,并且通常动态地或在操作期间分配。除非上下文引用了特定的存储实体,否则存储位置、存储块和存储缓冲器都可以称为存储器对象。缓冲器可以是一个单独的存储器对象,并且同样可以从多个更小的存储器对象中分配。
因此,系统存储缓冲器逻辑上可以包含固定数目的更小的功能性缓冲器,每个功能性缓冲器由固定数目的单位存储位置有效地构成。在替代性的方案中,系统存储缓冲器可以包含大小不同的固定大小的、可选大小的以及可变大小的存储器对象,该系统存储缓冲器可以适用于符合特定的目的,以使得所浪费的存储空间最小化,等等。例如,可以为所有的通信接口控制结构分配具有一个预定大小的存储器对象,而通信缓冲器可以包括不同大小的存储器对象,其中可以将对象大小调整为便于进行有效的通信。可以从一个单独的集成设备中或在一个单独的集成设备中,或者从多个集成的或分立的物理存储设备或模块中或在多个集成的或分立的物理存储设备或模块中形成可用的物理通信存储空间。此外,其中可以使用有利的分级的、分布式的或共享的存储器对象配置。
在本公开文件的上下文中,存储管理可以包括存储分配和存储回收。存储分配可以包括分配用于存储信息的存储资源,并且可以实现一个或多个存储分配策略,以提供足够的资源来满足通信期间所期望的分配请求。可以采用计算机领域中公知的存储分配策略,包括而不限于存储映射和重新映射、静态存储分配、动态存储分配以及可以是这些分配策略的组合的混合分配。
还有可能希望在存储管理中包括存储回收,以识别、收集和收回存储位置、功能块和缓冲器,这些存储位置、功能块和缓冲器有可能已经不用或可以由与最初为其分配的处理器不同的处理器更好地利用。可以单独地或以组合形式采用多种公知的存储回收方法,包括而不限于策略垃圾回收、解除分配、重新映射和存储收回。这些方法可以与在此所用的存储分配方法相结合或作为其补充。实际上,根据在相应实施例中执行的存储管理策略的需要,存储分配可以与存储回收协作,以重新分配存储位置、功能块和缓冲器。
在存储分配或存储回收无法实现或受到限制的环境下,存储管理还可以包括一个或多个预定的存储管理步骤。如果暂时不能获得足够的空闲存储空间,则预定的存储管理步骤可以包括例如丢弃到来的接收消息或阻断发出的发送消息。
如同在此所用,“存储受限”设备可以是具有可用作通信缓冲器的有限存储空间或有限数目存储位置的设备。紧凑型移动通信设备中的存储限制有可能源于例如电源、成本或设备尺寸上的考虑。在以下示例和实施例中,术语“本地”和“远程”用于提供相对参考点,而不是用于指定通信主机之间的特定物理关系或特定空间关系。实际上,本发明的实施例可以用于本地主机、远程主机或同时用于本地主机和远程主机。
此外,在此将术语“空闲”和“已占用”应用于存储实体,包括存储位置、功能块和缓冲器,“空闲”和“已占用”分别将存储实体指定为处于从功能上说类似于“可以写入”状态或“禁止写入”状态的状态中。在禁止写入存储器中,可以暂时阻止新的数据存储,以便暂时保护存储实体中现有的数据。可以写入的存储实体可以允许在其中存储新的数据。因此,可以将数据写入到空闲存储空间中,然后,可以将该空闲存储空间指定为已占用的存储空间,直到已经根据需要使用了该存储空间中的数据例如对这些数据进行读取、发送或确认时为止。当已占用的存储空间没有充分利用或根据预期用途不再使用时,可以再次将该存储空间指定为空闲存储空间。有利的是,通信缓冲器包括空闲存储空间、已占用的存储空间或同时包括空闲存储空间和已占用的存储空间。
有可能希望在向存储实体中存储数据之前分配存储实体。一旦将存储实体分配给特定的进程,就可以将已分配的存储空间指定为与相应进程的相应操作状态有关的空闲存储空间或已占用的存储空间。例如,在回收之前,希望将已占用的存储空间指定为空闲存储空间,以便不会过早地从激活的进程中去除这些资源。当将存储实体指定为空闲存储空间时,可以将该存储实体返回空闲存储池,如果进行了相应的配置,则可以从空闲存储池中重新分配随后的资源。
某些进程可以推迟执行“缓冲器读取”操作,直到完成待进行的“缓冲器写入”操作时为止。在这种情况下,进程可以不读取有可能已经接收的数据,并因此不会释放相关联的存储位置以供到来消息使用或供诸如“确认”之类的发出消息使用。同样,很多通信协议有可能期望发送方保留发送消息的副本,直到发送方从消息接收方接收到相关联的响应(例如“确认”)时为止。当执行这种进程时,所存储的TCP分段会同时累积在移动设备的发送缓冲器和接收缓冲器中,导致基本上耗尽可用的通信存储空间。由于耗尽了存储空间,进程有可能不能完成进程内“缓冲器写入”操作。同时,进程会等待完成“缓冲器写入”以执行“缓冲器读取”操作。所形成的僵局可称为“死锁”。因此,在存储受限的环境下,希望有效地管理通信缓冲器。因此,在执行进程的存储受限的移动无线设备的环境中,在此提出了示例性通信缓冲管理方法和设备。然而,这些方法和设备可以在各种各样的设备、系统和环境中实现。
2.实施例描述
图1示出了通信系统100,其中本地主机(LHOST)102通过在通信网络108上建立通信链路与远程主机REMHOST(110)通信。LHOST102和REMHOST 110可以通过以半双工传输模式或全双工传输模式单向地或双向地传送包括信息和控制数据的消息来进行通信。一部分通信链路可以包括一般采用适用于分组交换网的通信协议在其上进行通信的分组交换网,例如网络108。网络108可以表示具有多种构成网络部分的异构网络,这些构成网络部分包括而不限于电路交换网、分组交换网、与这些网络等效的网络以及这些网络的组合。包括诸如因特网之类的分组交换公共网的网络108的一部分可以使用可靠的、面向连接的、端到端的协议,诸如TCP/IP协议组。一部分通信链路还可以使用预定的无线协议通过物理空中(Um)接口进行通信。在系统100中,预定的无线协议有利地与用于通信链路中的包括分组交换协议的其他通信协议进行协作。
LHOST 102可以是移动无线系统,其与移动服务提供商(MSP)104进行通信。LHOST 102可以包括有可能存储受限的多功能、多媒体移动终端(M3T)114,诸如手机、个人数字助理或其他紧凑型通信设备。LHOST 102还可以使用移动台管理器(MSM)112来实现M3T 114与REMHOST 110之间的通信。尽管图1中将MSM 112示出为独立于M3T114的实体,但是也可以预期,MSM 112可以集成到M3T 114中。MSM112可以包括一个或多个通信缓冲器,诸如通信缓冲器118。MSM 112可以连接到或结合移动收发信机(XCVR)116。此外,MSM 112可以连接到诸如第一本地进程(LPROC#1)120和第二本地进程(LPROC#2)121之类的一个或多个本地进程,以及相关联的接口或服务模块,诸如TCP进程。LPROC#1 120、LPROC#2 121可以为与M3T 114协作的用户应用程序提供联网的通信服务。在此处的发明实施例的范围内,可以单独地或以组合形式在MSM 112或在M3T 114中执行LPROC#1 120和LPROC#2 121。
XCVR 116可以包括无线接收机122和无线发射机124。发射机124可以通过物理空中(Um)接口将发出消息从发送处理缓冲器128传送到MSP 104。MSP 104可以包括基站收发信机(未示出)和移动交换中心(未示出),并且可以通过MSP路由器106连接到网络108。MSP路由器106可以根据需要在网络108与MSP 104之间执行物理信号和逻辑消息的转换。LHOST 102与REMHOST 110之间的消息传送可以是双向的和全双工的。接收机122可以从MSP 104接收到来的无线消息,并且可以将接收消息传送给接收处理缓冲器126。
通常,在通信开始时,在任一方主机上执行的进程使用选定的通信接口对在这两个主机之间建立连接进行协商。在REMHOST 110和LHOST 102中的每个主机都使用TCP类传输协议来实现通信的示例中,每个进程可以创建一个或多个TCP套接字以在两个主机之间建立期望的连接。尽管通信缓冲器118可以代表为在LHOST 102中创建的每个套接字Si分配的存储器对象,但通信缓冲器118还可以表示作为全局存储池而由两个或多个套接字Si共享的存储器对象。在操作期间,这些套接字可以争用存储资源分配。当建立了TCP连接时,进行通信的TCP进程可以识别端口号并协商其他参数,例如已发送但未确认的数据的最大数量(称为提供窗或通知窗)以及将在REMHOST 110与LHOST 102之间双向传送的TCP分段的最大大小。可以将这种控制信息存储于称为套接字控制功能块(SCB)125的数据结构中,还可以在通信缓冲器118的一部分中创建这种数据结构。一般来说,套接字Si可以包括SCB 125和一个或多个处理缓冲器,诸如缓冲器126、128。有可能希望从通信缓冲器118中分配接收处理缓冲器126和发送处理缓冲器128。可以根据预期的通信的需要来配置处理缓冲器126、128,这种需要可以由在通信链路协商期间传送给SCB 125的参数来反映。例如,分配给SCB 125的缓冲器和其他存储器对象的大小和数目可以与通信的性质(例如TCP、UDP(用户数据报协议)等)、预期的存储需求(例如通信优先级、TCP分段大小等)以及其他有密切关系的操作参数有关。尽管将SCB 125/接收处理缓冲器126和发送处理缓冲器128示出为物理上独立的实体,但这种区别通常是虚拟的。
REMHOST 110包括还分配为接收处理缓冲器(未示出)和发送处理缓冲器(未示出)的通信缓冲器134。缓冲器134可以连接到第一远程进程(RPC#1)136、第二远程进程(RPC#2)138或同时连接到这两个远程进程。REMHOST 110可以包括诸如缓冲器134之类的多个缓冲器,以支持多个套接字和多个进程。同样,LHOST 102中的多个本地进程(例如LPROC#1 120、LPROC#2 121)可以适用于与REMHOST 110或不同的远程主机的组合中的多个远程进程(例如RPC#1 136、RPC#2138)进行通信。
LPROC#1 120从M3T 114接收发出消息,并将这些消息写入到发送处理缓冲器128的空闲存储空间中。无线发射机124从发送处理缓冲器128中读取消息并且可以通过Um接口将这些消息发送给MSP 104。在将消息从LHOST 102发送到REMHOST 110之后,可以将发送消息副本存储于发送处理缓冲器128中的选定存储器对象中,等待确认。可以将可写入消息的存储器对象指定为已占用的存储空间,直到这些消息已被发送和确认时为止,之后可以将这些已占用的存储空间指定为空闲存储空间。除非进行了回收,否则无论是将构成缓冲器128的存储器对象指定为已占用的存储空间还是指定为空闲存储空间,该存储器对象都可以保持作为缓冲器128分配给SCB 125的状态。随着LHOST 102与REMHOST 110之间的通信的继续,发送处理缓冲器128中的空闲存储空间数量相对于已占用存储空间数量和总存储空间的比例会发生变化,其同时包含例如从进程120接收的发出消息和发送给REMHOST 110的已发送但未确认的消息的副本。
LHOST 102还可以从REMHOST 110接收消息,基本上与LHOST102发送消息给REMHOST 110并行。一般来说,可以在发送之前将从REMHOST 110发送到LHOST 102的消息例如作为TCP分段存储于缓冲器134中。可以通过MSP路由器106在网络108上向MSP 104发送发出消息。MSP 104可以使用预先选定的无线协议通过Um接口向LHOST 102发送消息。LHOST 102中的无线接收机122能够检测到来信号并且能够将物理信号转换为逻辑接收消息,例如TCP分段。接收TCP分段通常包括接收有效载荷和接收报头,接收报头包含接收消息标识符。一般来说,可以将接收消息存储于接收处理缓冲器126中,直到进程120请求选定的接收信息时为止。响应于进程的“缓冲器读取”操作,可以将存储于接收处理缓冲器126中的接收有效载荷传送给进程120,并且可以使得该数据可供例如M3T 114使用。在“缓冲器读取”之后,可以将缓冲器126中的已占用存储空间指定为空闲存储空间。除非进行了回收,否则无论是将构成缓冲器126的存储器对象指定为已占用的存储空间还是指定为空闲存储空间,该存储器对象都可以保持作为缓冲器126分配给SCB 125的状态。随着REMHOST 110与LHOST 102之间的通信的继续,接收处理缓冲器126中的空闲接收存储空间数量相对于已占用的接收存储空间数量的比例会发生变化,特别地,其中诸如LPROC#1 120、LPROC#2 121之类的进程推迟执行对接收处理缓冲器126的“缓冲器读取”操作,直到完成进程内“缓冲器写入”操作时为止。LHOST 102还可以通过发送确认接收到了来自REMHOST 110的发送数据的“确认”消息来对这些发送数据进行响应。
有可能希望通信缓冲管理器(CBM)130的实施例或功能上等效的设备在通信缓冲器118内提供对存储器对象的改善的管理。可以实现于CBM 130中的存储管理包括存储分配、存储回收和存储管理步骤。存储分配可以包括为发送操作或为接收操作分配不同的存储器对象。存储管理还可以包括将已分配的存储器对象指定为空闲存储空间或已占用的存储空间。因此,由CBM 130管理的存储器对象的例子可以包括通信缓冲器118、SCB 125、接收处理缓冲器126和发送处理缓冲器。此外,CBM 130可以管理包括诸如接收备用缓冲器RR 127和发送备用缓冲器RT 129之类的备用缓冲器的存储器对象。
存储回收可以包括识别未使用的存储器对象和可回收的存储器对象。有可能希望将回收的存储器对象返回到已定义的、空闲的存储池。未使用的存储器对象的例子可以包括未分配的存储空间,不再使用的已分配且空闲的存储器对象和缓冲器,或者已分配的孤立存储碎片。可回收的存储器对象的例子包括属于终止进程、存储泄漏的对象,以及诸如有可能已分配给低需求套接字的未充分利用的和优先级较低的对象。CBM 130可以对已回收的存储空间进行重新分配,以供其他进程(如果需要这些其他进程)使用,例如,供SCB使用、供处理缓冲器使用或供备用缓冲器使用。CBM 130可以对最初分配给通信堆栈中较低的进程的未使用存储器对象进行重新分配,以便将其重新分配为缓冲器,包括发送备用缓冲器、接收备用缓冲器或同时包括这两种备用缓冲器。
CBM 130可以在创建套接字Si期间将备用缓冲器RR 127和备用缓冲器RT 129分配给SCB 125。尽管已经分配,但CBM 130仍可以使得Si推迟将消息存储于备用缓冲器RR 127和备用缓冲器RT 129中,直到检测到存在预定的操作状态时为止。因此,在存在预定的操作状态之前,备用缓冲器RR 127和备用缓冲器RT 129可以仍然保持为已分配且空闲的。然而,例如在通过相应的套接字进行的通信终止之前,无论是否存在预定的操作状态,都有可能不希望回收已分配且空闲的备用缓冲器。
所希望的是,预定的操作状态可以由未分配且可回收的存储空间减小到小于所述预定的存储级别L来表示。当CBM 130检测到通信缓冲器118中存在预定的操作状态时,CBM 130可以使用处理缓冲器126、128与相关联的备用缓冲器RR 127和备用缓冲器RT 129来增加通信。尽管备用缓冲器RR 127和备用缓冲器RT 129可以表示在创建SCB 125期间分配给SCB 125的存储器对象,但备用缓冲器RR 127和备用缓冲器RT 129还可以表示稍后由CBM 130在操作期间通过补充分配或通过回收和重新分配而添加的存储器对象。这些备用缓冲器127、129有可能有利于防止或有利于改善缓冲器死锁状态或缓冲器匮乏状态,例如,当LPROC#1 120基本上与接收处理缓冲器126接受从REMHOST 110传送的大量消息并行地将大量消息传送给发送处理缓冲器128时,就有可能出现缓冲器死锁状态或缓冲器匮乏状态。同样,可以将LPROC#1 120配置为推迟执行从接收处理缓冲器126中进行的“缓冲器读取”操作,直到完成对缓冲器128的进程内“缓冲器写入”操作之后为止。在发送处理缓冲器128接受了来自LPROC#1 120的消息的情况下,除保留传送给REMHOST 110的消息的副本之外,通信缓冲器118中的可用存储空间会开始减小。当发送处理缓冲器128中存在预定的操作状态时,在此描述的实施例可以提供足够的备用存储空间以便有可能避免缓冲器死锁或缓冲器匮乏。
为方便起见,如果进行了相应的配置,则CBM 130可以适应性地对发送的消息进行过滤,使其通过备用缓冲器RR 127和备用缓冲器RT129,以便可以将预先选定的消息存储于这些缓冲器并通过这些缓冲器进行传送。例如,由于通信缓冲器118中的空闲存储空间数量减小到了小于预定存储级别L并且可用的备用缓冲器RR 127和备用缓冲器RT 129的数量也变得有限,有可能希望将通过备用缓冲器RR 127和备用缓冲器RT 129的通信限制为基本控制消息,诸如“确认”消息。备用缓冲器RR127和备用缓冲器RT 129可以为进程(例如LPROC#1 120)提供足够的存储空间,以使得可以完成“缓冲器写入”操作,将“确认”发送给REMHOST 110,等等。
在图2的通信系统200中,本地主机LHOST(201)采用通信管理器203通过通信网络270将消息传送给远程主机(REMHOST)280。通常,每个主机执行至少一个通信进程,以与另一主机交换消息。在图2中,可以通过在第一本地通信进程(LPROC#1)209与第一远程通信进程(RPROC#1)281之间的通信网络270上建立链路而在LHOST 201与REMHOST 280之间交换消息。在LHOST 201包括移动无线设备时,LHOST 201可以包括收发信机(XCVR)207,可以将XCVR 207配置为通过物理空中(Um)接口与移动服务提供商(MSP)265之间传送消息。有可能希望通信使用双向通信链路实现预定的全双工无线通信协议,但也可以使用其他通信协议。有可能有用的是通过在LHOST 201中执行第二本地通信进程(LPROC#2)211、在REMHOST 280中执行第二远程通信进程(RPROC#2)283或同时执行这两个通信进程而在通信网络270上提供用于消息交换的另外的链路。REMHOST 280可以通过网络网关275与网络270进行通信。网络270的至少一部分可以包括公共分组交换网,诸如因特网。
为方便起见,LHOST 201和REMHOST 280可以使用可靠的、端到端的网络传输协议以一种使消息在传输两端之间基本保持原样、不改变顺序并且以及时的方式传送消息。考虑到在LHOST 201与REMHOST280之间的通信期间消息有可能未到达、损坏、丢失或过度延迟,LPROC#1 209和RPROC#1 281可以采用相应的可靠传输服务来提供消息重发。尽管示例性的传输协议与示例性的无线通信协议协作,但仍有可能希望LHOST 201包括通信缓冲器205,以补偿与REMHOST 280的通信链路中的消息速率和消息流的差异。
有利的是,可以在每个主机201、280上提供通信缓冲器,以实现可靠的通信传输。诸如对于一个或多个发送缓冲器、接收缓冲器或同时对于这两者,可以将由多个存储器对象构成的通信缓冲器部署到分立的物理子单元或逻辑子单元中。作为替代,还可以将通信缓冲器部署为一个单独的全局存储池,可以从该全局存储池中分配存储器对象以满足当前的通信需求。一般来说,可以将部署为接收诸如消息之类的信息的存储器对象指定为空闲存储空间。从功能上说,可以将空闲存储空间中的存储器对象视为可写入的存储器对象。另一方面,可以将暂时存储信息的存储器对象指定为已占用的存储空间。从功能上说,可以将指定为已占用的存储空间的存储器对象视为暂时禁止写入,以便保留其中的逻辑内容。当不再希望保留这些内容时,就可以将已占用的存储空间指定为从功能上讲能够接收新的数据的(即为可写入的)空闲存储空间。
TCP/IP协议属于示例性的可靠的、端到端的网络传输协议,其可以用于LHOST 201与REMHOST 280之间的通信。当希望在LHOST 201与REMHOST 280之间进行通信时,可以在本地进程209与远程进程281之间的每个通信方向上为每个通信进程建立一个或多个通信链路。当建立了这种链路时,可以为与通信进程(例如LPROC#1 209和RPROC#1281)相关联的每个传输协议端点或接入点创建一个或多个通信链路接口。通常,可以为在网络上进行通信的每个计算机分配逻辑标识符,例如,IP地址。与此类似,可以针对运行于网络上的通信进程而将逻辑标识符(其可以是端口号)分配给相应的计算机上的接入点。总而言之,可以将计算机标识符和端口号配置为标识接入点或套接字,本地主机上的通信进程可以通过接入点或套接字与远程主机上的通信进程之间传送消息。
一般来说,TCP/IP消息可以由报头和数据有效载荷构成。有利的是,可以表示套接字的已配置的标识符(例如[<IP地址><端口号>])可以包括在TCP/IP消息头内,从而通过标识通信源端点和通信目的地端点来为可靠的消息传输提供辅助。在TCP类型的实现中,消息可以类似于TCP分段,并且处理缓冲器可以类似于一个或多个套接字缓冲器。无论将缓冲器分配为固定数目的存储位置,还是根据处理存储需求来分配缓冲器,诸如在此描述和主张的通信缓冲管理设备和方法都可以有利于消除尤其是在可用存储空间总量有可能受限的嵌入式环境中有可能产生的不均等。
在示例性的LHOST 201中,通信管理器203可以包括通信缓冲器205和通信缓冲管理器215。通信缓冲管理器215可以适用于响应于LPROC#1 209和LPROC#2 211而分配通信缓冲器205中的存储器对象。可以将处理缓冲器分配为实现LPROC#1 209、LPROC#2 211的通信功能。在某些实施例中,可以将通信缓冲器205提供为全局存储池213。全局存储池213中的存储器对象可以同时包括已占用存储部分204和空闲存储池206。当需要时,通信缓冲管理器215可以将存储器对象指定为空闲存储空间或指定为已占用的存储空间。根据通信链路协商参数,或根据通信管理器203当前的操作需求或通信需求,存储器对象分配可以包括选择所分配的缓冲器的大小、数量和用途。
通常,当建立了通信链路时,可以在任一端创建相应的TCP套接字。例如,可以在LHOST 201中为LPROC#1 209创建套接字Si,在REMHOST 280中为RPROC#1 281创建套接字。套接字Si可以由诸如套接字控制功能块(SCB)、发送处理缓冲器(TXB)和接收处理缓冲器(RXB)之类的存储器对象表示。示例性的SCB可以是SCB#1 240,示例性的TXB可以是TXB#1 221,并且示例性的RXB可以是RXB#1223。一般来说,可以将至少一个TXB分配给SCB以服务于本地进程发送功能,并且可以将至少一个RXB分配给SCB以服务于本地进程接收功能,但是也可以分配更多TXB、更多RXB或同时分配更多TXB和RXB。例如,LPROC#1 209可以采用SCB#1 240,可以将TXB#1 221分配给SCB#1 240以将消息发送给RPROC#1 281,并且可以将RXB#1223分配给SCB#1 240以从RPROC#1 281接收消息。LPROC#1 209可以采用SCB#2 243,可以将TXB#2A 225、TXB#2B 227、RXB#2A 229和RXB#2B 231分配给SCB#2 243以与REMHOST 280中的诸如可以在RPROC#1 281中或在RPROC#2 283中的另一远程接入点进行通信。在最初从未分配的空闲存储池206中进行分配之后,可以将存储器对象SCB#1 240、TXB#1 221、RXB#1 223指定为已分配的空闲存储空间或已分配的已占用存储空间。在创建套接字之后,可以例如基于按需原则对处理缓冲器进行分配,并且可以选择性地将处理缓冲器分配为RXB、分配为TXB以及分配为其组合。
在此考虑在创建套接字Si期间分配备用缓冲器,并且可以在稍后将另外的备用缓冲器分配给套接字Si或在创建套接字Si之后例如基于按需原则对备用缓冲器进行分配。还考虑了可以不在创建套接字Si期间分配备用缓冲器,而是在以后根据与套接字Si相关联的通信进程的需求而对备用缓冲器进行分配。尽管可以将一个单独的备用缓冲器分配给SCB#i,但有可能有利的是向SCB#i分配发送备用缓冲器(TRB)和接收备用缓冲器(RRB)。同样,有可能希望将要使用的TRB与相应的TXB相关联,并将要使用的RRB与相应的RXB相关联。
如同对于处理缓冲器所进行的调整那样,可以将备用缓冲器大小、数量和类型调整为适合于预期通信的性质。备用缓冲器的大小可以使得在LHOST 201与REMHOST 280之间进行选定的通信,从而使死锁和缓冲器匮乏的可能性最小化。所希望的是,选定的通信包括以预先选定的通信速率传送消息。然而,选定的通信可以是控制消息,包括在LHOST201与REMHOST 280之间交换的“确认”消息。
在此处的备用缓冲器实施例的一个示例中,当已对示例性的SCB#1240进行了初始化时,以及当已分别从全局存储池213中为发送通信操作和接收通信操作分配了示例性的处理缓冲器TXB#1 221和RXB#1223时,可以创建套接字SI。可以用于对套接字控制功能块进行初始化并用于对缓冲器进行分配的方法和设备在计算机和通信领域是公知的,并且同样可以在此使用。在某些实施例中,可以通过全局存储池213与处理缓冲管理器250以及可能的有限状态机或状态控制器259的协作来对套接字控制功能块进行初始化并对处理缓冲器进行分配。
可以基本上与创建套接字S1并行地为套接字S1的发送操作分配和保留TRB#1 253,并为套接字S1的接收操作分配和保留RRB#1 251。可以将多个备用缓冲器分配给一个套接字Si,诸如S1,用于发送操作、接收操作或同时用于发送操作和接收操作。在另一示例中,其中可以使用UDP类型的传输协议,可以将套接字S2与SCB#2 243相关联。UDP数据报的标称最大大小可以是n个缓冲器。因此,有可能希望从全局存储池213中将n个TRB以及n个RRB分配给UDP套接字S2,其中1≤n≤N。
此外,有可能希望在可以从中分配备用缓冲器的全局存储池213内指定逻辑上不同的备用缓冲空间BR 245。可以将备用缓冲空间BR 245配置为可以为预期数量和类型的通信进程的套接字Si分配足够数目的备用缓冲器,在执行时这些进程有可能重叠。此外,发送备用缓冲池TS 249和备用接收缓冲池RS 247可以是备用缓冲空间BR 245的构成部分。发送备用缓冲池TS 249可以用作可以从中分配和保留TRB(一般用253表示)的源。与此类似,备用接收缓冲池RS 247可以用作可以从中分配和保留RRB(一般用251表示)的源。如果不能分配预定的最小数目的备用缓冲器,则可以中止创建套接字Si,用一个可识别消息来表明发生了故障。
尽管可以在创建套接字时分配备用缓冲器,但有可能有利的是在到达预定的操作状态之前不用备用缓冲器来进行通信。一种示例性的非限制性预定操作状态可以包括预定的存储器状态。当空闲存储池206中的其余存储空间减小到预先选定的空闲存储值L 241时,会存在预定的存储器状态。在可以这样配置通信缓冲管理器215的情况下,可以将激活的套接字Si配置为对动态存储分配进行响应,其中对应于LPROC#1209、LPROC#2 211和其他激活的本地进程的一个或多个激活的套接字Si可以分配、回收、释放、占用或在这些激活的套接字Si之间共享处理缓冲器TXB#1 221、TXB#2A 225、TXB#2B 227、TXB#N 233、RXB#1223、RXB#2A 229、RXB#2B 231以及RXB#N 235,以及可以在全局存储池213内创建的其他处理缓冲器。可以连续地或基于按需原则来执行对可用存储器对象的分配。
在产生预定的操作状态前,可以从处理缓冲空间BR 245的任意部分中开放地分配发送缓冲器和接收缓冲器。在产生预定的操作状态后,有可能希望只从发送备用缓冲空间TS 249中分配发送缓冲器,并且只从备用接收缓冲空间RS 247中分配接收缓冲器。如同处理缓冲器,备用缓冲器可以是未分配的或已分配的。未分配的备用缓冲器可以是通常准备分配给进程的存储器对象。已分配的备用缓冲器是可以指定为空闲的或已占用的存储器对象。空闲的已分配备用缓冲器可以处于准备接收消息的状态,而已占用的备用缓冲器可以存储与其所分配到的进程有关的消息,并且可以暂时地禁止在其中存储新的消息。然而,如果对通信缓冲管理器中所采用的存储管理策略进行了相应调整,则在将已占用的备用缓冲器指定为空闲备用缓冲器之后,可以将该备用缓冲器回收并返回未分配的空闲存储空间以便进行重新分配。
可以通过监控是否正在使用特定备用缓冲器(一般用251、253表示),以及通过将未充分利用或不再使用的备用缓冲器返回最初分配该备用缓冲器的选定备用缓冲池,诸如备用RS 247和TS 249中来实现对备用缓冲空间BR 245的有效存储管理。同样,可以将最初在与特定套接字相关联的协议栈的低层中的有可能未充分利用或不再使用的缓冲器重新分配给选定的备用缓冲池。可以在耗尽与选定的备用缓冲池相关联的备用缓冲器后,并且基本上与预定的操作状态并行地执行选定的存储管理步骤。
例如,当全局存储池203中的可用存储器对象的数目减小到小于大约存储级别L 241,会存在预定的操作状态。有利的是,诸如LPROC#1209和LPROC#2 211之类的本地进程可以在这些进程之间可协作地分配处理缓冲器TXB#1 221、TXB#2A 225、TXB#2B 227、TXB#N 233、RXB#1 223、RXB#2A 229、RXB#2B 231和RXB#N 235,以及与其相关联的其他处理缓冲器。当创建新的套接字Si时,可以在备用缓冲空间BR 245的空闲存储范围内分配接收备用缓冲器(例如,一般用RRB#1 251表示)和发送备用缓冲器(例如,一般用TRB#1 253表示)。然而,在进行了相应配置的应用程序中,在到达预定的操作状态之前,不可使用备用缓冲器RRB#1 251和TRB#1 253。
当未分配空闲存储池206中的可用存储器对象的数目减小到预定的存储级别L 241时,特别是当例如TXB#1 221、RXB#1 223之类的一个或多个相关联的处理缓冲器将过渡到诸如缓冲器匮乏或缓冲器死锁之类的不期望状态时,诸如LPROC#1和LPROC#2之类的本地进程可以使用例如RRB#1 251和TRB#1 253之类的分配给相关联的套接字Si的发送备用缓冲器和接收备用缓冲器。
当在存在预定的操作状态之后创建套接字Si时,可以从存储池206中的其余空闲存储空间中分配相关联的发送处理缓冲器和套接字控制功能块。同样,有可能希望从发送备用缓冲池TS 249的可用缓冲器中分配发送备用缓冲器(一般用TRB#1 253表示)。当进行了相应的配置时,可以将最初在协议栈的低层中并与特定的套接字SX相关联的有可能未充分利用或不再使用的缓冲器改为与发送备用缓冲池TS 249相关联。当耗尽发送备用缓冲池TS 249中的可用缓冲器时,可以执行诸如阻断另外的发送操作之类的存储管理步骤。
至于产生预定的操作状态后的接收功能,有可能希望从备用接收缓冲池RS 247中的可用缓冲器中得到接收备用缓冲器(一般用RRB#1 251表示)。同样,可以将那些不再使用的已占用接收备用缓冲器指定为空闲接收备用缓冲器,将其返回备用接收缓冲池RS 247,并且随后由稍后到来的消息所用。当耗尽备用接收池RS 247中的可用缓冲器时,可以执行诸如使套接字Si转存(dump)或拒收当前接收消息之类的存储管理步骤。
当进行了相应的配置时,通信缓冲管理器215可以经由处理缓冲管理器250实现对通信缓冲器205中的处理缓冲器的可协作存储分配。此外,可以由备用缓冲管理器255来实现对备用缓冲空间BR 245中备用缓冲器的存储分配。对处理缓冲器、备用缓冲器或对这两种缓冲器的存储分配可以采用静态的或动态的存储管理方法。通信缓冲管理器215可以适用于采用处理缓冲管理器250来实现静态的或动态的处理缓冲器管理。与此类似,通信缓冲管理器215还可以适用于采用备用缓冲管理器255来实现静态的或动态的备用缓冲器管理。有可能希望可协作地采用存储计数器257和有限状态机259或功能上与其等效的设备来实现存储分配并对预定的操作状态进行响应。在静态存储分配中,可以预先设定均具有预定的缓冲器大小的预定量的处理缓冲器以便分配给套接字控制功能块,而不管套接字Si的通信的需求如何。在静态存储分配的一个示例中,可以为每个处理缓冲器TXB#1 221、TXB#2A 225、TXB#2B 227、TXB#N 233、RXB#1 223、RXB#2A 229、RXB#2B 231以及RXB#N 235的预定缓冲器大小预先设定一个单独的值。同样,可以为每个套接字Si预先设定预定的处理缓冲器量。然而,静态存储分配有可能受到套接字Si的通信用途的影响,因此可以响应于该用途并从而响应于特定套接字类型的预期通信需求来预先设定预定的处理缓冲器量和预定的缓冲器大小。通常,一旦进行了分配,则在套接字Si的整个使用期限内,静态分配的处理缓冲器往往基本保持不变。
在动态存储分配中,通信缓冲管理器215可以首先为套接字Si分配选定的多个处理缓冲器TXB#1 221、TXB#2A 225、TXB#2B 227、TXB#N 233、RXB#1 223、RXB#2A 229、RXB#2B 231以及RXB#N 235。所希望的是,在创建套接字Si期间,通信缓冲管理器215可以根据期望的通信需求、套接字Si的预期通信用途和其他预定的通信参数或者其组合来选择所提供的处理缓冲器的大小和数目。在执行LPROC#1 209、LPROC#2 211或同时执行这两个进程期间,通信缓冲管理器215可以通过改变分配给套接字Si的预定处理缓冲器量、预定处理缓冲器大小或同时对这两个参数进行改变来对套接字Si的当前通信需求进行响应。这种响应可以由处理缓冲管理器250来实现。
在动态存储分配的另一示例中,同样如图2所示,可以为LPROC#1209分配TXB#1 221和RXB#1 223。在LPROC#2 211最初采用了比LPROC#1 209更多的缓冲器的实例中,通信缓冲管理器215可以为与LPROC#2 211相关联的发送通信功能分配发送缓冲器TXB#2A 225、TXB#2B 227,以及为LPROC#2 211的接收通信功能分配RXB#2A 229和RXB#2B 231。根据LPROC#1 209的通信功能,在为LPROC#2 211分配存储空间之后,可以将诸如TXB#N 233和RXB#N 235之类的另外的处理缓冲器分配给LPROC#1 209。
图3A示出了根据本发明的描述的非限制性的示例性通信缓冲管理方法300。方法300可以用于实现在本地主机中的本地通信进程与远程主机中的远程通信进程之间的消息传送。每个通信进程通常采用一个通信处理接口,该本地通信处理接口通过通信网络连接到远程通信处理接口。通信处理接口可以通过采用逻辑通信控制数据结构和至少一个通信缓冲器来实现消息传送。通常的通信控制数据结构和通信缓冲器是电信和计算机领域中公知的并且可以由至少一个(并且通常是多个)数据存储单元或存储器对象来表示。
一般来说,可以将本地主机通信缓冲器部署为全局存储池,可以从全局存储池中将存储器对象部署为处理缓冲器、备用缓冲器、逻辑通信控制数据结构等。可以将处理缓冲器与特定的控制结构相关联并由该特定的控制结构所用,以实现典型的消息传送。为方便起见,可以将控制结构与发送处理缓冲器和接收处理缓冲器相关联。可以将备用缓冲器与特定的控制结构相关联并由该特定的控制结构所用,以根据预定的操作状态来实现选定的通信。可以为控制结构提供发送备用缓冲器和接收备用缓冲器。尽管可以在全局存储池内一并创建和部署前述控制结构和缓冲器,但仍可以将全局存储池的一部分部署为备用缓冲空间BR,可以从备用缓冲空间BR中分配通信备用缓冲器。此外,有可能希望进一步将空间BR部署为发送备用缓冲器TS和接收备用缓冲器RS。可以将存储器对象指定为空闲存储空间或指定为已占用的存储空间。空闲存储空间可以进行读取和写入,并且可用于在其中存储新的数据。已占用的存储空间可以进行读取但有可能禁止写入,通过禁止写入可以暂时地保留其中已经存在的数据。通常,可以将现有的进程用来传送消息的缓冲器指定为已占用的存储空间。
出于说明的目的,图3A的管理方法300包括与执行阶段350协作的初始化阶段301。图3B可以是初始化阶段301的示例性图示,并且图3C可以是执行阶段350的示例性图示。当对过程300和阶段301、350进行了相应的配置时,一个或多个本地通信进程可以请求和接收另外的资源,包括套接字、处理缓冲器和备用缓冲器。有利的是,在通信操作期间可以采用各种存储管理策略来有效地控制对资源的使用。一个示例性的策略可以是基于先进先存(first-come,first serve)的存储管理策略,另一个策略可以是基于按需原则的存储管理策略。然而,还有可能希望预先将固定量的资源分配给每个通信进程,或根据进行请求的进程的类型将固定量的资源分配给每个通信进程。在适当的时候,在执行阶段350期间,可以对在初始化阶段301期间分配的资源进行回收,并使其可用于在随后对资源进行初始化期间进行重新分配或重新映射。可以想到,此处的实施例不限于所采用的存储管理和存储回收的策略和方法,而是可以进行扩展。
继续图3A中的内容,在初始化阶段301期间,可以通过创建诸如套接字控制功能块(SCB)之类的相关联的通信处理控制结构来对诸如套接字之类的通信处理接口进行初始化。此外,可以分配一个或多个通信处理缓冲器以供相应的SCB用来控制用于相应的通信进程的消息流。在此处的发明性实施例中,还可以将一个或多个通信备用缓冲器分配给SCB并与该SCB相关联。在示例性的执行阶段350期间,SCB和相关联的通信处理缓冲器可以用于通过通信网络链路在本地通信进程与远程通信进程之间执行例行的消息传送。有利的是,甚至在空闲存储空间充分耗尽从而出现缓冲器匮乏状态或缓冲器死锁状态的情况下,备用缓冲器也可以使得能够在本地通信进程与相应的远程通信进程之间继续预定的最小通信。
执行阶段350可以诸如通过处理路径A 325、处理路径B 319和处理路径C 323而与初始化阶段301进行交互。根据需要,通过处理路径A 325,运行于执行阶段350中的通信进程可以请求创建另外的SCB,或者如果进行了相应的配置,则可以将该另外的进程或备用缓冲器分配给现有的SCB。与此类似,通过处理路径B 319和处理路径C 323,初始化阶段301可以为执行阶段350提供多种模式的操作。例如,响应于预定的操作状态,初始化阶段301可以通过将过程300导向选定的处理路径B 319或处理路径C 323来与执行阶段350进行协作。预定的操作状态可以是预定的存储器状态。同样,执行阶段350还可以执行选定的存储回收功能。在典型的存储回收功能中,可以将与非激活的资源相关联的存储位置返回全局存储池以供重新使用。
例如,图3B中的初始化阶段301可以开始于来自本地通信进程的到来的资源请求(操作302)。所请求的资源可以是新的通信套接字,或者如果进行了相应的配置,所请求的资源可以是与现有通信套接字共同使用的另外的资源。可以对通信缓冲存储器进行分析以确定是否有足够的存储空间可用于实现到来的资源请求(操作303)。当空闲的未分配存储空间有可能不足以创建所请求的资源时,可以中止创建(操作305),同时伴随适当的可识别消息。
另外,如果请求套接字资源(操作307),就可以创建SCB(操作309)。与此类似,如果所请求的资源包括处理缓冲器(操作311),则可以从存储池BP中分配处理缓冲器(操作313)。有可能希望套接字创建包括例如SCB创建(操作307),以及对一个或多个相关联的处理缓冲器的分配(操作313)。然而,有可能不会请求在创建套接字时分配处理缓冲器,并且可以根据需要在稍后的时间上分配处理缓冲器。通信进程的缓冲器资源请求可以包括对一个或多个备用缓冲器的请求(操作314)。
在某些实施例中,有可能希望在操作313期间结合对处理缓冲器的分配而常规地分配备用缓冲器。然而,这不是必须的,并且有可能有利的是响应于预定的操作状态而分配备用缓冲器(操作315)。这种预定的操作状态可以是预定的存储器状态,例如当处理缓冲存储池BP中的可用空闲存储位置减小到小于大约级别L时的状态。一般来说,采用响应于预定的操作状态而分配备用缓冲器的方法,在存在预定的操作状态之前(PRE-STATE),可以同时从处理缓冲存储池BP中分配发送备用缓冲器和接收备用缓冲器(操作317)。在存在预定的状态之后(POST-STATE),有可能希望改为从备用缓冲池BR中分配备用缓冲器(操作321)。同样有可能有利的是从发送备用缓冲存储池部分TS中创建发送备用缓冲器,并从接收备用缓冲存储池部分RS中创建接收备用缓冲器。发送备用缓冲存储池部分TS和接收备用缓冲存储池部分RS可以是备用缓冲池BR的构成部分。
如同以上对于图3A所示,执行阶段302可以具有多种操作模式。对于图3B,在PRE-STATE的情况下,可以选择沿着处理路径B 319的第一操作模式,而在POST-STATE的情况下,可以选择沿着处理路径C323的第二操作模式。尽管可以结合此处的实施例而采用替代性的或另外的操作模式,但为清楚起见,在图3C中示出了执行阶段350的两个非限制性的示例性操作模式,即PRE-STATE操作模式351和POST-STATE操作模式360。为了与先前的示例保持一致,当空闲存储位置的数目大于或等于大约级别L时,通信存储管理过程300可以沿着处理路径B 319进入PRE-STATE操作模式351。与此类似,当空闲存储位置的数目小于大约级别L时,通信存储管理过程300可以沿着处理路径C 323进入POST-STATE操作模式360。
在示例性的PRE-STATE操作模式351中,可以在本地主机中的本地通信进程中的包括SCB和处理缓冲器的相应本地套接字与远程主机中的远程通信进程中的远程套接字之间传送消息,其间可以对通信存储器进行监控(操作352)。在操作352期间,可以使用消息通信协议来传送消息,这些消息通信协议包括而不限于公知的TCP传输协议和UDP传输协议。在通信结束时,可以关闭套接字并且其关联资源可以变为空闲或未使用。有利的是,PRE-STATE操作模式351可以包括存储回收(操作330),通过存储回收,可以将与已关闭的套接字相关联的已占用的存储空间指定为空闲存储空间并将其返回空闲存储池以供重新使用。
同样,可以基于操作330中所采用的存储分配策略而将选定的已占用的存储空间指定为空闲存储空间。例如,有可能希望采用一种存储分配策略,其中对最初分配给具有第一优先级的第一进程的不经常使用的缓冲器进行重新分配,并将其分配给具有第二优先级的第二进程,并且其中第二优先级高于第一优先级。随着通信进程在PRE-STATE操作模式351期间继续,有可能导致可用空闲存储空间数量发生波动,有可能希望确定是否产生了预定的操作状态(操作353)。如果执行阶段350还没有进入POST-STATE状态,则有可能希望确定本地通信进程是否请求了另外的资源(操作355)。当不存在预定的操作状态时,有可能希望确定是否请求了另外的资源(操作333)。如果请求了另外的资源,则经由处理路径A 325将这种资源请求发送给初始化阶段301(例如图3B)。如果没有请求另外的资源,则当经由相应的本地套接字将消息传送给远端套接字时,可以继续通信处理存储监控(操作352)。
当存在POST-STATE状态时(操作353),还有可能希望确定是否需要另外的资源(操作340),包括例如另外的套接字或另外的缓冲器,或者同时需要这两者。当请求诸如另外的套接字或在进行了相应的配置的情况下的一个或多个另外的缓冲器之类的另外的资源时,可以经由处理路径A 325将这种请求发送给初始化阶段301(图3B)。另一方面,当在产生POST-STATE状态之后没有请求另外的资源时,执行阶段350操作可以经由处理路径C 323而继续,即进入POST-STATE操作模式350。
在POST-STATE操作模式360中,有可能希望确定是否已经耗尽相应的处理缓冲器内的空闲存储空间(操作361)。例如,在已经接收到消息突发之后但在对处理缓冲器进行读取之前,相应的接收处理缓冲器有可能已经充满。当然,处理缓冲器内的空闲存储空间有可能不同于处理缓冲池BP或备用缓冲池BR中的空闲存储空间,原因是通常可以从处理缓冲池BP中创建处理缓冲器空闲存储空间并将其分配给相应的套接字。根据与相应的套接字相关联的通信进程的需求,处理缓冲器可以在其中包括空闲存储位置和已占用的存储位置。当处理缓冲器空闲存储空间基本上耗尽时,可以通过采用与相应的套接字相关联的备用缓冲器来避免死锁或另一不期望的通信状态(操作365),从而使得通信可以继续。有可能希望限制本地主机与远程主机之间的通信以对消息、状态消息等进行流量控制,这对于预防或防止由于缓冲器匮乏、缓冲器死锁和其他受限的缓冲器通信状态而引起的通信故障比较有用。
然而,当相应的处理缓冲器具有足够的空闲存储空间时,可以采用可用的缓冲存储器在本地主机中的本地通信进程中的包括SCB和处理缓冲器的相应本地套接字与远程主机中的远程通信进程中的远程套接字之间传送消息(操作363)。在操作363中,可以使用消息通信协议来传送消息,这些消息通信协议包括而不限于公知的TCP传输协议和UDP传输协议。除处理缓冲器在操作363中实现消息传送之外,相关联的套接字还可以采用相应的通信备用缓冲器(操作365)。有利的是,如同在PRE-STATE操作模式351中,POST-STATE操作模式360可以采用存储回收(操作330),例如,存储回收可以包括将分配给发送备用缓冲器的已占用的存储空间释放回存储池TS,将分配给接收备用缓冲器的已占用的存储空间释放回存储池RS,并将分配给处理缓冲器的已占用的存储空间释放回空闲存储池BP。同样,POST-STATE操作模式360中的存储回收(操作330)可以包括使得最初分配给较低的协议层但当前不再使用的存储位置可供重新使用。尽管有可能有利的是将这种回收的存储空间包括在发送备用缓冲池TS中,但还是有可能希望将这种存储空间的一部分或全部包括在接收备用缓冲存储池RS中。此外,可以将这种存储空间的全部或一部分包括在诸如存储池BP之类的空闲存储池中。此外,特别是当可以将过程300配置为动态存储分配时,存储回收还可以包括将存储空间从第一进程、存储器类型中或同时从这两者中重新分配给第二进程、缓冲器类型或同时分配给这两者。例如,可以将第一进程的发送缓冲器重新分配给第二进程的接收缓冲器,并且反之亦然。
在存储回收(操作330)之后,有可能希望确定选定的处理缓冲器中是否有可用于传送消息的足够存储空间(操作369)。当选定处理缓冲器的空闲存储空间几乎耗尽时,除存储回收(操作330)之外,有可能有用的是执行预定的存储管理步骤(操作367)。在示例性的存储管理步骤中,当选定的处理缓冲器是接收处理缓冲器时,预定的存储管理步骤可以包括RS池缓冲器交换,其中当将接收备用缓冲器指定为空闲存储空间时可以将到来消息置于接收备用缓冲池RS中。同样,当接收备用缓冲存储器不足以传送另外的消息时,方便的做法可以是在可以恢复足够的存储空间之前,例如从在通信结束时关闭的套接字、从在进程之间重新分配的一个或多个处理缓冲器等中丢弃接收消息。当选定的处理缓冲器是发送处理缓冲器时,预定的存储管理步骤可以包括阻止将另外的消息添加到发送处理缓冲器。当与特定套接字相关联的接收处理缓冲器、发送处理缓冲器或这两者都几乎充满时,有可能希望采用相应的备用缓冲器来继续传送选定的消息,诸如控制消息(例如“确认”)(操作365)。
当然,本领域的普通技术人员可以意识到,图1和图2中所述的结构以及图3A、图3B和图3C中的实现过程300的操作都是说明性的,并且仅旨在对此处的发明原理进行例示。因此,图1、图2、图3A、图3B和图3C所示的示例性实体可以直接地或间接地实现,整体地或部分地实现,以硬件实现,以软件实现,或以这些方式的可操作组合实现,并且这些示例性实体可以是分布在整个MSM(例如MSM 112)、通信管理器(例如通信管理器203)、本地主机(例如LHOST 102或LHOST 201)或者通信系统(例如通信系统100))上的功能的可操作结果。尽管在此在分级多层的TCP/IP传输/网络层协议组的环境中描述了示例性的方法和设备,但这些示例性方法和设备还可以用于在采用包括而不限于基于确认的通信协议的其他直接或间接的响应类型的通信协议的主机之间提供消息传送。
现在,在不偏离本发明的本质和范围的情况下,本领域的普通技术人员可以想到并得到多种替代、修改、变更和等效形式。因此,应当理解,已经仅出于示例的目的阐明了所示的实施例,并且不应将其看作对本发明的限制,本发明由以下权利要求限定。因此,可读的以下权利要求不但包括以文字形式阐明的单元的组合,而且还包括以基本上相同的方式执行基本上相同的功能以获得基本上相同的效果的所有等效单元。因此,应将权利要求理解为包括以上具体示出和描述的内容,原理上等效的内容,以及结合本发明的内容。
Claims (57)
1.一种用于在本地主机与具有远程主机接口的远程主机之间传送消息的方法,包括:
为本地主机接口分配对应于本地主机接口的通信控制数据结构,所述本地主机接口位于所述本地主机中;
将处理缓冲器分配给所述通信控制数据结构以便存储所述消息;以及
将备用缓冲器分配给所述通信控制数据结构,所述备用缓冲器响应于预定的操作状态而存储所述消息。
2.根据权利要求1所述的方法,还包括从位于全局存储池中的未分配的空闲存储器对象中分配所述通信控制数据结构、所述处理缓冲器和所述备用缓冲器,此后将所述通信控制数据结构、所述处理缓冲器和所述备用缓冲器指定为已分配的存储器对象。
3.根据权利要求2所述的方法,还包括:
将未分配的空闲存储器对象作为多个处理缓冲器分配给所述通信控制数据结构以便存储所述消息;以及
将所述多个处理缓冲器中的多个选定的处理缓冲器指定为发送处理缓冲器,将所述发送处理缓冲器配置为存储发送消息。
4.根据权利要求3所述的方法,还包括:
将所述多个处理缓冲器中的其他选定的处理缓冲器指定为接收处理缓冲器,将所述接收处理缓冲器配置为存储接收到的消息。
5.根据权利要求4所述的方法,还包括:
将未分配的空闲存储器对象作为多个备用缓冲器分配给通信控制数据结构;
将所述多个备用缓冲器中的多个选定的备用缓冲器指定为发送备用缓冲器;以及
将所述发送备用缓冲器与相应的发送处理缓冲器相关联。
6.根据权利要求5所述的方法,还包括:
将所述多个备用缓冲器中的其他选定的备用缓冲器指定为接收备用缓冲器;以及
将所述接收备用缓冲器与相应的接收处理缓冲器相关联。
7.根据权利要求6所述的方法,其中所述本地主机接口包括TCP套接字,并且所述通信控制数据结构包括TCP套接字控制功能块。
8.根据权利要求7所述的方法,还包括采用动态存储分配、动态存储回收以及其组合来管理位于所述全局存储器中的已分配的存储器对象和未分配的存储器对象,使由所述未分配的存储器对象表示的未分配的空闲存储空间最大化。
9.根据权利要求6所述的方法,其中所述预定操作状态表示未分配的空闲存储空间小于预定存储限度。
10.一种用于在本地主机与具有远程主机接口的远程主机之间传送消息的方法,所述本地主机具有未分配的空闲存储空间,所述方法包括:
分配TCP套接字控制功能块,所述TCP套接字控制功能块适合于与本地主机套接字相对应;
将多个处理缓冲器分配给所述TCP套接字控制功能块,以便存储在所述本地主机中的所述套接字与所述远程主机中的所述远程主机接口之间传送的消息;
将多个备用缓冲器分配给所述TCP套接字控制功能块;
将所述多个处理缓冲器中的多个选定的处理缓冲器指定为发送处理缓冲器,将所述发送处理缓冲器配置为存储从所述本地主机套接字发送到所述远程主机接口的消息;
将所述多个处理缓冲器中的其他选定的处理缓冲器指定为接收处理缓冲器,将所述接收处理缓冲器配置为存储接收到的从所述远程主机接口到所述本地主机套接字的消息;
将所述多个备用缓冲器中的多个选定的备用缓冲器指定为发送备用缓冲器,将所述发送备用缓冲器配置为响应于预定的操作状态而存储从所述本地主机套接字发送到所述远程主机接口的消息;
将所述多个备用缓冲器中的其他选定的备用缓冲器指定为接收备用缓冲器,将所述接收备用缓冲器配置为响应于预定的操作状态而存储接收到的从所述远程主机接口到所述本地主机套接字的消息;
将所述发送备用缓冲器与相应的发送处理缓冲器相关联;以及
将所述接收备用缓冲器与相应的接收处理缓冲器相关联;
其中从位于全局存储池中的未分配的空闲存储空间中分配所述TCP套接字控制功能块、所述处理缓冲器和所述备用缓冲器;并且
其中所述预定的操作状态包括未分配的空闲存储空间的量小于预定的存储限度。
11.一种用于在本地主机与具有远程主机接口的远程主机之间传送消息的方法,包括:
从位于所述本地主机中的通信缓冲器的空闲存储空间中分配通信控制数据结构,所述通信控制数据结构对应于本地主机接口;
将多个处理缓冲器分配给所述通信控制数据结构;
将所述多个处理缓冲器中的多个选定的处理缓冲器指定为发送处理缓冲器,并将所述多个处理缓冲器中的其他选定的处理缓冲器指定为接收处理缓冲器;
将多个备用缓冲器分配给所述通信控制数据结构;以及
将所述多个备用缓冲器中的多个选定的备用缓冲器指定为发送备用缓冲器,并将所述多个备用缓冲器中的其他选定的备用缓冲器指定为接收备用缓冲器;
其中将所述多个处理缓冲器均配置为存储在所述本地主机中的所述本地主机接口与所述远程主机中的所述远程主机接口之间传送的消息;
其中将所述接收处理缓冲器配置为存储接收到的从所述远程主机接口到所述本地主机接口的消息,并将所述发送处理缓冲器配置为存储从所述本地主机接口发送到所述远程主机接口的消息;
其中将所述多个备用缓冲器均配置为存储在所述本地主机中的所述本地主机接口与所述远程主机中的所述远程主机接口之间传送的消息;并且
其中所述备用缓冲器响应于预定的存储器状态而存储消息。
12.根据权利要求11所述的方法,还包括:
将选定发送备用缓冲器与相应的选定发送处理缓冲器相关联;以及
将选定接收备用缓冲器与相应的选定接收处理缓冲器相关联。
13.根据权利要求11所述的方法,其中所述预定操作状态表示未分配的空闲存储空间的量小于预定存储限度。
14.一种用于在本地主机与远程主机之间传送消息的方法,所述本地主机包括全局存储池,所述方法包括:
将所述全局存储池划分为处理缓冲池BP和备用缓冲池BR;
响应于请求,从池BP中创建对应于本地主机接口的通信控制数据结构;
响应于请求,从池BP中分配处理缓冲器给所述通信控制数据结构,以便存储在所述本地主机中的所述本地主机接口与所述远程主机中的远程主机接口之间传送的消息;以及
响应于请求,将备用缓冲器分配给所述通信控制数据结构;
其中响应于预定的存储器状态而从池BP和池BR之一中分配所述备用缓冲器;并且
其中所述备用缓冲器响应于预定的存储器状态而存储在所述本地主机中的所述本地主机接口与所述远程主机中的所述远程主机接口之间传送的消息。
15.根据权利要求14所述的方法,还包括:
在所述本地主机与具有远程主机接口的所述远程主机之间的通信网络上建立通信链路;以及
以下步骤之一:
(a)在将发送消息发送给所述远程主机之前,将所述发送消息存储于发送处理缓冲器中;
(b)在从所述远程主机接收到接收消息之后,将所述接收消息存储于接收处理缓冲器中;
(c)(a)和(b)的组合。
16.根据权利要求15所述的方法,还包括:
监控池BP或与空闲存储池协作的池BP,以便确定是否存在预定的存储器状态;以及
如果存在所述预定的存储器状态,则进行以下步骤之一:
(a)在将发送消息发送给所述远程主机之前,将所述发送消息存储于发送备用缓冲器中;
(b)在从所述远程主机接收到接收消息之后,将所述接收消息存储于接收备用缓冲器中;以及
(c)(a)和(b)的组合。
17.根据权利要求16所述的方法,其中池BP包括空闲存储位置、已占用的存储位置以及其组合,并且其中如果空闲存储位置小于预定存储级别L,则存在所述预定的存储器状态。
18.根据权利要求17所述的方法,其中在所述本地主机与所述远程主机之间的所述通信网络上建立所述通信链路包括使用预定的传输层协议在所述本地主机接口与所述远程主机接口之间建立所述通信链路。
19.根据权利要求18所述的方法,其中所述本地主机接口包括套接字,并且所述通信控制数据结构包括套接字控制功能块。
20.根据权利要求19所述的方法,其中至少一部分所述通信链路包括物理空中接口Um,并且在所述本地主机与所述远程主机之间的所述通信网络上建立所述通信链路还包括使用预定的无线协议在所述一部分通信链路上进行通信。
21.一种用于在本地主机与远程主机之间传送消息的方法,所述本地主机包括全局存储池,所述方法包括:
将所述全局存储池划分为处理缓冲池BP和备用缓冲池BR;
响应于相应的请求,从池BP的空闲存储空间中创建对应于相应的本地主机接口的相应的通信控制数据结构;
响应于相应的请求,从池BP的空闲存储空间中分配相应的处理缓冲器给所述相应的通信控制数据结构,以便存储在所述本地主机中的所述本地主机接口与所述远程主机中的所述远程主机接口之间传送的消息;
将所述处理缓冲器中的多个处理缓冲器指定为发送处理缓冲器,并将所述处理缓冲器中的其他处理缓冲器指定为接收处理缓冲器;
将选定的发送处理缓冲器和选定的接收处理缓冲器与相应的通信控制数据结构相关联;
响应于相应的请求,将相应的备用缓冲器分配给所述通信控制数据结构,其中响应于预定的存储器状态而从池BP和池BR之一中分配所述备用缓冲器;
将所述备用缓冲器中的多个备用缓冲器指定为发送备用缓冲器,并将所述备用缓冲器中的其他备用缓冲器指定为接收备用缓冲器;以及
将选定的发送备用缓冲器和选定的接收备用缓冲器与相应的通信控制数据结构相关联;
其中池BP和池BR均包括空闲存储位置、已占用的存储位置以及其组合;并且
其中所述备用缓冲器响应于预定的存储器状态而存储在所述本地主机中的所述本地主机接口与所述远程主机中的所述远程主机接口之间传送的消息。
22.根据权利要求21所述的方法,还包括将选定的发送备用缓冲器与相应的发送处理缓冲器相关联,并将选定的接收备用缓冲器与相应的接收处理缓冲器相关联。
23.根据权利要求22所述的方法,还包括:
在所述本地主机与具有远程主机接口的所述远程主机之间的通信网络上建立通信链路;以及
以下步骤之一:
(a)在将发送消息发送给所述远程主机之前,将所述发送消息存储于相应的空闲存储空间的发送处理缓冲器中,在进行所述存储之后,将所述相应的空闲存储空间的发送处理缓冲器指定为已占用的存储空间的发送处理缓冲器;
(b)在从所述远程主机接收到接收消息之后,将所述接收消息存储于相应的空闲存储空间的接收处理缓冲器中,在进行所述存储之后,将所述相应的空闲存储空间的接收处理缓冲器指定为已占用的存储空间的接收处理缓冲器;
(c)(a)和(b)的组合。
24.根据权利要求23所述的方法,其中如果池BP中的空闲存储空间小于预定存储级别L,则存在所述预定的存储器状态。
25.根据权利要求24所述的方法,还包括:
监控池BP,以便确定是否存在所述预定的存储器状态;以及
如果存在所述预定的存储器状态,则进行以下步骤之一:
(a)在将发送消息发送给所述远程主机之前,将所述发送消息存储于相应的发送备用缓冲器中;
(b)在从所述远程主机接收到接收消息之后,将所述接收消息存储于相应的接收备用缓冲器中;以及
(c)(a)和(b)的组合。
26.根据权利要求25所述的方法,还包括:
响应于选定的存储管理策略而将选定的发送处理缓冲器、选定的发送备用缓冲器、选定的接收处理缓冲器以及选定的接收备用缓冲器与相应的通信控制数据结构相关联;以及
根据所述选定的存储管理策略,通过以下步骤之一来实现所述关联:
(a)将选定的已占用存储空间的发送处理缓冲器中的多个发送处理缓冲器指定为选定的空闲存储空间的发送处理缓冲器,并将所述选定的空闲存储空间的发送处理缓冲器与池BP的空闲存储空间相关联;
(b)将选定的已占用存储空间的发送备用缓冲器中的多个发送备用缓冲器指定为选定的空闲存储空间的发送备用缓冲器,并将所述选定的空闲存储空间的发送备用缓冲器与池BR的空闲存储空间相关联;
(c)将选定的已占用存储空间的接收处理缓冲器中的多个接收处理缓冲器指定为选定的空闲存储空间的接收处理缓冲器,并将所述选定的空闲存储空间的接收处理缓冲器与池BP的空闲存储空间相关联;
(d)将选定的已占用存储空间的接收备用缓冲器中的多个接收备用缓冲器指定为选定的空闲存储空间的接收备用缓冲器,并将所述选定的空闲存储空间的接收备用缓冲器与池BR的空闲存储空间相关联;以及
(e)(a)、(b)、(c)和(d)中的至少两个步骤的组合;
其中所述选定的存储管理策略包括采用动态存储管理,所述动态存储管理包括动态存储分配、动态存储回收以及其组合中的一种方式;
其中所述动态存储管理适用于选择性地将缓冲器分配从第一通信控制数据结构变为第二通信控制数据结构;
其中所述动态存储管理适用于选择性地将备用缓冲器关联从第一处理缓冲器变为第二处理缓冲器;并且
其中将所述选定的存储管理策略配置为使空闲存储空间最大化。
27.根据权利要求26所述的方法,其中在所述本地主机与所述远程主机之间的所述通信网络上建立通信链路还包括使用以下协议之一在所述本地主机接口与所述远程主机接口之间建立所述通信链路:
预定的网络层协议;
预定的传输层协议;以及
结合预定的传输层协议而使用的预定的网络层协议。
28.根据权利要求27所述的方法,其中所述本地主机接口是套接字,并且所述通信控制数据结构是套接字控制功能块。
29.根据权利要求28所述的方法,其中在所述本地主机接口与所述远程主机接口之间建立所述通信链路包括结合所述预定的传输层协议而使用所述预定的网络层协议;
其中所述预定的网络层协议是网际协议;
其中所述预定的传输层协议是传输控制协议;
其中所述套接字是传输控制协议套接字;并且
其中所述套接字控制功能块是TCP套接字控制功能块。
30.根据权利要求29所述的方法,其中至少一部分所述通信链路包括物理空中接口Um,并且在所述本地主机与所述远程主机之间的所述通信网络上建立通信链路还包括使用预定的无线协议在所述一部分通信链路上进行通信。
31.根据权利要求21所述的方法,还包括:
从所述处理缓冲器池BP中将处理缓冲器分配为发送处理缓冲器和接收处理缓冲器;
从所述备用缓冲器池BR中将备用缓冲器分配为发送备用缓冲器和接收备用缓冲器;
使所述发送备用缓冲器与所述发送处理缓冲器可协作地相关联,所述发送备用缓冲器与所述相关联的发送处理缓冲器协作,以响应于所述预定的操作状态的存在而存储发送消息;
使所述接收备用缓冲器与所述接收处理缓冲器可协作地相关联,所述接收备用缓冲器与所述相关联的接收处理缓冲器协作,以响应于所述预定的操作状态的存在而存储接收消息。
32.根据权利要求31所述的方法,还包括:
监控所述未分配的空闲存储空间以便确定所述未分配的空闲存储空间是否减小到小于所述预定的存储级别;以及
如果所述未分配的空闲存储空间减小到了小于所述预定的存储级别,则将消息存储于所述发送备用缓冲器和所述接收备用缓冲器中的至少一个备用缓冲器中。
33.根据权利要求32所述的方法,还包括:
将所述备用缓冲池划分为发送备用缓冲池和接收备用缓冲池;以及
如果所述未分配的空闲存储空间减小到了小于所述预定的存储级别,则从所述发送备用缓冲池中分配所述发送备用缓冲器,并从所述接收备用缓冲池中分配所述接收备用缓冲器。
34.根据权利要求33所述的方法,还包括采用存储分配、存储回收以及其组合中的一种方式来管理所述通信缓冲器、所述处理缓冲器和所述备用缓冲器中的存储空间。
35.一种本地主机与远程主机之间的通信系统,包括:
通信管理器,其位于所述本地主机中,并且适用于与所述远程主机之间传送消息,所述通信管理器包括:
处理缓冲器,其配置为存储与所述远程主机之间传送的所述消息;以及
备用缓冲器,其配置为在存在预定的操作状态的情况下存储所述消息;
网络通信链路,建立所述网络通信链路是为了在所述本地主机与所述远程主机之间传送所述消息;以及
收发信机,其连接在所述通信管理器与所述网络通信链路之间,并部署为在所述网络通信链路与所述通信管理器之间传送所述消息。
36.根据权利要求35所述的通信系统,其中所述通信管理器对所述本地主机中执行的本地进程进行响应,所述通信管理器还包括:
通信接口,其连接到所述本地进程,并适用于在所述处理缓冲器或所述备用缓冲器与所述本地进程之间交换消息;
通信控制数据结构,其特征在于所述通信接口并将其分配给所述通信接口,其中将所述处理缓冲器和所述备用缓冲器分配给所述通信控制数据结构。
37.根据权利要求36所述的通信系统,其中所述通信管理器还包括通信缓冲器,所述通信缓冲器位于所述通信管理器中并包括已分配的存储器对象、未分配的空闲存储空间以及其组合;
其中所述通信控制数据结构、所述处理缓冲器和所述备用缓冲器中均为所述通信缓冲器中的已分配存储器对象;并且
其中当未分配的空闲存储空间小于预定的空闲存储空间级别时,存在所述预定的操作状态。
38.根据权利要求37所述的通信系统,还包括通信缓冲管理器,其可操作地连接到所述通信缓冲器并监控未分配的空闲存储空间以便确定是否存在所述预定的操作状态,所述通信缓冲管理器使得响应于所述预定的操作状态的存在而将消息存储于所述备用缓冲器中。
39.根据权利要求38所述的通信系统,还包括分配给所述通信控制数据结构的处理缓冲器和备用缓冲器;
其中将所述处理缓冲器中的多个处理缓冲器指定为发送处理缓冲器,并将所述处理缓冲器中的其他处理缓冲器指定为接收处理缓冲器;
其中将所述备用缓冲器中的多个备用缓冲器指定为发送备用缓冲器,并将所述备用缓冲器中的其他备用缓冲器指定为接收备用缓冲器;
其中使多个选定的发送备用缓冲器与相应的发送处理缓冲器可协作地相关联,并将多个选定的接收备用缓冲器与相应的接收处理缓冲器可协作地相关联。
40.根据权利要求39所述的通信系统,其中将所述通信缓冲器划分为处理缓冲池BP和备用缓冲池BR,从处理缓冲池中分配所述处理缓冲器并且从备用缓冲池中分配所述备用缓冲器。
41.根据权利要求40所述的通信系统,其中所述本地主机与所述远程主机结合预定的传输层协议而使用所述预定的网络层协议通过所述网络通信链路传送所述消息。
42.根据权利要求41所述的通信系统,其中所述预定的网络层协议包括网际协议,其中所述预定的传输层协议包括传输控制协议,其中所述通信接口包括传输控制套接字,并且其中所述通信控制数据结构包括TCP套接字控制功能块。
43.根据权利要求42所述的通信系统,其中一部分所述网络通信链路通过物理空中(Um)接口,并且其中所述本地主机与所述远程主机使用预定的无线协议通过所述一部分网络通信链路传送所述消息。
44.一种移动通信设备,包括:
收发信机,其位于所述移动通信设备中,并且适用于使用预定的无线协议通过一部分通信网络链路连接到远程主机;以及
通信管理器,其位于所述移动通信设备中,可操作地连接到所述收发信机,并且适用于与所述远程主机之间传送信息,所述通信管理器包括通信缓冲器,所述通信缓冲器具有未分配的空闲存储空间和在其中分配的备用缓冲器,所述备用缓冲器响应于所述未分配的空闲存储空间减小到了小于预定的存储级别而存储与所述远程主机之间传送的所述消息。
45.根据权利要求44所述的移动通信设备,还包括在所述通信缓冲器中分配的处理缓冲器,所述备用缓冲器与所述处理缓冲器相关联,所述处理缓冲器基本上独立于所述未分配的空闲存储空间是否减小到了小于预定的存储级别而存储与所述远程主机之间传送的所述消息,并且所述处理缓冲器与所述备用缓冲器协作,以响应于所述未分配的空闲存储空间减小到了小于预定的存储级别而存储与所述远程主机之间传送的所述消息。
46.根据权利要求45所述的移动通信设备,其中将所述通信缓冲器划分为处理缓冲池和备用缓冲池,从处理缓冲池中分配所述处理缓冲器并且从备用缓冲池中分配所述备用缓冲器。
47.根据权利要求46所述的移动通信设备,其中将所述处理缓冲器分配为发送处理缓冲器和接收处理缓冲器,并将所述备用缓冲器分配为发送备用缓冲器和接收备用缓冲器,其中使所述发送备用缓冲器可协作地与所述发送处理缓冲器相关联并使所述接收备用缓冲器可协作地与所述接收处理缓冲器相关联,其中将所述发送处理缓冲器和所述发送备用缓冲器配置为存储发送给所述远程主机的消息,并且其中将所述接收处理缓冲器和所述接收备用缓冲器配置为存储从所述远程主机接收到的消息。
48.根据权利要求47所述的移动通信设备,还包括:
本地进程,其在所述本地主机上执行,并且具有在所述本地进程与所述通信缓冲器之间交换消息的本地进程接口;以及
本地主机通信接口控制结构,其对应于所述本地进程接口,并且配置为与所述远程主机中的远程进程接口之间传送消息,所述本地主机通信接口控制结构可通信地与所述处理缓冲器和所述备用缓冲器协作,将所述处理缓冲器和所述备用缓冲器分配给所述本地主机接口控制结构的。
49.根据权利要求47所述的移动通信设备,还包括连接到所述通信缓冲器的通信缓冲管理器;
其中所述通信缓冲管理器将所述通信缓冲器划分为所述发送处理缓冲器和所述接收处理缓冲器;
其中所述通信缓冲管理器将所述处理缓冲器分配为所述发送处理缓冲器和所述接收处理缓冲器;
其中所述通信缓冲管理器将所述备用缓冲器分配为所述发送备用缓冲器和所述接收备用缓冲器;
其中所述通信缓冲管理器监控所述未分配的空闲存储空间;并且
其中所述通信缓冲管理器使得响应于所述未分配的空闲存储空间减小到了小于预定的存储级别而将消息存储于所述发送备用缓冲器和所述接收备用缓冲器中的至少一个备用缓冲器中。
50.根据权利要求47所述的移动通信设备,其中将备用缓冲池划分为发送备用缓冲池和接收备用缓冲池,并且备用缓冲池可以对所述未分配的空闲存储空间减小到了小于预定的存储级别进行响应,其中从所述发送备用缓冲池中分配所述发送备用缓冲器并且从所述接收备用缓冲池中分配所述接收备用缓冲器。
51.根据权利要求47所述的移动通信设备,其中所述通信缓冲管理器将所述备用缓冲池划分为发送备用缓冲池和接收备用缓冲池,并对所述未分配的空闲存储空间减小到了小于预定的存储级别进行响应,其中所述通信缓冲管理器从所述发送备用缓冲池中分配所述发送备用缓冲器并从所述接收备用缓冲池中分配所述接收备用缓冲器。
52.根据权利要求51所述的移动通信设备,其中所述通信缓冲管理器实现了动态存储分配、动态存储回收以及其组合中的一种方式,从而使未分配的空闲存储空间最大化。
53.根据权利要求51所述的移动通信设备,其中所述通信缓冲管理器还包括:
处理缓冲管理器,其管理所述处理缓冲器,所述管理包括存储分配、存储回收以及其组合中的一种方式;以及
备用缓冲管理器,其管理所述备用缓冲器,所述管理包括存储分配、存储回收以及其组合中的一种方式。
54.根据权利要求45所述的移动通信设备,其中所述通信缓冲管理器响应于期望的缓冲器大小、本地通信接口的预期通信用途、预定的通信参数以及其组合中的一个参数而选择在所述通信缓冲器中分配的处理缓冲器大小和处理缓冲器数目中的至少一个。
55.根据权利要求45所述的移动通信设备,其中所述通信缓冲管理器响应于期望的缓冲器大小、本地通信接口的预期通信用途、预定的通信参数以及其组合中的一个参数而选择在所述通信缓冲器中分配的备用缓冲器大小和备用缓冲器数目中的至少一个。
56.根据权利要求55所述的移动通信设备,其中所述通信缓冲管理器响应于期望的缓冲器大小、本地通信接口的预期通信用途、预定的通信参数以及其组合中的一个参数而选择在所述通信缓冲器中分配的备用缓冲器大小和备用缓冲器数目中的至少一个。
57.根据权利要求56所述的移动通信设备,其中所述通信缓冲管理器还包括:
处理缓冲管理器,其管理所述处理缓冲器,所述管理包括存储分配、存储回收以及其组合中的一种方式;以及
备用缓冲管理器,其管理所述备用缓冲器,所述管理包括存储分配、存储回收以及其组合中的一种方式;
其中所述处理缓冲管理器和所述备用缓冲管理器中的至少一个缓冲管理器执行动态存储分配、动态存储回收以及其组合中的一种方式而使未分配的空闲存储空间最大化。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/655,659 US7707320B2 (en) | 2003-09-05 | 2003-09-05 | Communication buffer manager and method therefor |
US10/655,659 | 2003-09-05 | ||
PCT/US2004/028578 WO2005027465A1 (en) | 2003-09-05 | 2004-09-01 | Communication buffer manager and method therefor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1868193A true CN1868193A (zh) | 2006-11-22 |
CN1868193B CN1868193B (zh) | 2011-07-27 |
Family
ID=34226166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2004800302256A Expired - Fee Related CN1868193B (zh) | 2003-09-05 | 2004-09-01 | 通信缓冲管理器和通信缓冲管理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7707320B2 (zh) |
CN (1) | CN1868193B (zh) |
MX (1) | MXPA06002542A (zh) |
WO (1) | WO2005027465A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101478472B (zh) * | 2008-10-21 | 2011-09-07 | 北京闪联讯通数码科技有限公司 | 一种Socket数据传输处理方法及装置 |
CN102546140A (zh) * | 2012-01-10 | 2012-07-04 | 苏州阔地网络科技有限公司 | 一种双工通信的方法及通信服务器 |
CN103533018A (zh) * | 2012-07-05 | 2014-01-22 | A10网络股份有限公司 | 基于动态网络条件为tcp代理会话分配缓冲区的方法 |
CN103959270A (zh) * | 2011-10-07 | 2014-07-30 | 英特尔公司 | 用于在计算装置处采用和便于动态和远程存储器协作的机制 |
CN106648452A (zh) * | 2015-11-02 | 2017-05-10 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN106921751A (zh) * | 2017-04-07 | 2017-07-04 | 广东浪潮大数据研究有限公司 | 一种可靠连接的通信方法及装置 |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007500390A (ja) * | 2003-07-28 | 2007-01-11 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | 動的メモリ割振りをした集積回路 |
US7852856B2 (en) * | 2003-08-29 | 2010-12-14 | Broadcom Corp. | System and method for providing pooling or dynamic allocation of connection context data |
US7212538B2 (en) * | 2003-09-05 | 2007-05-01 | Qualcomm Incorporated | Differential ack processing buffer manager and method therefor |
JP4291664B2 (ja) | 2003-10-14 | 2009-07-08 | 株式会社日立製作所 | 通信バッファ予約機能を備えるストレージ装置およびシステム |
US7636313B2 (en) * | 2003-12-23 | 2009-12-22 | Microsoft Corporation | Use of internal buffer to reduce acknowledgement related delays in acknowledgement-based reliable communication protocols |
JP2005333434A (ja) * | 2004-05-20 | 2005-12-02 | Matsushita Electric Ind Co Ltd | 無線モジュール |
JP2006033541A (ja) * | 2004-07-20 | 2006-02-02 | Hitachi Communication Technologies Ltd | 移動端末装置、サーバ、および通信システム |
US20060074872A1 (en) * | 2004-09-30 | 2006-04-06 | International Business Machines Corporation | Adaptive database buffer memory management using dynamic SQL statement cache statistics |
DE102005052971A1 (de) * | 2005-11-07 | 2007-05-10 | Siemens Ag | Datenverarbeitungsvorrichtung und Verfahren zum Betrieb |
CN101411134B (zh) * | 2006-03-31 | 2013-08-21 | 高通股份有限公司 | 用于高速媒体接入控制的存储器管理 |
US7694041B2 (en) * | 2006-05-19 | 2010-04-06 | Arabella Software Ltd. | Method for managing buffers pool and a system using the method |
US8726283B1 (en) * | 2007-06-04 | 2014-05-13 | Nvidia Corporation | Deadlock avoidance skid buffer |
US8472934B2 (en) * | 2007-11-28 | 2013-06-25 | Nokia Corporation | Portable apparatus, method and user interface |
US7933283B1 (en) * | 2008-03-04 | 2011-04-26 | Cortina Systems, Inc. | Shared memory management |
US9584446B2 (en) * | 2008-03-18 | 2017-02-28 | Vmware, Inc. | Memory buffer management method and system having multiple receive ring buffers |
EP2128725B1 (de) * | 2008-05-28 | 2011-06-29 | Siemens Aktiengesellschaft | Verfahren zur Zuteilung von Speicher in einem Pufferspeicher |
US8832777B2 (en) | 2009-03-02 | 2014-09-09 | Headwater Partners I Llc | Adapting network policies based on device service processor configuration |
US8355337B2 (en) * | 2009-01-28 | 2013-01-15 | Headwater Partners I Llc | Network based service profile management with user preference, adaptive policy, network neutrality, and user privacy |
US8589541B2 (en) | 2009-01-28 | 2013-11-19 | Headwater Partners I Llc | Device-assisted services for protecting network capacity |
US8117420B2 (en) * | 2008-08-07 | 2012-02-14 | Qualcomm Incorporated | Buffer management structure with selective flush |
US9572019B2 (en) | 2009-01-28 | 2017-02-14 | Headwater Partners LLC | Service selection set published to device agent with on-device service selection |
US10798252B2 (en) | 2009-01-28 | 2020-10-06 | Headwater Research Llc | System and method for providing user notifications |
US9980146B2 (en) | 2009-01-28 | 2018-05-22 | Headwater Research Llc | Communications device with secure data path processing agents |
US10237757B2 (en) | 2009-01-28 | 2019-03-19 | Headwater Research Llc | System and method for wireless network offloading |
US10326800B2 (en) | 2009-01-28 | 2019-06-18 | Headwater Research Llc | Wireless network service interfaces |
US9706061B2 (en) | 2009-01-28 | 2017-07-11 | Headwater Partners I Llc | Service design center for device assisted services |
US11985155B2 (en) | 2009-01-28 | 2024-05-14 | Headwater Research Llc | Communications device with secure data path processing agents |
US9565707B2 (en) | 2009-01-28 | 2017-02-07 | Headwater Partners I Llc | Wireless end-user device with wireless data attribution to multiple personas |
US20120047108A1 (en) * | 2010-08-23 | 2012-02-23 | Ron Mandel | Point-in-time (pit) based thin reclamation support for systems with a storage usage map api |
US8868643B2 (en) * | 2010-09-09 | 2014-10-21 | Fisher-Rosemount Systems, Inc. | Methods and apparatus to collect process control data |
US9009684B2 (en) * | 2012-04-18 | 2015-04-14 | International Business Machines Corporation | Method, apparatus and product for porting applications to embedded platforms |
WO2015039342A1 (en) * | 2013-09-23 | 2015-03-26 | Qualcomm Incorporated | Systems and methods for providing a desired bandwidth in a wireless network |
US10776033B2 (en) * | 2014-02-24 | 2020-09-15 | Hewlett Packard Enterprise Development Lp | Repurposable buffers for target port processing of a data transfer |
US9548906B2 (en) * | 2014-11-24 | 2017-01-17 | Nxp Usa, Inc. | High availability multi-partition networking device with reserve partition and method for operating |
CN105701019A (zh) | 2014-11-25 | 2016-06-22 | 阿里巴巴集团控股有限公司 | 一种内存管理方法以及装置 |
KR102246465B1 (ko) * | 2014-12-12 | 2021-04-30 | 삼성전자 주식회사 | 무선 통신 시스템에서 자원 분배 방법 및 장치 |
US10284488B1 (en) | 2016-03-30 | 2019-05-07 | Emc Corporation | Aggregate socket resource management |
US11792307B2 (en) * | 2018-03-28 | 2023-10-17 | Apple Inc. | Methods and apparatus for single entity buffer pool management |
JP7326667B2 (ja) | 2018-07-31 | 2023-08-16 | マーベル アジア ピーティーイー、リミテッド | ストレージエッジにおけるメタデータ生成 |
US11558348B2 (en) | 2019-09-26 | 2023-01-17 | Apple Inc. | Methods and apparatus for emerging use case support in user space networking |
US11829303B2 (en) | 2019-09-26 | 2023-11-28 | Apple Inc. | Methods and apparatus for device driver operation in non-kernel space |
US11567803B2 (en) * | 2019-11-04 | 2023-01-31 | Rambus Inc. | Inter-server memory pooling |
US11606302B2 (en) | 2020-06-12 | 2023-03-14 | Apple Inc. | Methods and apparatus for flow-based batching and processing |
US11775359B2 (en) | 2020-09-11 | 2023-10-03 | Apple Inc. | Methods and apparatuses for cross-layer processing |
US11954540B2 (en) | 2020-09-14 | 2024-04-09 | Apple Inc. | Methods and apparatus for thread-level execution in non-kernel space |
US11799986B2 (en) | 2020-09-22 | 2023-10-24 | Apple Inc. | Methods and apparatus for thread level execution in non-kernel space |
US11722412B1 (en) * | 2020-09-28 | 2023-08-08 | Amazon Technologies, Inc. | Dynamically managing connection parameters among multiple computing devices |
US11882051B2 (en) | 2021-07-26 | 2024-01-23 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
US11876719B2 (en) | 2021-07-26 | 2024-01-16 | Apple Inc. | Systems and methods for managing transmission control protocol (TCP) acknowledgements |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US2618A (en) * | 1842-05-12 | Beehive | ||
JP2876914B2 (ja) * | 1992-09-07 | 1999-03-31 | 日本電気株式会社 | パケット交換装置におけるバッファ制御方式 |
IL122271A (en) | 1997-11-21 | 2001-01-11 | Eci Telecom Ltd | Apparatus and method for managing network congestion |
US6286762B1 (en) * | 1999-09-21 | 2001-09-11 | Intermec Ip Corp. | Method and apparatus to perform a predefined search on data carriers, such as RFID tags |
US6308238B1 (en) | 1999-09-24 | 2001-10-23 | Akamba Corporation | System and method for managing connections between clients and a server with independent connection and data buffers |
EP1139605A1 (en) | 2000-03-31 | 2001-10-04 | Telefonaktiebolaget L M Ericsson (Publ) | Network controller and communication packet data transfer with reduced delay |
WO2001080033A2 (en) | 2000-04-17 | 2001-10-25 | Circadence Corporation | System and method for implementing application -independent functionality within a network infrastructure |
US8218555B2 (en) | 2001-04-24 | 2012-07-10 | Nvidia Corporation | Gigabit ethernet adapter |
DE60220098T2 (de) | 2001-11-15 | 2008-01-10 | Unisys Corp. | Verteiltes Computersystem mit Bestätigungsakkumulation |
US7535913B2 (en) * | 2002-03-06 | 2009-05-19 | Nvidia Corporation | Gigabit ethernet adapter supporting the iSCSI and IPSEC protocols |
-
2003
- 2003-09-05 US US10/655,659 patent/US7707320B2/en not_active Expired - Fee Related
-
2004
- 2004-09-01 CN CN2004800302256A patent/CN1868193B/zh not_active Expired - Fee Related
- 2004-09-01 MX MXPA06002542A patent/MXPA06002542A/es active IP Right Grant
- 2004-09-01 WO PCT/US2004/028578 patent/WO2005027465A1/en active Application Filing
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101478472B (zh) * | 2008-10-21 | 2011-09-07 | 北京闪联讯通数码科技有限公司 | 一种Socket数据传输处理方法及装置 |
CN103959270A (zh) * | 2011-10-07 | 2014-07-30 | 英特尔公司 | 用于在计算装置处采用和便于动态和远程存储器协作的机制 |
CN102546140A (zh) * | 2012-01-10 | 2012-07-04 | 苏州阔地网络科技有限公司 | 一种双工通信的方法及通信服务器 |
CN103533018A (zh) * | 2012-07-05 | 2014-01-22 | A10网络股份有限公司 | 基于动态网络条件为tcp代理会话分配缓冲区的方法 |
CN103533018B (zh) * | 2012-07-05 | 2018-01-09 | A10网络股份有限公司 | 基于动态网络条件为tcp代理会话分配缓冲区的方法 |
CN106648452A (zh) * | 2015-11-02 | 2017-05-10 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN106921751A (zh) * | 2017-04-07 | 2017-07-04 | 广东浪潮大数据研究有限公司 | 一种可靠连接的通信方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2005027465A1 (en) | 2005-03-24 |
CN1868193B (zh) | 2011-07-27 |
US20050055406A1 (en) | 2005-03-10 |
MXPA06002542A (es) | 2006-06-20 |
US7707320B2 (en) | 2010-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1868193A (zh) | 通信缓冲管理器和通信缓冲管理方法 | |
CN100344088C (zh) | 用于动态自动重发请求窗口管理的方法和设备 | |
US7826466B2 (en) | Communication buffer scheme optimized for VoIP, QoS and data networking over a power line | |
US7930446B2 (en) | Methods and apparatuses for wireless network communication wherein a universal serial bus request block (URB) is generated that will vary parameters that controls wireless transmission commands between devices | |
CN101040489A (zh) | 用于统一输入/输出和降低延迟的网络设备体系结构 | |
CA2285168A1 (en) | Channel allocation method and apparatus | |
CN103595655A (zh) | 互连网络中对数据流的带宽预留 | |
CN1419359A (zh) | 信息插入服务提供系统、信息插入方法、通信网络、信息管理装置、及服务控制装置 | |
CN101030959A (zh) | 一种实时确定传输的以太网通讯方法 | |
CN101030946A (zh) | 一种实现数据业务的方法及系统 | |
CN1968147A (zh) | 业务处理方法、网络设备及业务处理系统 | |
CN104580215A (zh) | 一种tcp连接热备份的实现方法 | |
US5815506A (en) | Method for providing an overlay short messaging service in a mobile satellite communication system | |
CN101039273A (zh) | 通信设备、传输控制方法、和传输控制程序 | |
CN1836411A (zh) | 会话中继设备和中继方法 | |
KR100623169B1 (ko) | 재구성된 전송창과 재구성된 수신창의 외부에 있는 데이터단위를 요약하기 위해 무선 통신 시스템에서의 데이터전달을 제어하는 방법 및 장치 | |
CN1742469A (zh) | 用于在存储区域网之间传输数据的方法和设备 | |
CN1579102A (zh) | 在电信系统中管理呼叫的方法和系统 | |
CN108495278B (zh) | 一种卫星网络中低时延资源控制的业务传输方法 | |
US20020087700A1 (en) | Method for managing socket in mobile communication system | |
CN1870527A (zh) | 一种实现转发不间断的内存告警处理方法及路由器 | |
CN1474565A (zh) | 同步数字体系网络传输数据业务的流量控制方法 | |
CN1901519A (zh) | 一种在不同传输信道上的媒体传输优化系统及优化方法 | |
US20030026291A1 (en) | Method and apparatus for the dynamic regulation of resource splitting over a plurality of data streams competing for these resources in a communications network | |
CN101980510A (zh) | 域名查询请求处理方法、递归服务器和域名系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1096503 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1096503 Country of ref document: HK |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110727 Termination date: 20180901 |