CN1183453C - 一种内存管理系统及其分配方法 - Google Patents

一种内存管理系统及其分配方法 Download PDF

Info

Publication number
CN1183453C
CN1183453C CNB011391502A CN01139150A CN1183453C CN 1183453 C CN1183453 C CN 1183453C CN B011391502 A CNB011391502 A CN B011391502A CN 01139150 A CN01139150 A CN 01139150A CN 1183453 C CN1183453 C CN 1183453C
Authority
CN
China
Prior art keywords
memory
memory block
management
management module
block
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
Application number
CNB011391502A
Other languages
English (en)
Other versions
CN1427342A (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.)
Nokia Shanghai Bell Co Ltd
Original Assignee
Alcatel Lucent Shanghai Bell 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 Alcatel Lucent Shanghai Bell Co Ltd filed Critical Alcatel Lucent Shanghai Bell Co Ltd
Priority to CNB011391502A priority Critical patent/CN1183453C/zh
Publication of CN1427342A publication Critical patent/CN1427342A/zh
Application granted granted Critical
Publication of CN1183453C publication Critical patent/CN1183453C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Memory System (AREA)

Abstract

一种内存管理系统及其分配方法,其内存管理系统包括内存管理模块接口、若干个内存块管理模块、以及与各内存块管理模块相连的若干个内存块管理单元,其中:内存管理模块接口,由一组函数组成,完成结构的初始化、内存申请、内存释放功能,是应用程序访问内存的接口;内存块管理单元,是内存管理的基本单元,每个内存块管理单元对应于一个被管理的内存块,保存这个内存块的相关信息;内存块管理模块,通过链表维护和管理一组内存块管理单元,这组内存块管理单元所对应的内存块大小相同。本发明用内存块管理数组与内存块链表相结合的方式实现内存管理,并采用内存预分配和分类管理的机制,以达到高实时性和消除内存碎片,因而大大地改善了应用系统的性能。

Description

一种内存管理系统及其分配方法
(一)技术领域
本发明涉及一种内存管理系统及其分配方法。
(二)现有技术
通常,操作系统提供的动态使用内存的管理方法是根据一般情况制作的内存管理,即为内存的申请和释放,该方法一般来说可以用链表或堆栈来实现。链表方法把空闲块以链表形式排列,如果有申请内存的情况出现,就从链表的头部开始搜索空闲的内存块,若此内存块小于申请内存所需大小,则延着链表继续搜索,直到找到足够大小的内存块,并分配使用;如果有释放内存的情况出现,就将内存块放到空闲队列的尾部。堆栈方法在申请内存时同队列方法类似,只不过是从栈顶取出空闲内存块;释放时把内存块放到栈顶。这两种方法都存在一个共同的特征,即分配内存时从较大的内存块中分出申请所需大小的内存块,并将剩余部分作为一个空闲内存块继续保存在空闲内存链表中。
在很多应用场合,操作系统动态使用内存的频率很高,每次申请的内存大小又不固定,并且需要不间断执行很长时间。如果使用这种操作系统提供的内存管理方法,由于长时间不间断地申请和释放内存,到最后,必然会产生大量的很小的空闲块。这时如果通过某种工具来看内存情况,会发现总的可以使用的内存量还有很多,但要申请一块比较大的内存块时,系统却回答没有足够的内存。
如图1,使用操作系统提供的内存管理方式,当申请内存时,首先从空闲内存链表的头部开始寻找大小足够的内存块,第一空闲内存1和第二空闲内存2的大小不够,第三空闲内存3的大小超过申请内存要求的大小,故从空闲内存3中分配内存(代表本次内存申请分配的内存)后,第三空闲内存3的剩余部分是一块很小的内存块,成为内存碎片4。当应用系统长时间运行后,内存中存在大量的内存碎片4,不仅影响申请内存所需时间,也将最终导致内存耗尽,没有足够大的空闲内存用于较大的内存分配。
通常上述情况的解决方式是通过某个程序实现内存空闲块合并,但是当执行该程序时,系统的性能会大幅度下降。而应用系统是一直在运行的,因此带来的系统性能的下降是不可接受的。尤其某些对内存管理、系统性能有较高要求的应用系统,如:频繁要求动态使用内存的信令系统等,这种内存管理办法显然是无法满足系统要求的。
(三)发明内容
本发明的目的在于提供一种内存管理系统及其分配方法,以适用于需要频繁动态使用内存的应用系统,从而大大减少系统运行中产生的内存碎片,提高内存使用的效率,提高应用系统的性能,同时也提高了内存管理的速度和内存使用时的安全性。
本发明所提供的一种内存管理系统,包括内存管理模块接口、与内存管理模块接口相连的若干个内存块管理模块、以及与各内存块管理模块相连的若干个内存块管理单元,其中:内存管理模块接口,由一组函数组成,完成结构的初始化、内存申请、内存释放功能,是应用程序访问内存的接口;内存块管理单元,是内存管理的基本单元,每个内存块管理单元对应于一个被管理的内存块,保存这个内存块的相关信息;内存块管理模块,通过链表维护和管理一组内存块管理单元,这组内存块管理单元所对应的内存块大小相同。
上述的内存管理系统,其中,内存块管理模块所处理的信息包括:内存块的大小;内存块的总块数;空闲内存块的块数;内存块的使用峰值;第一个空闲块的标号;最后一个空闲块的标号;第一个内存单元的指针;第一个内存块管理单元的指针;以及内存块的信号灯。
上述的内存管理系统,其中,内存块管理单元所处理的信息包括:内存块空闲标志位;下一空闲块标号;内存块实际使用长度;内存块申请者标识;内存块释放者标识。
本发明所提供的一种内存分配方法,根据内存申请要求进入内存分配过程,包括下列步骤:1)根据所申请的内存大小,由小到大选择最适合的内存块管理模块;2)判断该内存管理模块中是否存在空闲的内存块:(1)若存在,则从该内存块管理模块中提取第一个空闲内存块,其步骤包括:a)选定该组中第一个空闲内存块;b)将该内存块从空闲链表中删除;c)对该内存块管理模块的空闲内存块链表进行操作,并更新所对应的内存块管理单元的信息;d)将该内存块地址返回,本次内存申请成功;(2)若不存在,判断是否有更大的内存块管理模块:a)若存在,则选择下一个内存块管理模块,并返回至步骤2);b)若不存在,则本次内存申请失败。
本发明采用了上述技术解决方案,用内存块管理数组与内存块链表相结合的方式实现内存管理,并采用内存预分配和分类管理的机制,以达到高实时性和消除内存碎片的目的,因而大大地改善了应用系统的性能。本发明是对现有内存管理机制的一个很好的补充与完善。
(四)附图说明
图1是现有操作系统提供的内存管理方式示意图
图2是本发明内存管理系统结构示意图
图3是内存分配方法流程图
(五)具体实施方式
如图2所示,本发明,即一种内存管理系统,包括内存管理模块接口5、与内存管理模块接口5相连的若干个内存块管理模块6、以及与各内存块管理模块6相连的若干个内存块管理单元7。
内存管理模块接口5,由一组函数组成,完成结构的初始化、内存申请、内存释放功能,是应用程序访问内存的接口。
内存块管理单元7,是内存管理的基本单元,每个内存块管理单元对应于一个被管理的内存块,保存这个内存块的相关信息。所处理的信息包括:内存块空闲标志位;下一空闲块标号;内存块实际使用长度;内存块申请者标识;内存块释放者标识。
内存块管理模块6,通过链表维护和管理一组内存块管理单元7,这组内存块管理单元7所对应的内存块大小相同。所处理的信息包括:内存块的大小;内存块的总块数;空闲内存块的块数;内存块的使用峰值;第一个空闲块的标号;最后一个空闲块的标号;第一个内存单元的指针;第一个内存块管理单元的指针;以及内存块的信号灯。
本发明应用于通信系统的内存管理中,假定有两个内存块管理模块,分别管理大小为16个字节数量为1000的一组内存块和大小为32个字节数量为2000的另一组内存块,每个16字节或32字节的内存块都对应有自己的内存块管理单元。内存管理模块接口是管理公共内存块的入口。
内存块管理模块中的第一个空闲块的标识、最后一个空闲块的标识、以及内存块管理单元中的下一空闲块标识分别将大小为16和32的两组内存空闲块链接起来,成为链表。
如图3所示,本发明的内存分配方法,包括下列步骤:
1)根据所申请的内存大小,由小到大选择最适合的内存块管理模块;
2)判断该内存管理模块中是否存在空闲的内存块:
(1)若存在,则从该内存块管理模块中提取第一个空闲内存块,其步骤包括:
a)选定该组中第一个空闲内存块;
b)将该内存块从空闲链表中删除;
c)对该内存块管理模块的空闲内存块链表进行操作,并更新所对应的内存块管理单元的信息;
d)将该内存块地址返回,本次内存申请成功;
(2)若不存在,判断是否有更大的内存块管理模块:
a)若存在,则选择下一个内存块管理模块,并返回至步骤2);
b)若不存在,则本次内存申请失败。
当应用程序申请内存时,内存管理模块接口中的内存申请部分首先根据申请内存的大小,由小到大选择最适合的内存块管理模块。再从该内存块管理模块中的空闲内存块管理单元链表中取出空闲内存块管理单元,将此内存块管理单元对应的内存块即为本次内存申请分配的内存。如果该内存块管理模块中没有空闲内存块,则依次申请更大的内存块。如果更大的内存块管理模块中均无空闲内存块,则申请失败。

Claims (4)

1.一种内存管理系统,包括内存管理模块接口、与内存管理模块接口相连的若干个内存块管理模块、以及与各内存块管理模块相连的若干个内存块管理单元,其中:
内存管理模块接口,由一组函数组成,完成结构的初始化、内存申请、内存释放功能,是应用程序访问内存的接口;
内存块管理单元,是内存管理的基本单元,每个内存块管理单元对应于一个被管理的内存块,保存这个内存块的相关信息;
内存块管理模块,通过链表维护和管理一组内存块管理单元,这组内存块管理单元所对应的内存块大小相同。
2.根据权利要求1所述的内存管理系统,其特征在于,所述的内存块管理模块所处理的信息包括:内存块的大小;内存块的总块数;空闲内存块的块数;内存块的使用峰值;第一个空闲块的标号;最后一个空闲块的标号;第一个内存单元的指针;第一个内存块管理单元的指针;以及内存块的信号灯。
3.根据权利要求1所述的内存管理系统,其特征在于,所述的内存块管理单元所处理的信息包括:内存块空闲标志位;下一空闲块标号;内存块实际使用长度;内存块申请者标识;内存块释放者标识。
4.一种内存分配方法,根据内存申请要求进入内存分配过程,包括下列步骤:
1)根据所申请的内存大小,由小到大选择一内存块管理模块;
2)判断该内存管理模块中是否存在空闲的内存块:
(1)若存在,则从该内存块管理模块中提取第一个空闲内存块,其步骤包括:
a)选定该组中第一个空闲内存块;
b)将该内存块从空闲链表中删除;
c)对该内存块管理模块的空闲内存块链表进行操作,并更新所对应的内存块管理单元的信息;
d)将该内存块地址返回,本次内存申请成功;
(2)若不存在,判断是否有更大的内存块管理模块:
a)若存在,则选择下一个内存块管理模块,并返回至步骤2);
b)若不存在,则本次内存申请失败。
CNB011391502A 2001-12-21 2001-12-21 一种内存管理系统及其分配方法 Expired - Lifetime CN1183453C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB011391502A CN1183453C (zh) 2001-12-21 2001-12-21 一种内存管理系统及其分配方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB011391502A CN1183453C (zh) 2001-12-21 2001-12-21 一种内存管理系统及其分配方法

Publications (2)

Publication Number Publication Date
CN1427342A CN1427342A (zh) 2003-07-02
CN1183453C true CN1183453C (zh) 2005-01-05

Family

ID=4675076

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB011391502A Expired - Lifetime CN1183453C (zh) 2001-12-21 2001-12-21 一种内存管理系统及其分配方法

Country Status (1)

Country Link
CN (1) CN1183453C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1327348C (zh) * 2005-09-16 2007-07-18 浙江大学 解决频繁分配释放同等大小内存的方法

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7032088B2 (en) 2003-08-07 2006-04-18 Siemens Corporate Research, Inc. Advanced memory management architecture for large data volumes
CN1652616B (zh) * 2004-02-07 2010-04-14 华为技术有限公司 一种自适应的系统管理方法
KR20050088853A (ko) * 2004-03-03 2005-09-07 엘지전자 주식회사 휴대단말기의 동적 메모리 관리장치 및 방법
CN1670702B (zh) * 2004-03-15 2013-01-02 致伸科技股份有限公司 一种多功能一体机的内存管理方法
CN100452761C (zh) * 2004-04-27 2009-01-14 华为技术有限公司 通信设备中数据包的存储方法
CN100359489C (zh) * 2004-07-13 2008-01-02 中兴通讯股份有限公司 一种嵌入式实时操作系统中内存分配的方法
CN100478916C (zh) * 2004-09-24 2009-04-15 上海贝尔阿尔卡特股份有限公司 内存管理系统及方法
US7603544B2 (en) 2004-12-23 2009-10-13 Intel Corporation Dynamic allocation of a buffer across multiple clients in multi-threaded processor without performing a complete flush of data associated with allocation
CN100377104C (zh) * 2005-02-28 2008-03-26 中国科学院计算技术研究所 一种内存访问信息实时捕获装置及访存信息捕获方法
CN100466602C (zh) * 2005-04-28 2009-03-04 华为技术有限公司 动态共享存储器存储空间的实现方法
CN100382048C (zh) * 2005-11-08 2008-04-16 中兴通讯股份有限公司 一种内存管理方法
CN100395712C (zh) * 2005-12-22 2008-06-18 华为技术有限公司 软件系统的资源管理方法
CN100462940C (zh) * 2007-01-30 2009-02-18 金蝶软件(中国)有限公司 一种在内存中缓存数据的方法及装置
CN101122886B (zh) * 2007-09-03 2010-06-09 杭州华三通信技术有限公司 分配缓存空间的方法和装置以及缓存控制器
CN101470665B (zh) * 2007-12-27 2011-05-11 Tcl集团股份有限公司 一种无mmu平台的应用系统内存管理的方法及系统
CN101221536B (zh) * 2008-01-25 2010-06-16 中兴通讯股份有限公司 嵌入式系统的内存管理方法及装置
CN102033804A (zh) 2009-09-29 2011-04-27 国际商业机器公司 辅助内存分析的方法和系统
CN101826055B (zh) * 2010-04-06 2015-04-01 浪潮电子信息产业股份有限公司 一种用于Linux系统数据缓存分配的管理方法
CN102455976B (zh) * 2010-11-02 2015-09-23 上海宝信软件股份有限公司 一种中间件内存管理的方法
CN102103541B (zh) * 2011-02-28 2012-11-14 中国人民解放军国防科学技术大学 防止内存泄露和内存多次释放的内核模块内存管理方法
CN102331973A (zh) * 2011-03-18 2012-01-25 北京神州数码思特奇信息技术股份有限公司 一种内存数据存储系统和内存数据的插入、删除方法
CN102760080B (zh) * 2011-04-26 2016-08-03 腾讯科技(深圳)有限公司 一种内存管理的方法和装置
CN102279810A (zh) * 2011-08-11 2011-12-14 浪潮(北京)电子信息产业有限公司 一种网络存储服务器及其缓存数据的方法
CN103049328B (zh) * 2012-11-06 2016-03-02 武汉新光电网科信息技术有限公司 计算机系统中内存资源分配方法
CN103226520B (zh) * 2013-04-02 2016-09-07 中国科学院信息工程研究所 集群内存自适应管理方法、服务器集群系统
CN103389947B (zh) * 2013-08-06 2016-01-20 哈尔滨工业大学 基于VxWorks的光刻机双工件台控制系统的内存管理器及管理方法
CN103593485B (zh) * 2013-12-04 2017-06-16 网易传媒科技(北京)有限公司 实现数据库实时操作的方法和设备
CN103914356A (zh) * 2014-03-12 2014-07-09 汉柏科技有限公司 内存改写的定位方法
CN103942155B (zh) * 2014-04-29 2017-01-11 中国科学院微电子研究所 一种内存块控制方法及装置
CN104978627B (zh) * 2015-06-13 2018-05-29 烟台东方威思顿电气有限公司 一种电力采集终端更新内部电能表档案的方法
CN106201727A (zh) * 2016-07-27 2016-12-07 浪潮(北京)电子信息产业有限公司 一种操作系统的内存管理方法及装置
CN110502335A (zh) * 2019-06-12 2019-11-26 成都虚谷伟业科技有限公司 分布式数据库多级内存管理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1327348C (zh) * 2005-09-16 2007-07-18 浙江大学 解决频繁分配释放同等大小内存的方法

Also Published As

Publication number Publication date
CN1427342A (zh) 2003-07-02

Similar Documents

Publication Publication Date Title
CN1183453C (zh) 一种内存管理系统及其分配方法
CN1283063C (zh) 通信设备中配置数据的方法及装置
CN1184538A (zh) 采用稀疏文件的实时数据迁移系统和方法
CN1928873A (zh) 一种实现负荷分担的数据库访问方法及系统
CN104731799A (zh) 内存数据库管理装置
CN101226553A (zh) 一种嵌入式数据库变长字段存储的实现方法及装置
CN1851676A (zh) 一种嵌入式系统缓冲式内存分配方法
CN1181434C (zh) 自适应动态内存管理方法
CN1908937A (zh) 一种闪存中的flash文件的管理方法及系统
CN1489334A (zh) 一种静态动态结合的存储区管理的方法
CN100342374C (zh) 一种数据存储方法及装置
CN1145311C (zh) 网络节点拓扑结构图示方法
CN1351299A (zh) 一种访问数据库的方法及装置
CN1129281C (zh) 利用缓存技术提高ip报文转发速度的方法
CN1627272A (zh) 移动终端的闪存中的文件管理方法
CN1234074C (zh) 基于Internet的文件镜像方法
CN101038542A (zh) 一种堆栈缓冲区管理方法
CN1099792C (zh) 单板大容量数字时分交换网络
CN1505330A (zh) 一种内存管理方法
CN1561059A (zh) 一种通讯系统中语音数据的加载方法
CN1960285A (zh) 一种机房软件环境多点还原增量同步的方法
CN1228946C (zh) 一种信元头转换表的动态存储管理方法
CN1507224A (zh) 一种异步传输模式设备虚通路标识符的管理方法
CN1472966A (zh) 信令点和子系统动态负荷分担的方法
CN110334032A (zh) 基于混合大小单元的闪存操作方法及系统

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
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
C56 Change in the name or address of the patentee

Owner name: BEIER AERKATE CO., LTD., SHANGHAI

Free format text: FORMER NAME: BELL CO.,LTD., SHANGHAI

Owner name: SHANGHAI ALCATEL-LUCENT CO., LTD.

Free format text: FORMER NAME: BEIER AERKATE CO., LTD., SHANGHAI

CP01 Change in the name or title of a patent holder

Address after: 201206 Pudong New Area Jinqiao Export Processing Zone, Nanjing Road, No. 388, Shanghai

Patentee after: ALCATEL-LUCENT SHANGHAI BELL Co.,Ltd.

Address before: 201206 Pudong New Area Jinqiao Export Processing Zone, Nanjing Road, No. 388, Shanghai

Patentee before: Shanghai Bell Alcatel Co.,Ltd.

Address after: 201206 Pudong New Area Jinqiao Export Processing Zone, Nanjing Road, No. 388, Shanghai

Patentee after: Shanghai Bell Alcatel Co.,Ltd.

Address before: 201206 Pudong New Area Jinqiao Export Processing Zone, Nanjing Road, No. 388, Shanghai

Patentee before: Shanghai Bell Co.,Ltd.

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 201206 Pudong New Area Jinqiao Export Processing Zone, Nanjing Road, No. 388, Shanghai

Patentee after: NOKIA SHANGHAI BELL Co.,Ltd.

Address before: 201206 Pudong New Area Jinqiao Export Processing Zone, Nanjing Road, No. 388, Shanghai

Patentee before: ALCATEL-LUCENT SHANGHAI BELL Co.,Ltd.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20050105