CN109522308B - 一种连接句柄管理方法和装置 - Google Patents
一种连接句柄管理方法和装置 Download PDFInfo
- Publication number
- CN109522308B CN109522308B CN201811314046.5A CN201811314046A CN109522308B CN 109522308 B CN109522308 B CN 109522308B CN 201811314046 A CN201811314046 A CN 201811314046A CN 109522308 B CN109522308 B CN 109522308B
- Authority
- CN
- China
- Prior art keywords
- connection handle
- bitmap
- handle
- use state
- available
- 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.)
- Active
Links
Images
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种连接句柄管理方法和装置。所述连接句柄管理方法包括:接收请求连接句柄的指令,从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,根据所述元素在所述位图中的位置确定所述元素对应的连接句柄,返回所述连接句柄,所述位图中的一个元素对应一个连接句柄的使用状态。能够减少内存资源的浪费和提高查找效率。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种连接句柄管理方法和装置。
背景技术
目前比较常用的专用协议栈大致分为两种:一种是以linux或者FreeBSD(一种类UNIX操作系统)标准协议栈为基础的商用专有协议栈,另一种是遵守TCP(传输控制协议)协议栈标准,按照某种系统框架进行修改而得出的开源的轻量级协议栈。最常见的能够移植商用的就是LWIP(轻型IP协议)。其他的协议栈类似OpenTCP(开源TCP),这些开源的协议栈大多适用于理论研究以及协议栈教学使用,其实现虽然提出一些比较实用的技术和概念,但缺乏一些具体实现方案,商业化难度较大。
LWIP协议栈使用整型值作为连接句柄来管理连接,并且使用这个连接句柄作为应用程序查询TCP连接的索引。但是LWIP协议栈所支持的并发连接数数量很小,默认版本只能支持四个。
与之类似的标准通用协议栈也是使用整型值作为连接句柄来管理连接,但是通用协议栈使用的连接句柄是和系统的连接句柄一样的,它们都和文件系统一样占用相同的共享资源。由于对于每个进程而言,可同时打开的连接句柄数量有限,所以系统中可以同时打开的连接句柄数量也是有最大限制的,一般系统默认的连接句柄数量是1024个。如果考虑除去普通文件占用的连接句柄数,那么可供TCP连接使用的连接句柄数将会小于1024。
针对上述的现有技术实现,如果采用和LWIP相同的方法,那么对于需要处理百万甚至千万并发连接数的系统来说,使用整型值作为连接句柄将会在连接句柄管理上消耗大量的资源,比如对于一千万连接来说,需要有一千万个连接句柄,每个连接句柄占用4字节,就需要4千万字节也就是将近40MB的存储空间,这对于内存消耗是一个比较大的浪费。另外针对连接句柄的查找,一般采用的顺序的线性表查找,当数量较大时,对系统性能也是一种降低。
发明内容
本发明实施例提供一种连接句柄管理方法和装置,提高内存资源的使用率和查找效率。
一方面,本发明实施例提供了一种连接句柄管理方法,包括:
接收请求连接句柄的指令,从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,根据所述元素在所述位图中的位置确定所述元素对应的连接句柄,返回所述连接句柄,所述位图中的一个元素对应一个连接句柄的使用状态。
在一可选实施例中,所述方法还包括:更新所述连接句柄对应的所述位图中的元素的值,以标识所述连接句柄的使用状态为不可用。
在一可选实施例中,所述方法还包括:在所述位图中维护一最大句柄指示器,以使大于或大于等于所述最大句柄指示器的所有元素为标识连接句柄使用状态为可用的元素;
所述从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,包括:当最大句柄指示器处于有效状态时,将所述最大句柄指示器所指示的元素或者所指示的元素的下一个元素作为从所述位图中查找到的标识连接句柄使用状态为可用的元素。
在一可选实施例中,所述方法还包括:维护一字节数组,所述字节数组中记录有所述位图中每个字节中的一个或多个标识连接句柄使用状态为可用的元素的位置;
所述从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,包括:根据所述字节数组中记录的标识连接句柄使用状态为可用的元素的位置,在所述位图中查找标识连接句柄使用状态为可用的元素。
在一可选实施例中,所述方法还包括:
接收释放连接句柄的指令,确定所述连接句柄对应的元素在所述位图中的位置,更新所述位图中所述元素的值,以标识所述连接句柄的使用状态为可用。
另一方面,本发明实施例还提供了一种连接句柄管理装置,所述装置包括接收模块、查找模块和返回模块,其中:
所述接收模块,用于接收请求连接句柄的指令;
所述查找模块,用于从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,根据所述元素在所述位图中的位置确定所述元素对应的连接句柄,所述位图中的一个元素对应一个连接句柄的使用状态;
所述返回模块,用于返回所述连接句柄。
在一可选实施例中,所述装置还包括:最大句柄指示器维护模块,用于在所述位图中维护一最大句柄指示器,以使大于或大于等于所述最大句柄指示器的所有元素为标识连接句柄使用状态为可用的元素;
所述查找模块从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,包括:当最大句柄指示器处于有效状态时,所述查找模块将所述最大句柄指示器所指示的元素或者所指示的元素的下一个元素作为从所述位图中查找到的标识连接句柄使用状态为可用的元素。
在一可选实施例中,所述装置还包括:数组维护模块,用于维护一字节数组,所述字节数组中记录有所述位图中每个字节中的一个或多个标识连接句柄使用状态为可用的元素的位置;
所述查找模块从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,包括:所述查找模块根据所述字节数组中记录的标识连接句柄使用状态为可用的元素的位置,在所述位图中查找标识连接句柄使用状态为可用的元素。
在一可选实施例中,所述装置还包括位图维护模块,用于更新所述连接句柄对应的所述位图中的元素的值,以标识所述连接句柄的使用状态为不可用,以及用于接收释放连接句柄的指令,确定所述连接句柄对应的元素在所述位图中的位置,更新所述位图中所述元素的值,以标识所述连接句柄的使用状态为可用。
再一方面,本发明实施例还提供了一种连接句柄管理装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。
为了减少内存资源的浪费和提高查找效率,本发明实施例提供了一种连接句柄处理方法和装置,与现有技术相比,本发明实施例方案可以用较小的内存空间存储连接句柄状态信息,与LWIP协议栈的方案相比节省了接近10倍内存空间,提高了系统内存的使用率。另外,本发明实施例通过使用位图查找连接句柄的方式使得查询效率比LWIP协议栈的方案提高了10倍以上。经实验证实本发明实施例效果理想,与设计预期一致,降低处理连接句柄的资源开销,提高了系统性能,可以应用于基于TCP/IP协议栈的具有代理功能的产品。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。本发明的其它特征和优点将在随后的说明书实施例中阐述,并且,部分地从说明书实施例中变得显而易见,或者通过实施本发明而了解。本发明实施例的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。附图中各部件的形状和大小不反映真实比例,目的只是示意说明本发明内容。
图1为本发明实施例流程图;
图2为本发明实施例装置结构示意图;
图3为本发明应用示例连接句柄位图结构图;
图4为本发明应用示例位图查询算法流程图;
图5为本发明应用示例FZB数组示意图;
图6为本发明应用示例释放算法流程图。
具体实施方式
下面结合附图和实施例对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
本文所述连接句柄在Linux系统底层也可以称为文件句柄。
如图1所示,所述连接句柄处理方法包括步骤11-13。
步骤11,接收请求连接句柄的指令;
所述指令可以是消息或者是其他的请求连接句柄的意思表示。
步骤12,从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,根据所述元素在所述位图中的位置确定所述元素对应的连接句柄;所述位图中的一个元素对应一个连接句柄的使用状态;
位图中的一个元素是一个位(bit)。所述位图的大小可根据系统支持的最大连接句柄数量来计算。
查找时,可以按照预设顺序从所述用于标识连接句柄使用状态的位图中查找标识连接句柄状态为可用的元素,例如按照从所述位图的最小位置到最大位置的顺序查找,或者按照从所述位图的最大位置到最小位置的顺序查找。查找的起始位置可以是所述位图的最小位置或者最大位置,也可以是从上次查找的结束位置开始查找。
在查找到结果后,根据查找到的所述元素在所述位图中的位置确定所述元素对应的连接句柄,返回查找结果为所述连接句柄。可以通过连接句柄值来表示一个连接句柄,通过位图中的位置计算连接句柄值,从而确定相应的连接句柄。通过位图位置到连接句柄值的转换,可以直接向请求方返回可使用的结果,便于请求方接收到结果后直接使用该连接句柄。
步骤13,返回所述连接句柄。
向发送请求连接句柄的指令的请求方返回所述连接句柄。如果未查找到,则返回结果为未查找到。
本实施例的实现方案是以位图为核心,通过对位图的状态改变来记录连接句柄的使用情况从而节约内存开销,通过查找位图可以快速的查找到可用的连接句柄从而提高系统性能。
在一个可选实施例中,所述方法还包括:更新所述连接句柄对应的所述位图中的元素的值,即在步骤12中查找到的所述元素的值,以标识所述连接句柄的使用状态为不可用。更新元素值的操作可以在查找到元素后,返回查找结果之前执行,也可以在返回查找结果之后执行。本例中所述元素的值例如可以是0或者1,还可以是其他值,只要能区别标识出可用或不可用即可。更新元素的值以便于下次查找时使用。
在一个可选实施例中,所述方法还包括:在所述位图中维护一最大句柄指示器,以使大于或大于等于所述最大句柄指示器的所有元素为标识连接句柄使用状态为可用的元素;所述位图中最大句柄指示器可以始终指向位图中标识连接句柄状态为不可用的最大元素,或者指向位图中标识连接句柄状态为不可用的最大元素的下一个元素。所述维护是指当位图中标识连接句柄状态为不可用的最大元素的值发生变化时,所述最大句柄指示器的值也需要发生变化。
所述步骤12中的从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,包括:当最大句柄指示器处于有效状态(并未指向所述位图中对应最后一个连接句柄的元素)时,将所述最大句柄指示器所指示的元素或者所指示的元素的下一个元素作为从所述位图中查找到的标识连接句柄使用状态为可用的元素。当最大句柄指示器失效时,即最大句柄指示器之后无可用元素时,此时仍可以使用前述顺序查找的方式查找标识连接句柄状态为可用的元素,因为可能曾经使用过的连接句柄已经被释放。
通过使用最大句柄指示器可以更快速地定位到可用连接句柄,提高查找效率。
在一个可选实施例中,所述方法还包括:维护一字节数组,所述字节数组中记录有所述位图中每个字节中的一个或多个标识连接句柄使用状态为可用的元素的位置;
所述从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,包括:根据所述字节数组中记录的标识连接句柄使用状态为可用的元素的位置,在所述位图中查找标识连接句柄使用状态为可用的元素。
所述字节数组中可以记录位图中每个字节中的首个标识连接句柄使用状态为可用的元素的位置,也可以记录位图中每个字节中的所有标识连接句柄使用状态为可用的元素的位置(即与位图一一对应)。所述字节数组的字节数与所述位图的字节数相同。所述字节数组相当于位图的索引,通过字节数组进行可用连接句柄的查询效率更高,例如使用一个256字节的字节数组来记录位图中各元素对应的连接句柄是否可用,查询时,逐个字节判断是否为全1或者为全0即可快速判断出哪个字节有可用的连接句柄。可选地,当最大句柄指示器失效时,也可以此种查询方式实现快速查询,提高查询效率。
在一个可选实施例中,所述方法还包括:接收释放连接句柄的指令,确定所述连接句柄对应的元素在所述位图中的位置,更新所述位图中所述元素的值,以标识所述连接句柄的使用状态为可用。
本发明实施例的连接句柄管理方法是一种高效的连接句柄管理方法,通过在专有协议栈中使用位图的方式来管理空闲连接句柄,以达到支持系统高并发连接数的目的,可以降低管理连接句柄的资源开销,提高系统性能。本发明实施例涉及到专有TCP协议栈的实现问题。本发明实施例方案可以适用于具有应用层代理功能或其他代理功能的负载均衡产品,主要用于处理基于TCP协议的数据接收和发送,特别适用于要求系统处理并发连接数很大并且对系统性能要求较高的网络应用系统。
图2提供了一种连接句柄管理装置,所述装置包括接收模块21、查找模块22和返回模块23,其中:
所述接收单元21,用于接收请求连接句柄的指令;
所述查找单元22,用于从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,根据所述元素在所述位图中的位置确定所述元素对应的连接句柄,所述位图中的一个元素对应一个连接句柄的使用状态;
所述返回模块23,用于返回所述连接句柄。
在一个可选实施例中,所述装置还包括:最大句柄指示器维护模块,用于在所述位图中维护一最大句柄指示器,以使大于或大于等于所述最大句柄指示器的所有元素为标识连接句柄使用状态为可用的元素;
所述查找模块从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,包括:当最大句柄指示器处于有效状态时,所述查找模块将所述最大句柄指示器所指示的元素或者所指示的元素的下一个元素作为从所述位图中查找到的标识连接句柄使用状态为可用的元素。
在一个可选实施例中,所述装置还包括:数组维护模块,用于维护一字节数组,所述字节数组中记录有所述位图中每个字节中的一个或多个标识连接句柄使用状态为可用的元素的位置;
所述查找模块从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,包括:所述查找模块根据所述字节数组中记录的标识连接句柄使用状态为可用的元素的位置,在所述位图中查找标识连接句柄使用状态为可用的元素。
在一可选实施例中,所述装置还包括位图维护模块,用于更新所述连接句柄对应的所述位图中的元素的值,以标识所述连接句柄的使用状态为不可用,以及用于接收释放连接句柄的指令,确定所述连接句柄对应的元素在所述位图中的位置,更新所述位图中所述元素的值,以标识所述连接句柄的使用状态为可用。
下面以一个应用示例为例对上述方法和装置进行说明。
一个整型的连接句柄需要占用4个字节的存储空间,但是实际上该连接句柄是否可用只需要一个bit就可以了,例如采用0表示可用,1表示不可用。这样一来每一个字节就可以表示8个连接句柄的状态。位图就是一个用bit位组成的一个8*n矩阵,通过设置该矩阵中的对应元素来表示某个连接句柄的使用情况,当需要使用一个连接句柄的时候,只需要找到位图中的一个为0的元素,根据该元素的下标就可以算出它对应的连接句柄,使用了该连接句柄后只需要把该元素置为1即可;当释放连接句柄的时候,先根据连接句柄的值算出它对应于位图中的元素,然后将其置为0即可。所述位图是一个字节类型的数组,其大小由需要支持的最大连接数决定,根据公式:(最大连接数+7)/8计算得出,单位是字节,采用此公式计算是为了保证使用最少的字节数,防止最大连接数不是8的倍数时浪费字节。位图每一位代表一个连接句柄的使用状态,在本例中,该连接句柄可用时位图中的对应位为0,否则为1。
整体架构结构如图3所示。图3中的连接句柄管理即为图2所示的连接句柄管理装置。该连接句柄管理装置维护一个用于标识连接句柄使用状态的位图。连接句柄申请者向该连接句柄管理装置请求可用的连接句柄,所述连接句柄管理装置使用申请算法通过快速查询位图,找到位图中标识连接句柄状态为可用的位,将该位代表的连接句柄值返回给连接句柄申请者,同时将该位设置为标识连接句柄不可用(例如为1)以完成连接句柄的申请。连接句柄释放者需要释放连接句柄时,将需要释放的连接句柄值通知给连接句柄管理装置,连接句柄管理装置使用释放算法通过连接句柄值计算出该连接句柄在位图中对应的位,并将该位设置为标识连接句柄可用(例如为0)以完成连接句柄的释放。
可选地,如果按照从小到大的顺序查找位图,为了能快速找到可用连接句柄,连接句柄管理装置在查询连接句柄时遵循以下原则:优先使用较小值作为可用连接句柄。为此,连接句柄管理模块可以维护一个最大句柄指示器,该指示器可以始终指向已经被使用的最大连接句柄的下一个位置,并且保证大于该指示器的所有连接句柄都是可以使用的。这样,可以直接使用最大句柄指示器中的值计算对应的连接句柄值返回给连接句柄申请者,提高查找速度。
所述协议栈的实现通过申请算法和释放算法完成对连接句柄位图的维护,根据对位图的快速查询找到需要操作的位并对其进行设置和清除。
所述快速查询就是快速的顺序找出位图中第一个标识连接句柄为可用(例如为0)的位,根据具体的网络应用情况可以把位图查询分为两种阶段,一个是有序位图的空闲位查询,另一个是乱序位图的空闲位查询。
所述有序位图空闲位查询指的是连接句柄尚未申请到最大值时的阶段,在此阶段连接句柄管理装置可以直接使用最大句柄指示器中的值作为查找到的连接句柄返回给申请者,在此阶段连接句柄申请者申请连接句柄的查找长度即查找位移次数为1。在网络应用大多数处理的都是短连接,连接申请和释放周期较短的场景中,虽然瞬时的连接并发量大,但是由于连接可以很快被释放,因此最大句柄指示器可以很快回退到一个较小值。使用有序位图查询能够提高在这种场景下的查询效率。最大句柄指示器中的值可以为该最大句柄指示器所指向的元素在位图中的位置。
所述乱序位图的空闲位查询指的是连接句柄已经申请到最大值时的阶段,在此阶段最大句柄指示器已经指向最大值,但是并不是说此时一定没有可用的连接句柄,由于最大句柄指示器已经失效,因此这个阶段需要重新查找第一个标识连接句柄为可用(例如为0)的位。
本实施例的位图查询算法流程如图4所示,包括步骤401-410。
步骤401,进入连接句柄查询;
步骤402,判断最大句柄指示器是否达到最大值,即最大句柄指示器是否已失效,如果是,执行步骤403,如果否,执行步骤408;
步骤403,初始化查询位置;例如可以将位图起始位置设置为查询位置;
步骤404,开始查找第一个标识使用状态为可用(例如为0)的位,如果找到,执行步骤407,如果没有找到执行步骤405;
当从步骤403跳转到步骤404时,是从初始化的查询位置开始查找第一个标识使用状态为可用的位;当从步骤405返回步骤404时,是从上一次查询到的位置继续向后查找。
步骤405,判断最大句柄指示器是否达到最大值,如果达到,执行步骤406,如果未达到,返回步骤404继续查找;
步骤406,返回查询失败的结果,结束;
步骤407,根据查找到的位在位图的位置计算连接句柄值,执行步骤410;
步骤408,将最大句柄指示器的值作为查询结果;
步骤409,使最大句柄指示器递增;例如使最大句柄指示器+1。
步骤410,返回查询结果,查询结束。
上述步骤404中所述查找可以是从位图的起始位置开始顺序查找。为了提高查询效率,可以预先使用一个256字节的数组(即上文所述字节数组,以下简称数组)表示位图中每个字节中第一个为0的bit位的位置,或者表示位图中每个字节中所有为0的bit位的位置,该数组下标从0到255分别表示该字节的值,数组成员存放该下标值对应的位图元素为0的bit位置(从低到高)(在本例中用“0”表示位图同字节中为0的位,在其他实施例中也可以用“1”来表示),该数组可命名为FZB(First Zero Bit)数组,如图5所示。以图5中数组下标为1的字节为例进行说明,该字节中的值为0000 0001,则表示位图中第二个字节中前7个元素对应的连接句柄均为可用,第8个元素对应的连接句柄为不可用。这样,在步骤404中,可以借助该数组进行快速查找,当通过数组判断当前字节中无可用位,可直接查询下一字节。
所述申请算法是使用位图查询算法得到连接句柄并将连接句柄对应的位图元素置为1的过程,由于仅有申请连接句柄的过程会涉及到位图查询,如果是使用有序位图空闲位查询的话,查询阶段已经对最大句柄指示器做过修改了,如果是乱序位图空闲位查询的话则不需要修改最大句柄指示器,因此申请算法不涉及对其值的维护。
申请算法通过快速查询查找到空闲的位,然后返回该位对应的连接句柄。假设空闲位在位图矩阵中的元素是A[i,j],则A[i,j]对应的连接句柄值fd=i*8+j。申请算法设置A[i,j]为1,然后返回该连接句柄完成申请操作。其中fd表示句柄在位图中的对应位置,是从FZB数组起止开始的偏移量。
所述释放算法是申请算法的反操作,它根据需要释放的连接句柄fd,计算出对应的位A[i,j],并将A[i,j]的值置为0,其中i=fd/8;j=fd%8(%为求余运算符)。
释放算法除了需要将位图对应位置为空闲状态以外,还需要维护最大句柄指示器的值,例如当被释放的连接句柄是最大句柄指示器标识的值的前一个时,意味着被使用的最大句柄已经被释放了,此时需要将最大句柄指示器的值进行回退,找到当前实际的最大句柄,以便后面的申请可以使用有序位图空闲位查询。释放算法流程图如图6所示,包括步骤501-506。
步骤501,根据释放的句柄计算出该连接句柄在位图中的位置;
步骤502,将位图中该元素的值置为标识连接句柄状态为可用(例如为0);
步骤503,判断所述元素是否为最大句柄指示器所指向的元素的前一个元素,如果是,执行步骤504,如果不是,转向步骤506;
步骤504,使最大句柄指示器回退一个元素;
步骤505,判断最大句柄指示器所指向的元素的上一个元素是否标识使用状态为可用(即是否为0),如果是,返回步骤504,如果不是,转向步骤506;
步骤506,释放完成。
本发明实施例还提供一种计算机存储介质,所述计算机存储介质存储有计算机程序;所述计算机程序被执行后,能够实现前述一个或多个实施例提供的深度检测方法,例如,执行如图1所示方法。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时能够实现前述一个或多个实施例提供的路径规划方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理单元的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (8)
1.一种连接句柄管理方法,其特征在于,所述方法包括:
接收请求连接句柄的指令,从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,根据所述元素在所述位图中的位置确定所述元素对应的连接句柄,返回所述连接句柄,所述位图中的一个元素对应一个连接句柄的使用状态;
在所述位图中维护一最大句柄指示器,以使大于或大于等于所述最大句柄指示器的所有元素为标识连接句柄使用状态为可用的元素;
所述从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,包括:当最大句柄指示器处于有效状态时,将所述最大句柄指示器所指示的元素或者所指示的元素的下一个元素作为从所述位图中查找到的标识连接句柄使用状态为可用的元素。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
更新所述连接句柄对应的所述位图中的元素的值,以标识所述连接句柄的使用状态为不可用。
3.根据权利要求1所述的方法,其特征在于,
所述方法还包括:维护一字节数组,所述字节数组中记录有所述位图中每个字节中的一个或多个标识连接句柄使用状态为可用的元素的位置;
所述从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,包括:根据所述字节数组中记录的标识连接句柄使用状态为可用的元素的位置,在所述位图中查找标识连接句柄使用状态为可用的元素。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收释放连接句柄的指令,确定所述连接句柄对应的元素在所述位图中的位置,更新所述位图中所述元素的值,以标识所述连接句柄的使用状态为可用。
5.一种连接句柄管理装置,其特征在于,所述装置包括接收模块、查找模块、最大句柄指示器维护模块和返回模块,其中:
所述接收模块,用于接收请求连接句柄的指令;
所述查找模块,用于从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,根据所述元素在所述位图中的位置确定所述元素对应的连接句柄,所述位图中的一个元素对应一个连接句柄的使用状态;
所述返回模块,用于返回所述连接句柄;
所述最大句柄指示器维护模块,用于在所述位图中维护一最大句柄指示器,以使大于或大于等于所述最大句柄指示器的所有元素为标识连接句柄使用状态为可用的元素;
所述查找模块从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,包括:当最大句柄指示器处于有效状态时,所述查找模块将所述最大句柄指示器所指示的元素或者所指示的元素的下一个元素作为从所述位图中查找到的标识连接句柄使用状态为可用的元素。
6.根据权利要求5所述的装置,其特征在于,
所述装置还包括:数组维护模块,用于维护一字节数组,所述字节数组中记录有所述位图中每个字节中的一个或多个标识连接句柄使用状态为可用的元素的位置;
所述查找模块从用于标识连接句柄使用状态的位图中查找标识连接句柄使用状态为可用的元素,包括:所述查找模块根据所述字节数组中记录的标识连接句柄使用状态为可用的元素的位置,在所述位图中查找标识连接句柄使用状态为可用的元素。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括位图维护模块,用于更新所述连接句柄对应的所述位图中的元素的值,以标识所述连接句柄的使用状态为不可用,以及用于接收释放连接句柄的指令,确定所述连接句柄对应的元素在所述位图中的位置,更新所述位图中所述元素的值,以标识所述连接句柄的使用状态为可用。
8.一种连接句柄处理装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-4中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811314046.5A CN109522308B (zh) | 2018-11-06 | 2018-11-06 | 一种连接句柄管理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811314046.5A CN109522308B (zh) | 2018-11-06 | 2018-11-06 | 一种连接句柄管理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109522308A CN109522308A (zh) | 2019-03-26 |
CN109522308B true CN109522308B (zh) | 2023-06-20 |
Family
ID=65773817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811314046.5A Active CN109522308B (zh) | 2018-11-06 | 2018-11-06 | 一种连接句柄管理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109522308B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110535940B (zh) * | 2019-08-29 | 2023-01-24 | 北京浪潮数据技术有限公司 | 一种bmc的连接管理方法、系统、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968382A (zh) * | 2012-12-06 | 2013-03-13 | 华为技术有限公司 | 一种空闲存储单元的查找方法及装置 |
CN103064794A (zh) * | 2013-02-04 | 2013-04-24 | 烽火通信科技股份有限公司 | 实现mpls标签高效管理的方法 |
CN107992504A (zh) * | 2016-10-26 | 2018-05-04 | 中兴通讯股份有限公司 | 一种文件处理方法及装置 |
CN108628753A (zh) * | 2017-03-24 | 2018-10-09 | 华为技术有限公司 | 内存空间管理方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8504792B2 (en) * | 2009-12-22 | 2013-08-06 | Apple Inc. | Methods and apparatuses to allocate file storage via tree representations of a bitmap |
-
2018
- 2018-11-06 CN CN201811314046.5A patent/CN109522308B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968382A (zh) * | 2012-12-06 | 2013-03-13 | 华为技术有限公司 | 一种空闲存储单元的查找方法及装置 |
CN103064794A (zh) * | 2013-02-04 | 2013-04-24 | 烽火通信科技股份有限公司 | 实现mpls标签高效管理的方法 |
CN107992504A (zh) * | 2016-10-26 | 2018-05-04 | 中兴通讯股份有限公司 | 一种文件处理方法及装置 |
CN108628753A (zh) * | 2017-03-24 | 2018-10-09 | 华为技术有限公司 | 内存空间管理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109522308A (zh) | 2019-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10705965B2 (en) | Metadata loading in storage systems | |
US9251160B1 (en) | Data transfer between dissimilar deduplication systems | |
US20160306822A1 (en) | Load balancing of queries in replication enabled ssd storage | |
US20110137870A1 (en) | Optimizing Data Storage Among a Plurality of Data Storage Repositories | |
CN102314506B (zh) | 基于动态索引的分布式缓冲区管理方法 | |
CN110765076B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN107003814A (zh) | 存储系统中的有效元数据 | |
US20040078457A1 (en) | System and method for managing network-device configurations | |
JP2005235171A (ja) | 時間的に近接して記憶システムに書き込まれたデータユニットを示すコンテンツアドレスの生成方法およびその装置 | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
CN105159845A (zh) | 存储器读取方法 | |
US10642530B2 (en) | Global occupancy aggregator for global garbage collection scheduling | |
CN114968127B (zh) | 对象计算存储系统、数据处理方法、客户端及存储介质 | |
US20130185536A1 (en) | Hash-based managing of storage identifiers | |
US9501485B2 (en) | Methods for facilitating batch analytics on archived data and devices thereof | |
CN116501783A (zh) | 一种分布式数据库数据导入方法及系统 | |
CN109522308B (zh) | 一种连接句柄管理方法和装置 | |
US9052950B2 (en) | Selective constant complexity dismissal in task scheduling | |
US8447833B2 (en) | Reading and writing during cluster growth phase | |
US10592530B2 (en) | System and method for managing transactions for multiple data store nodes without a central log | |
US10547683B2 (en) | Object based storage systems that utilize direct memory access | |
CN101673288A (zh) | 一种iptv系统中的读、写文件的方法和系统 | |
US11461284B2 (en) | Method, device and computer program product for storage management | |
CN110798492B (zh) | 数据存储方法及装置、数据处理系统 | |
CN106970964B (zh) | 基于共享内存的gps数据信息查询方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |