CN100473028C - 一种内存管理方法 - Google Patents
一种内存管理方法 Download PDFInfo
- Publication number
- CN100473028C CN100473028C CNB021511209A CN02151120A CN100473028C CN 100473028 C CN100473028 C CN 100473028C CN B021511209 A CNB021511209 A CN B021511209A CN 02151120 A CN02151120 A CN 02151120A CN 100473028 C CN100473028 C CN 100473028C
- Authority
- CN
- China
- Prior art keywords
- memory
- memory block
- pool
- block
- information
- 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 - Lifetime
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System (AREA)
Abstract
本发明涉及一种通讯设备的内存管理方法,包括以下实现步骤:预先申请一块内存作为内存池,划分内存块并进行初始化,申请的内存块从内存池头部取,释放的内存块存放在内存池尾部;在所述内存块中设置一个空闲区,用于添加头部信息使用,消息区设置在所述内存块的空闲区后;当需要增加头部信息时,在所述空闲区将指针前移需要增加的头部信息长度,然后添加头部信息;读取头部信息时,将指针移动到空闲区的相应位置读取需要的信息。采用本发明的方法可以减少拷贝次数,提高通讯效率,减少内存流失和泄漏,对设备要求不高,通用性强,有效地降低了成本,适合通讯和效率要求非常高的场合。
Description
所属技术领域
本发明涉及一种通讯设备的内存管理方法,特别是涉及一种对通讯和效率要求比较高的场合,如点对点通信等场合。
背景技术
随着互联网的迅速发展,越来越多的数据通讯产品投入使用。信息在传输过程中需要被不断地增加头部信息以便识别来自不同层次的消息,在通讯过程中传统的增加头部信息采用的方法需要不断申请内存、拷贝信息。这样多次拷贝容易造成通讯速度减慢、效率降低;而多次申请内存如果得不到及时释放容易造成内存泄漏、消息丢失。
发明内容
本发明提出了一种内存管理方法,可以使消息在传输过程中不需要多次申请内存,拷贝信息,从而避免因此造成的内存流失和传输效率低下的问题。
本发明所述的内存管理方法,包括以下实现步骤:
1)预先申请一块内存作为内存池,划分内存块并进行初始化,申请的内存块从内存池头部取,释放的内存块存放在内存池尾部;
2)在所述内存块中设置一个空闲区,用于添加头部信息使用,消息区设置在所述内存块的空闲区后;
3)当需要增加头部信息时,在所述空闲区将指针前移需要增加的头部信息长度,然后添加头部信息;
4)读取头部信息时,将指针移动到空闲区的相应位置读取需要的信息。
为了准确释放内存块,在步骤1)中设置内存池的起始地址为256的倍数,当释放内存块时,将需要释放的内存地址和0 x FFFFFF00按位与的结果作为该内存块的起始地址,释放该内存块。
本发明与现有技术相比,它使用的内存量和拷贝次数少,提高了通讯效率,减少了内存流失和泄漏,同时由于它简单精练,对设备要求不高,通用性强,有效地降低了成本,减少了研发和维护费用,并且具有更高的处理效率,非常适合通讯和效率要求非常高的场合。
附图说明
图1本发明所述的内存块结构示意图;
图2本发明的内存块初始化流程图;
图3本发明的内存块申请流程图;
图4本发明的内存块释放流程图。
具体实施方式
以下结合附图并通过具体实施例说明本发明所述的内存管理方法:先介绍本发明的内存块结构,内存块的大小可以在具体使用中根据实际情况设置,如图1所示以每块内存占1536字节为例,每个内存块由内存块信息、空闲区和消息区组成,空闲区64字节用于存放头部信息,消息区1456字节用于存放消息。
本发明所述方法的处理步骤分别如下:
1.如图2所示,内存块初始化处理步骤为:
第一步:申请内存组成内存池,调整内存池起始地址为256的倍数。
第二步:填写内存池相关信息,如内存池头尾地址,总的内存块数,空闲内存块数等。
第三步:将内存池划分为若干内存块,其中每块内存大小为1536字节,填写内存块信息,并将内存池中所有内存块用链表链接。
2.如图3所示,内存块的申请处理步骤:
第一步:判断要申请的内存大小是否大于内存块最大长度。如果大于内存块最大长度,则采用其它方式申请内存,否则将采用该内存块方式申请。
第二步:判断内存池是否有空闲内存块,如果有,则从内存池头部取出一块内存,返回信息区指针,否则返回空。
3.如图4所示,内存块释放处理步骤:
第一步:将要释放的内存块地址与0 x FFFFFF00按位与,得到该内存块的起始地址。
第二步:判断该内存块的起始地址是否在内存池的地址范围内。如果不是,表明该内存块不是用内存块方法申请的内存块,则采用其他方式释放,否则跳转下一步。
第三步:判断该内存块的标识位是否正确,如果不正确,表明该内存块出错,否则跳转下一步。
第四步:该内存块的计数器减1,如果该内存块的计数器为0,表明要释放该内存块,否则返回。
第五步:将该内存块链接到内存池的尾部,同时内存池的空闲数加1。
通过以上的说明,可以看出采用本发明的内存块管理方法和传统的内存管理方法相比处理效率更高,传输速度更快,而且不易造成内存流失,代码量极少,对设备没有提出额外的要求,易于开发和维护。
Claims (4)
1.一种内存管理方法,其特征在于,包括以下实现步骤:
1)预先申请一块内存作为内存池,划分内存块并进行初始化,申请的内存块从内存池头部取,释放的内存块存放在内存池尾部,其中,释放内存块包括步骤:第一步:将要释放的内存块地址与OxFFFFFF00按位与,得到该内存块的起始地址;第二步:判断该内存块的起始地址是否在内存池的地址范围内;如果不是,表明该内存块不是用内存块方法申请的内存块,则释放该内存块,否则跳转下一步;第三步:判断该内存块的标识位是否正确,如果不正确,表明该内存块出错;否则跳转下一步;第四步:该内存块的计数器减1,如果该内存块的计数器为0,表明要释放该内存块,否则返回;第五步:将该内存块链接到内存池的尾部,同时内存池的空闲数加1;
2)在所述内存块中设置一个空闲区,用于添加头部信息使用,消息区设置在所述内存块的空闲区后;
3)当需要增加头部信息时,在所述空闲区将指针前移需要增加的头部信息长度,然后添加头部信息;
4)读取头部信息时,将指针移动到空闲区的相应位置读取需要的信息。
2.根据权利要求1所述的内存管理方法,其特征在于,为了准确释放内存块,在所述步骤1)中设置内存池的起始地址为256的倍数。
3.根据权利要求1或2所述的内存管理方法,其特征在于,所述步骤1)中划分内存块并进行初始化包括以下处理步骤:
步骤1-1):申请内存组成内存池,调整内存池起始地址为256的倍数;
步骤1-2):填写内存池信息;
步骤1-3):将内存池划分为若干内存块,填写内存块信息,并将内存池中所有内存块用链表链接。
4.根据权利要求1所述的内存管理方法,其特征在于,所述内存块中每块内存占1536字节,由内存块信息、空闲区和消息区组成,空闲区占64字节,消息区占1456字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021511209A CN100473028C (zh) | 2002-12-02 | 2002-12-02 | 一种内存管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021511209A CN100473028C (zh) | 2002-12-02 | 2002-12-02 | 一种内存管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1505330A CN1505330A (zh) | 2004-06-16 |
CN100473028C true CN100473028C (zh) | 2009-03-25 |
Family
ID=34234268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021511209A Expired - Lifetime CN100473028C (zh) | 2002-12-02 | 2002-12-02 | 一种内存管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100473028C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100478916C (zh) * | 2004-09-24 | 2009-04-15 | 上海贝尔阿尔卡特股份有限公司 | 内存管理系统及方法 |
CN101286878B (zh) * | 2008-04-22 | 2012-02-29 | 中兴通讯股份有限公司 | 一种终端的内存池的管理方法 |
CN101594478B (zh) * | 2008-05-30 | 2013-01-30 | 新奥特(北京)视频技术有限公司 | 一种超长字幕数据处理的方法 |
CN103617123A (zh) * | 2013-11-21 | 2014-03-05 | 珠海金山网络游戏科技有限公司 | 一种通过内存块实现内存管理的方法及系统 |
CN103984639B (zh) * | 2014-04-29 | 2016-11-16 | 宁波三星医疗电气股份有限公司 | 一种动态内存分配方法 |
CN109710408B (zh) * | 2018-12-24 | 2020-08-04 | 杭州迪普科技股份有限公司 | 内存管理方法和装置 |
CN111800353B (zh) * | 2020-06-30 | 2022-04-12 | 翱捷科技股份有限公司 | 一种嵌入式系统内存零拷贝的方法及装置 |
CN113419715B (zh) * | 2021-06-17 | 2024-06-25 | 吕锦柏 | 一种基于链表的动态内存管理方法和设备 |
CN113608686B (zh) * | 2021-06-30 | 2023-05-26 | 苏州浪潮智能科技有限公司 | 一种远程内存直接访问方法及相关装置 |
-
2002
- 2002-12-02 CN CNB021511209A patent/CN100473028C/zh not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
CN1505330A (zh) | 2004-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100473028C (zh) | 一种内存管理方法 | |
CN1183453C (zh) | 一种内存管理系统及其分配方法 | |
CN101510819B (zh) | 速率匹配方法及装置 | |
CN105183764B (zh) | 一种数据分页方法及装置 | |
WO2005038660A3 (en) | Method and apparatus for sending data from multiple sources over a communications bus | |
CN106325758A (zh) | 一种队列存储空间管理方法及装置 | |
CN103077126A (zh) | 一种内存管理方法和装置 | |
CN101833510B (zh) | 闪存ftl的地址转换方法 | |
CN105718218A (zh) | 一种适用于电能表或集中器负荷记录的压缩存储方法及系统 | |
CN107209716A (zh) | 内存管理装置和方法 | |
CN101504632B (zh) | 一种dma数据传输方法、系统及一种dma控制器 | |
CN1862482A (zh) | 一种先入先出存储器及其输出空满标志的方法 | |
CN103617123A (zh) | 一种通过内存块实现内存管理的方法及系统 | |
CN101286146B (zh) | 一种排版方法和系统 | |
CN101751226A (zh) | 非易失存储介质控制器以及非易失存储设备 | |
CN102332026A (zh) | 一种业务数据库查询统计方法 | |
CN108646987A (zh) | 一种文件卷的管理方法、装置、存储介质及终端 | |
CN102055549B (zh) | 一种长期演进系统中的速率匹配装置及方法 | |
CN101408847A (zh) | 一种固件加载方法、系统和装置 | |
CN103207843A (zh) | 一种数据行宽度可动态配置的cache结构设计方法 | |
CN112269549B (zh) | 一种轻型嵌入式系统的闪存管理方法 | |
CN107729146A (zh) | 一种内存释放方法 | |
CN104417102A (zh) | 一种打印方法和装置 | |
CN1885747A (zh) | 通过通用串行总线通道进行传输的装置及方法 | |
CN102736447A (zh) | 直写式光刻系统中图像数据串的压缩方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C53 | Correction of patent of invention or patent application | ||
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: SHENZHENG CITY ZTE CO., LTD. SHANGHAI SECOND INSTITUTE TO: ZTE CO., LTD. |
|
CP02 | Change in the address of a patent holder |
Address after: Shenzhen Nanshan District hi tech Industrial Park Science and technology south road Zhongxing building law department Applicant after: ZTE Corp. Address before: No. 396, Shanghai, Guilin Road Applicant before: Shenzhen ZTE Co.,Ltd. Shanghai Second Research Institute |
|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20090325 |