CN100452761C - 通信设备中数据包的存储方法 - Google Patents

通信设备中数据包的存储方法 Download PDF

Info

Publication number
CN100452761C
CN100452761C CNB2004100349574A CN200410034957A CN100452761C CN 100452761 C CN100452761 C CN 100452761C CN B2004100349574 A CNB2004100349574 A CN B2004100349574A CN 200410034957 A CN200410034957 A CN 200410034957A CN 100452761 C CN100452761 C CN 100452761C
Authority
CN
China
Prior art keywords
packet
size
memory block
communication equipment
space
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.)
Expired - Fee Related
Application number
CNB2004100349574A
Other languages
English (en)
Other versions
CN1691637A (zh
Inventor
何华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2004100349574A priority Critical patent/CN100452761C/zh
Publication of CN1691637A publication Critical patent/CN1691637A/zh
Application granted granted Critical
Publication of CN100452761C publication Critical patent/CN100452761C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及通信技术,公开了一种通信设备中数据包的存储方法,使得系统能充分利用内存资源,提高系统的稳定性和抗冲击性。这种通信设备中数据包的存储方法包含以下步骤:A.在通信设备的内存中预留第一空间和第二空间,并将第一空间分解为多种固定大小的内存块,将第二空间分解为一种相同大小的内存块;B.当通信设备收到数据包时,判断该数据包的大小是否超过门限,如果是则进入步骤C,否则进入步骤D;C.在第二空间里,分配总体大小大于或等于数据包大小的一个或连续多个空闲状态内存块给数据包;D.在第一空间里,分配一个大于或等于数据包大小的空闲状态内存块给数据包。

Description

通信设备中数据包的存储方法
技术领域
本发明涉及通信技术,特别涉及通信设备中数据的存储技术。
背景技术
多任务环境中的应用由一系列互相独立又协同工作的任务组成。系统中任务之间的通信主要通过发送消息来完成。消息传送的载体是消息包,这里所述的消息包是指系统中用于存储待发送的消息的内存单元。为了适应多个任务的要求,系统要提供消息包的管理功能,如消息包的配置、申请、释放等。
具体来说,上述消息包是通信系统中必须仔细管理的重要资源。虽然现在通信设备系统中的内存容量越来越大,甚至达到60年代早期全世界最大的计算机内存容量的数倍,但是程序长度的增长速度和内存容量的增长一样快,而且系统中各任务间须发送的消息也越来越多。因而,在一个系统中,通常都需要进行消息包的管理。这些管理算法的任务是跟踪正在使用那些内存单元、哪些内存单元空闲、在需要时为任务分配消息包、使用结束后释放消息包等。
上述管理方法的优劣将直接影响整个系统-特别是实时系统的性能。在一个实时系统中,如果需要通信时却不能快速有效的申请到消息包,则会很大的影响实时性能,甚至引发通信中断。
另一方面,目前对存储器的管理可以分为两类:在运行期间将数据在内存与磁盘之间进行移动的系统和不进行移动的系统。之所以进行移动,在很大程度上是由于缺少足够的内存存储相应的数据。而本发明所针对的主要是通信设备系统中,任务间发送消息时的内存分配问题。由于此应用一般对内存需求不大,所以无须在内存和磁盘间进行移动。
现有技术中,为了在通信设备系统中实现任务间消息发送而进行的消息包分配方法,通常采用单一的管理方法:消息单元(UNIT)管理方法。在此方法中,用很多固定大小-通常为128字节-的内存单元组成单元池,申请和释放操作都是以能满足用户大小的连续多个内存单元为单位进行的。例如,假设系统内要发送大小为256字节的消息,则系统须在其内存中搜索出连续两个内存单元,然后分配给此消息。此方法最大的优势是实现简单,只需要极少的操作和系统开销。
在实际应用中,上述方案存在以下问题:一方面,内存单元的大小固定为单一值,很难兼顾各种不同应用的时间和空间效率;另一方面,系统长期运行后,大消息包和小消息包交叉在一起,不断的申请释放,会导致申请时搜索合适的连续多个内存单元效率降低,而且容易产生碎片,导致一些资源很难再利用。
造成这种情况的主要原因在于,方法单一,只能提供单一固定大小的内存单元;在此情况下,所提供的搜索和释放方法效率低下,并导致资源浪费和性能不稳。
发明内容
有鉴于此,本发明的主要目的在于提供一种通信设备中数据包的存储方法,使得系统能充分利用内存资源,提高系统的稳定性和抗冲击性。
为实现上述目的,本发明提供了一种通信设备中数据包的存储方法,包含以下步骤:
A在所述通信设备的内存中预留第一空间和第二空间,并将所述第一空间分解为多种固定大小的内存块,将所述第二空间分解为一种相同大小的内存块;
B当所述通信设备收到数据包时,判断该数据包的大小是否超过门限,如果是则进入步骤C,否则进入步骤D;
C在所述第二空间里,分配总体大小大于或等于所述数据包大小的一个或连续多个空闲状态内存块给所述数据包;
D在所述第一空间里,分配一个大于或等于所述数据包大小的空闲状态内存块给所述数据包。
其中,所述第二空间里的内存块比所述第一空间里的内存块大。
还包含以下步骤:
E所述通信设备处理完所述数据包后,将分配给该数据包的内存块重新设置为空闲状态。
所述步骤A还进一步包含以下子步骤:
对每一种大小的内存块,将所有内存块都设置为空闲状态,使用一个链表保存处于空闲状态的所有内存块的位置;
所述步骤C和D还进一步包含以下子步骤:
当为所述数据包分配了内存块后,将被分配的内存块设置为非空闲状态,并从所述链表中删除该内存块的位置;
当所述内存块被重新设置为空闲状态以后,将这些内存块的位置加入所述链表。
所述步骤D中,被分配的所述内存块是大小最接近所述数据包的内存块。
所述第一空间里每一种大小的内存块数目可以根据所述通信设备收到各类数据包数量的理论模拟值或实际统计值设置。
所述第二空间里内存块的大小等于或大于大小为所述门限的数据包中使用频率最高的数据包的大小。
通过比较可以发现,本发明的技术方案与现有技术的区别在于,使用了混合方法,对小消息包采用区块管理方法,根据单向链表,对号入座;对大消息包采用单元管理方法,申请和释放操作都是以能满足用户大小的连续多个消息单元为单位进行。
这种技术方案上的区别,带来了较为明显的有益效果,即充分利用内存资源,防止了碎片产生;同时增强了系统稳定性和长期运行的抗冲击性。
附图说明
图1是根据本发明的一个实施例的消息包分配方法中区块管理方法流程;
图2是根据本发明的一个实施例的消息包分配方法中单元管理方法流程;
图3是根据本发明的一个实施例的消息包分配方法中混合方法的工作流程。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述。
总体而言,本发明的原理是采用一种混合的消息内存管理方法,即混合了区块管理(BLK_MANAGE)方法和单元管理(UNIT_MANAGE)方法。两种方法针对不同大小类型的消息包实现分配管理。
下面先分别说明两种方法的实现,然后再说明本发明如何综合运用两种方法,从而得出一种消息包分配方法。
首先,在BLK_MANAGE方法中,消息包申请及释放操作都是以单个区块(BLK)为单位进行的,每个BLK块独自构成为一个消息包,所有相同大小的BLK块类型用索引工具来管理,把空闲BLK块串成一个单向链表,这样在分配和释放时,只需要一次操作就可以了。在该链表中,如果一个BLK块被分配出去,它将被标记为非空闲状态,并从链表中删除;如果一个BLK块被释放,则将被标记为空闲状态,并重新进入链表。
值得说明的是,这种方法得以实现的前提是一个BLK块就可以满足用户一次申请消息时的大小需求,即BLK块应大于或等于消息大小,所以通常适合于小消息包的申请;此外,被分配的BLK块应是大小最接近待发消息的BLK块。各个系统可以根据实际情况预先配置多种大小的BLK块以及每一种BLK块的数量。一般情况下,所设置的BLK块大小与系统常用消息大小相当。作为本发明的一个较佳实施例,表一所表示的系统中设置了大小分别为64字节、128字节、256字节、512字节和1024字节的BLK块,每种BLK块的数量分别为500个、100个、100个、100个和100个。熟悉本领域的技术人员可以理解,所设置BLK块的大小及其相应个数的多少并不影响本发明的实质和范围。
表一
    每类块内存大小(字节)     每类块内存个数
    64     500
    128     100
    256     100
    512     100
    1024     100
    2048     2000
下面结合附图1说明BLK_MANAGE算法模块10的实现:
首先,在步骤101中,系统预先分配不同大小的内存BLK块及其相应个数。如前所述,内存BLK块的大小及其数量的多少,将根据不同的系统应用而有所不同。
接着进入步骤102,系统为每一种BLK块建立一个指向空闲区块的单向链表,在本步骤中,系统预设了多少种大小的BLK块就应建立多少个单向链表。
最后进入步骤103,系统根据消息的尺寸大小,通过查询相应链表,直接对号入座。这样,节省了搜索空闲包的操作并防止了碎片的产生,从而大大提高了系统,特别是实时系统的效率和实时性。
接着说明UNIT_MANAGE方法,它与原来的UNIT消息单元管理方法类似。它以消息单元池为基础,消息包的分配和释放都是以连续的消息单元为基础的。但它须根据实际需要对消息单元大小进行重新配置。
值得说明的是,该方法主要是当用户申请大消息包时用到,由于小消息包用BLK块的方式可以优先申请到,所以这里把最常用到的大的消息包大小作为消息单元大小,使得大部分情况一个消息单元就构成一个消息包,特殊大包才由多个连续消息单元构成。这样可以大大提高大包的申请效率。
下面结合附图2说明UNIT_MANAGE算法模块20的实现:
首先,进入步骤201,系统预设消息单元的大小及其数量。如上所述,系统把最常用到的大的消息包大小作为消息单元大小,使得大部分情况一个消息单元就构成一个消息包。
然后进入步骤202,搜索能满足用户大小的一个或连续多个消息单元分配给消息包。消息包的申请和释放都是以能满足用户需求的一个或连续多个消息单元为单位的。这与现有技术的操作相类似。
需要指出的是,消息包大小的分类可以通过真实环境测试数据,也可以通过应用模型进行理论分析,从而综合两者获取一个最佳的分类方式,包括类别的个数、每类块内存的大小和个数。它们数值的不同,不会影响本发明的实质和范围。
下面结合附图3说明本发明如何综合运用两种方法,从而实现消息包分配。
首先,进入步骤301,系统预分配两个内存空间,分别用于BLK_MANAGE方法和UNIT_MANAGE方法。其中,在用于BLK_MANAGE方法的内存空间中,系统将根据实际应用分配不同大小的BLK块及其相应数量;在用于UNIT_MANAGE方法的内存空间中,系统将预设消息单元的大小及其相应数量。
接着,进入步骤302,当一个系统发送信息时,它先判断消息大小是否小于预设门限,如果是,则进入步骤303,否则进入步骤304。该门限的数值为BLK_MANAGE方法中所预设的最大BLK块大小。
在步骤303中,进入BLK_MANAGE算法模块10,调用BLK_MANAGE方法。具体步骤如前面附图1所述。
在步骤304中,进入UNIT_MANAGE算法模块20,调用UNIT_MANAGE方法。具体步骤如前面附图2所述。
作为本发明的一个较佳实施例,表一所列出的系统中,如果需要发送大小为256字节的消息,则系统将调用BLK_MANAGE方法,根据消息包的尺寸大小,找到256字节消息包所对应的链表,通过查询相应链表,直接将消息放入空闲消息包中;如果所述系统需要发送大小为4096字节的消息,则系统将调用UNIT_MANAGE方法,搜索出两个连续的消息单元,并将其分配给所述消息。
虽然通过参照本发明的某些优选实施例,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。

Claims (8)

1.一种通信设备中数据包的存储方法,其特征在于,包含以下步骤:
A在所述通信设备的内存中预留第一空间和第二空间,并将所述第一空间分解为多种固定大小的内存块,将所述第二空间分解为一种相同大小的内存块;
B当所述通信设备收到数据包时,判断该数据包的大小是否超过门限,如果是则进入步骤C,否则进入步骤D;
C在所述第二空间里,分配总体大小大于或等于所述数据包大小的一个或连续多个空闲状态内存块给所述数据包;
D在所述第一空间里,分配一个大于或等于所述数据包大小的空闲状态内存块给所述数据包。
2.根据权利要求1所述的通信设备中数据包的存储方法,其特征在于,所述第二空间里的内存块比所述第一空间里的内存块大。
3.根据权利要求1所述的通信设备中数据包的存储方法,其特征在于,还包含以下步骤:
E所述通信设备处理完所述数据包后,将分配给该数据包的内存块重新设置为空闲状态。
4.根据权利要求1所述的通信设备中数据包的存储方法,其特征在于,所述步骤A还进一步包含以下子步骤:
对每一种大小的内存块,将所有内存块都设置为空闲状态,使用一个链表保存处于空闲状态的所有内存块的位置;
所述步骤C和D还进一步包含以下子步骤:
当为所述数据包分配了内存块后,将被分配的内存块设置为非空闲状态,并从所述链表中删除该内存块的位置。
5.根据权利要求4所述的通信设备中数据包的存储方法,其特征在于,还包含以下步骤:
E’所述通信设备处理完所述数据包后,将分配给该数据包的内存块重新设置为空闲状态;
当所述内存块被重新设置为空闲状态以后,将这些内存块的位置加入所述链表。
6.根据权利要求1所述的通信设备中数据包的存储方法,其特征在于,所述步骤D中,被分配的所述内存块是大小最接近所述数据包的内存块。
7.根据权利要求1所述的通信设备中数据包的存储方法,其特征在于,所述第一空间里每一种大小的内存块数目可以根据所述通信设备收到各类数据包数量的理论模拟值或实际统计值设置。
8.根据权利要求1至7中任意一条所述的通信设备中数据包的存储方法,其特征在于,所述第二空间里内存块的大小等于或大于大小为所述门限的数据包中使用频率最高的数据包的大小。
CNB2004100349574A 2004-04-27 2004-04-27 通信设备中数据包的存储方法 Expired - Fee Related CN100452761C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2004100349574A CN100452761C (zh) 2004-04-27 2004-04-27 通信设备中数据包的存储方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2004100349574A CN100452761C (zh) 2004-04-27 2004-04-27 通信设备中数据包的存储方法

Publications (2)

Publication Number Publication Date
CN1691637A CN1691637A (zh) 2005-11-02
CN100452761C true CN100452761C (zh) 2009-01-14

Family

ID=35346772

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100349574A Expired - Fee Related CN100452761C (zh) 2004-04-27 2004-04-27 通信设备中数据包的存储方法

Country Status (1)

Country Link
CN (1) CN100452761C (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101212451B (zh) * 2006-12-30 2010-10-13 北京天融信网络安全技术有限公司 防火墙芯片数据包缓存管理方法
CN101630992B (zh) * 2008-07-14 2013-06-05 中兴通讯股份有限公司 共享内存管理方法
CN102025634B (zh) * 2010-12-16 2015-06-03 中兴通讯股份有限公司 数据包缓存管理方法和设备
CN104468745A (zh) * 2014-11-24 2015-03-25 惠州Tcl移动通信有限公司 一种基于网络的文件传输方法及系统
CN105704037B (zh) * 2015-12-31 2019-02-19 北京华为数字技术有限公司 一种表项保存方法和控制器
CN111177017B (zh) * 2018-11-09 2022-05-27 炬芯科技股份有限公司 一种内存分配方法及装置
CN113453276B (zh) * 2021-05-18 2024-01-16 翱捷科技股份有限公司 一种提高lte终端上下行内存利用率的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1393780A (zh) * 2001-06-28 2003-01-29 华为技术有限公司 自适应动态内存管理方法
US20030120887A1 (en) * 2001-12-26 2003-06-26 Kim Bong Wan Memory allocation method using multi-level partition
CN1427342A (zh) * 2001-12-21 2003-07-02 上海贝尔有限公司 一种内存管理系统及其分配方法
CN1430150A (zh) * 2001-12-29 2003-07-16 深圳市中兴通讯股份有限公司上海第二研究所 通信系统中分系统间的虚拟内存分配管理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1393780A (zh) * 2001-06-28 2003-01-29 华为技术有限公司 自适应动态内存管理方法
CN1427342A (zh) * 2001-12-21 2003-07-02 上海贝尔有限公司 一种内存管理系统及其分配方法
US20030120887A1 (en) * 2001-12-26 2003-06-26 Kim Bong Wan Memory allocation method using multi-level partition
CN1430150A (zh) * 2001-12-29 2003-07-16 深圳市中兴通讯股份有限公司上海第二研究所 通信系统中分系统间的虚拟内存分配管理方法

Also Published As

Publication number Publication date
CN1691637A (zh) 2005-11-02

Similar Documents

Publication Publication Date Title
Mandelbaum et al. On pooling in queueing networks
CN101447939B (zh) 一种业务分配方法和负载均衡器
Andradóttir et al. Throughput maximization for tandem lines with two stations and flexible servers
CN103294521A (zh) 一种降低数据中心通信负载及能耗的方法
CN106648872A (zh) 用于多线程处理的方法及装置、服务器
CN102195885A (zh) 报文处理方法及装置
CN102594691A (zh) 一种处理报文的方法及装置
CN101227416A (zh) 一种通信网络中链路带宽分配方法
CN101072176A (zh) 一种报文处理的方法和系统
CN100452761C (zh) 通信设备中数据包的存储方法
CN109873910A (zh) 会话请求的处理方法、装置及存储介质
CN104506669B (zh) 一种面向分布式网络仿真平台的ip地址分配系统及方法
CN107347039A (zh) 一种共享缓存空间的管理方法及装置
CN111796770B (zh) 日志路由负载均衡实现方法及装置
CN108055701A (zh) 一种资源调度方法及基站
CN101374109B (zh) 一种报文调度方法和调度装置
CN108282526A (zh) 双集群间服务器动态分配方法及系统
CN109150756A (zh) 一种基于sdn电力通信网的队列调度权值量化方法
Wein Brownian networks with discretionary routing
CN101594642B (zh) 用于通信网元设备的资源分配方法及装置
CN114710571A (zh) 数据包处理系统
Nazarathy et al. Near optimal control of queueing networks over a finite time horizon
CN105450878A (zh) 坐席资源码的分配方法和分配系统
CN108513318A (zh) 一种基于边缘计算的用户业务排队优化方法
CN105704037B (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
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090114

Termination date: 20140427