CN1393780A - 自适应动态内存管理方法 - Google Patents
自适应动态内存管理方法 Download PDFInfo
- Publication number
- CN1393780A CN1393780A CN 01118873 CN01118873A CN1393780A CN 1393780 A CN1393780 A CN 1393780A CN 01118873 CN01118873 CN 01118873 CN 01118873 A CN01118873 A CN 01118873A CN 1393780 A CN1393780 A CN 1393780A
- Authority
- CN
- China
- Prior art keywords
- page
- burst
- bunch
- idle
- memory management
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种自适应动态内存管理方法,以页面簇为单位从空闲内存区中分配以供申请,页面簇中包含页面,每个页面的长度能容纳一个字节数最大的分片,在同一种类型的页面簇中,所有页面中的分片的字节数相同,当页面簇中的所有分片均处于空闲时,该页面簇可以被转换成所需类型的页面簇以供申请,实现了内存空间的动态管理,使内存资源得以充分利用。
Description
本发明涉及一种内存管理方法,尤其涉及数据通信设备中的内存管理方法。
在各种数据通信设备中,内存空间按不同字节数分成多种分片,各种分片的长度即字节数包括32字节、64字节、128字节、256字节、512字节、1024字节、2048字节、4096字节等类型。设备运行中对各种类型的内存的需求不断变化。为了高速地进行内存的申请、释放等操作,对于同一种内存的申请通常采取成批申请的方式,即在系统的编译时决定各种分片的数目,进入运行过程后,这种数目将无法根据实际需要进行动态调整。例如,我们凭经验估计某种设备通常情况下对于32字节的内存分片大约需要5万片即可,于是在系统初始化时,一次性申请能够存放5万片32字节的内存区用于存取。在系统运行过程中,当需要申请32字节的内存时,便从此内存区中取一片空闲的32字节内存分片来使用,如果内存区中已没有空闲的内存分片,则系统将返回申请失败提示,即使此时其它种类的内存区中还有很多空闲的内存空间。这种固定分配的内存管理方法虽然容易实现,但在使用中,对空闲的内存资源无法充分利用,造成浪费。
本发明的目的在于:针对现有技术中的不足,提供一种自适应动态内存管理方法,对各种分片类型的内存,在运行过程中根据实际需要动态分配,使内存资源充分利用。
为达到上述目的,本发明采用的技术方案是:一种自适应动态内存管理方法,对内存空间依各种分片的字节数划分不同种类型的页面簇,以页面簇为单位从占整个内存空间一定比例的空闲内存区中分配以供申请,每个页面簇中至少包含一个页面,每个页面的长度能容纳一个字节数最大的分片,在同一种类型的页面簇中,所有页面中的分片的字节数相同,当申请某种字节数的内存时,包括下述步骤:
A、检查该种字节数分片类型的页面簇中是否有空闲分片,如果有,转步骤E;如果无,继续步骤B;
B、判断空闲内存区占整个内存空间的比例是否小于等于设定值,如果是,转步骤D;如果否,执行步骤C;
C、从空闲内存区中划分出一个相应类型的页面簇,转步骤E;
D、从其他类型的页面簇中找出所有分片均处于空闲的页面簇,将其改变为所需类型的页面簇;继续步骤E;
E、从页面簇中分配分片。
由于本发明采用了以上技术方案,将内存空间以页面簇为单位分配以供申请,页面簇中包含页面,而每个页面的长度能容纳一个字节数最大的分片,实际运行中,当某种类型的页面簇中的所有分片都被占用,而用户又申请这种类型的分片时,就可以通过两种途径解决:(1)从空闲的内存空间中划分出所需类型的页面簇,再分配其中的分片; (2)从其他类型的页面簇中找出其中各分片均处于空闲的页面簇,改变其类型,即将其中分片的长度改变为所需类型,再进行分配。由于较大的分片长度是比它小的各种分片长度的整数倍,而每个页面的长度能容纳一个字节数最大的分片,页面簇又由页面组成,所以各种类型的页面簇均可以相互转换。通过对页面簇的划分和相互转换,实现了内存空间的动态管理,只要有空闲就不拒绝申请,使内存资源得以充分利用。
下面结合实施例对本发明的技术方案作进一步说明。
本发明技术方案的核心就是对内存空间作出新的划分,使用户对内存的申请和释放在划分后的区间进行,而这种新的划分使不同类型的区间可以相互转换,这样一来,对各种类型的内存就不必预留固定的数量,在运行中按照申请动态分配。
当申请某种字节数的内存时包括下述步骤:
A、检查该种字节数分片类型的页面簇中是否有空闲分片,如果有,转步骤E;如果无,继续步骤B;
B、判断空闲内存区占整个内存空间的比例是否小于等于设定值,如果是,转步骤D;如果否,执行步骤C;
C、从空闲内存区中划分出一个相应类型的页面簇,转步骤E;
D、从其他类型的页面簇中找出所有分片均处于空闲的页面簇,将其改变为所需类型的页面簇;继续步骤E;
E、从页面簇中分配分片。
从空闲内存区中取待用内存是以页面簇为单位,而申请内存是以分片为单位,步骤A的作用就是每次申请时检查是否有同类型的分片在相应页面簇中尚未被申请。如果有,直接分配分片;如果无,就需要再取一个这种类型的页面簇。
取一个新的页面簇有两种途径,第一种是从空闲内存区中划分出一个相应类型的页面簇,第二种是从其他类型的页面簇中找出空闲页面簇,再将其改变为所需类型的页面簇,所谓改变页面簇的类型,就是改变页面簇中分片的类型,如可将一个包含24个512字节分片的页面簇转换成一个包含6个2048字节分片的页面簇,亦可将其转换成一个包含96个128字节分片的页面簇。为了减少页面簇类型转换可能引起的震荡,在步骤B中规定了一个条件,作为选择上述两种途径的依据,即判断空闲内存区占整个内存空间的比例是否已小于等于设定的最小值,如果是,选择第二种;如果否,选择第一种。此比例如果太高,系统进行页面簇类型转换的操作会增多,而比例太低了,则不利于处理对于某种类型分片的大量需求。根据比较,空闲内存区占整个内存空间比例的最小值可设定为大于10%小于15%的任一数值。
本发明引入页面簇作为划分内存空间的单位,每个页面簇中至少包含一个页面,每个页面的长度能容纳一个字节数最大的分片,在同一种类型的页面簇中,所有页面中的分片的字节数相同。每个页面簇中的页面数量可任意设定,实际应用中,以2至4个为宜。假设实际应用中最大的分片长度为4096字节,每个页面簇中的页面数量为3个,那末页面簇就可以是包含6个2048字节分片的类型或包含12个1024字节分片的类型等,依此类推。
在使用中,可以链表的形式对页面簇进行管理,给每个页面簇设置一个页面簇头记录以下信息:
(1)页面簇类型——本页面簇包含的分片类型,如32字节、64字节、128字节等;
(2)页面数——本页面簇包含的页面数量;
(3)空闲指针——在本页面簇空闲时,指向同一类型的下一个空闲页面簇的页面簇头。
页面簇头中还可以携带其他用于算法控制的信息。
在本发明的实施中,也可以对相同类型的空闲分片采用链表方式管理,设置空闲分片头指针用于指向此空闲分片链的链首。链中的空闲分片分属于多个不同的页面簇,为了便于对空闲页面簇进行回收转换处理,我们需要对空闲分片的连接顺序作一定的限制,即要使位于同一个页面簇中的空闲分片被连在以上链表中相连的区段,于是可对属于同一页面簇的分片予以标识,用于在分片被释放时,将其归入所属的页面簇。再对每个页面簇设置用于指向本页面簇中第一个分片的头指针和用于指向本页面簇中最后一个分片的尾指针,用于在分片被释放时,若此分片所在的页面簇已经有空闲分片,则将该分片加入尾指针之后,然后再调整尾指针指向刚释放的分片;若分片所在页面簇中无空闲分片,则将所在页面簇的头指针和尾指针都指向此分片,再将此分片加入由头指针所指向的该种长度的空闲分片链的链首。若一个分片经过释放后,此分片所在的页面簇中所有分片都变为空闲分片,则此页面簇变为空闲页面簇。
当从某一类型的页面簇中进行分片申请时,若空闲分片头指针不为空,则将其所指向的分片分配给该申请,并将空闲分片头指针指向下一个空闲分片;若空闲分片头指针为空,表示此类型的页面簇已经被全部使用,则先分配一个同类型的页面簇,然后再从此新的页面簇中进行分片的分配。
系统亦可预留一部分不使用本发明方法的内存空间,用于对大于最大分片的内存申请进行分配。
Claims (6)
1、一种自适应动态内存管理方法,其特征在于:对内存空间依各种分片的字节数划分不同种类型的页面簇,以页面簇为单位从占整个内存空间一定比例的空闲内存区中分配以供申请,每个页面簇中至少包含一个页面,每个页面的长度能容纳一个字节数最大的分片,在同一种类型的页面簇中,所有页面中的分片的字节数相同,当申请某种字节数的内存时,包括下述步骤:
A、检查该种字节数分片类型的页面簇中是否有空闲分片,如果有,转步骤E;如果无,继续步骤B;
B、判断空闲内存区占整个内存空间的比例是否小于等于设定值,如果是,转步骤D;如果否,执行步骤C;
C、从空闲内存区中划分出一个相应类型的页面簇,转步骤E;
D、从其他类型的页面簇中找出所有分片均处于空闲的页面簇,将其改变为所需类型的页面簇;继续步骤E;
E、从页面簇中分配分片。
2、如权利要求1所述的自适应动态内存管理方法,其特征在于:所述页面簇中包含的页面数为2、3或4个。
3、如权利要求1所述的自适应动态内存管理方法,其特征在于:将所述空闲内存区占整个内存空间最小比例的设定值设为大于10%小于15%的任一数值。
4、如权利要求1、2或3所述的自适应动态内存管理方法,其特征在于:对属于同一页面簇的分片予以标识,用于在分片被释放时,将其归入所属的页面簇。
5、如权利要求4所述的自适应动态内存管理方法,其特征在于:对每个页面簇设置用于指向本页面簇中第一个分片的头指针和用于指向本页面簇中最后一个分片的尾指针。
6、如权利要求5所述的自适应动态内存管理方法,其特征在于:当分片被释放时,若此分片所在的页面簇已经有空闲分片,则将该分片加入所述尾指针之后,然后再调整尾指针指向刚释放的分片;若分片所在页面簇中无空闲分片,则将所在页面簇的头指针和尾指针都指向此分片,再将此分片加入由头指针所指向的该种长度的空闲分片链的链首。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011188731A CN1181434C (zh) | 2001-06-28 | 2001-06-28 | 自适应动态内存管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB011188731A CN1181434C (zh) | 2001-06-28 | 2001-06-28 | 自适应动态内存管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1393780A true CN1393780A (zh) | 2003-01-29 |
CN1181434C CN1181434C (zh) | 2004-12-22 |
Family
ID=4663473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011188731A Expired - Fee Related CN1181434C (zh) | 2001-06-28 | 2001-06-28 | 自适应动态内存管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1181434C (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1303534C (zh) * | 2003-03-03 | 2007-03-07 | 华为技术有限公司 | 一种内存池管理的方法 |
CN100343826C (zh) * | 2003-04-29 | 2007-10-17 | 华为技术有限公司 | 一种实现内存管理的方法 |
CN100359489C (zh) * | 2004-07-13 | 2008-01-02 | 中兴通讯股份有限公司 | 一种嵌入式实时操作系统中内存分配的方法 |
US7325118B2 (en) | 2003-09-30 | 2008-01-29 | Samsung Electronics, Co., Ltd. | Method and apparatus for executing dynamic memory management with object-oriented program |
CN100365593C (zh) * | 2003-06-16 | 2008-01-30 | 华为技术有限公司 | 计算机系统的内存管理方法 |
CN100452761C (zh) * | 2004-04-27 | 2009-01-14 | 华为技术有限公司 | 通信设备中数据包的存储方法 |
CN1652616B (zh) * | 2004-02-07 | 2010-04-14 | 华为技术有限公司 | 一种自适应的系统管理方法 |
CN101281491B (zh) * | 2008-05-12 | 2010-04-14 | 北京邮电大学 | 基于VxWorks的空间机器人中央处理器的内存模块及其管理方法 |
CN101286177B (zh) * | 2008-05-30 | 2010-06-02 | 中兴通讯股份有限公司 | 一种在文件分配表中给文件分配空间的方法及装置 |
CN1606092B (zh) * | 2004-11-11 | 2010-07-28 | 威盛电子股份有限公司 | 交叉配置记忆空间的方法 |
CN102455974A (zh) * | 2010-10-21 | 2012-05-16 | 上海宝信软件股份有限公司 | 一种内存消耗可控的高速内存申请释放管理系统及方法 |
CN107209716A (zh) * | 2015-02-09 | 2017-09-26 | 华为技术有限公司 | 内存管理装置和方法 |
CN111562983A (zh) * | 2020-04-30 | 2020-08-21 | Oppo(重庆)智能科技有限公司 | 内存优化方法、装置、电子设备及存储介质 |
-
2001
- 2001-06-28 CN CNB011188731A patent/CN1181434C/zh not_active Expired - Fee Related
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1303534C (zh) * | 2003-03-03 | 2007-03-07 | 华为技术有限公司 | 一种内存池管理的方法 |
CN100343826C (zh) * | 2003-04-29 | 2007-10-17 | 华为技术有限公司 | 一种实现内存管理的方法 |
CN100365593C (zh) * | 2003-06-16 | 2008-01-30 | 华为技术有限公司 | 计算机系统的内存管理方法 |
US7624247B2 (en) | 2003-09-30 | 2009-11-24 | Samsung Electronics Co., Ltd. | Method and apparatus for executing dynamic memory management with object-oriented program |
US7325118B2 (en) | 2003-09-30 | 2008-01-29 | Samsung Electronics, Co., Ltd. | Method and apparatus for executing dynamic memory management with object-oriented program |
CN100386745C (zh) * | 2003-09-30 | 2008-05-07 | 三星电子株式会社 | 用于通过面向对象的程序执行动态内存管理的方法和设备 |
CN1652616B (zh) * | 2004-02-07 | 2010-04-14 | 华为技术有限公司 | 一种自适应的系统管理方法 |
CN100452761C (zh) * | 2004-04-27 | 2009-01-14 | 华为技术有限公司 | 通信设备中数据包的存储方法 |
CN100359489C (zh) * | 2004-07-13 | 2008-01-02 | 中兴通讯股份有限公司 | 一种嵌入式实时操作系统中内存分配的方法 |
CN1606092B (zh) * | 2004-11-11 | 2010-07-28 | 威盛电子股份有限公司 | 交叉配置记忆空间的方法 |
CN101281491B (zh) * | 2008-05-12 | 2010-04-14 | 北京邮电大学 | 基于VxWorks的空间机器人中央处理器的内存模块及其管理方法 |
CN101286177B (zh) * | 2008-05-30 | 2010-06-02 | 中兴通讯股份有限公司 | 一种在文件分配表中给文件分配空间的方法及装置 |
CN102455974A (zh) * | 2010-10-21 | 2012-05-16 | 上海宝信软件股份有限公司 | 一种内存消耗可控的高速内存申请释放管理系统及方法 |
CN107209716A (zh) * | 2015-02-09 | 2017-09-26 | 华为技术有限公司 | 内存管理装置和方法 |
CN107209716B (zh) * | 2015-02-09 | 2020-04-21 | 华为技术有限公司 | 内存管理装置和方法 |
CN111562983A (zh) * | 2020-04-30 | 2020-08-21 | Oppo(重庆)智能科技有限公司 | 内存优化方法、装置、电子设备及存储介质 |
CN111562983B (zh) * | 2020-04-30 | 2023-01-06 | Oppo(重庆)智能科技有限公司 | 内存优化方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN1181434C (zh) | 2004-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1393780A (zh) | 自适应动态内存管理方法 | |
CN100466602C (zh) | 动态共享存储器存储空间的实现方法 | |
US6757802B2 (en) | Method for memory heap and buddy system management for service aware networks | |
CN1183453C (zh) | 一种内存管理系统及其分配方法 | |
CA2196483C (en) | Method and apparatus for providing enhanced pay per view in a video server | |
US5889956A (en) | Hierarchical resource management with maximum allowable allocation boundaries | |
CN1135760C (zh) | 在分组流编码器中动态带宽分配的方法和设备 | |
DE102006019839A1 (de) | Zeitbewusste Systeme | |
US6131150A (en) | Scaled memory allocation system | |
CN102968378A (zh) | 一种内存分配和释放的方法、装置及系统 | |
EP2222004A3 (en) | Dynamic bandwidth allocation circuit, dynamic bandwidth allocation method, dynamic bandwidth allocation program and recording medium | |
CN102006226A (zh) | 报文缓存管理方法、装置及网络设备 | |
CN102455974A (zh) | 一种内存消耗可控的高速内存申请释放管理系统及方法 | |
KR20040054352A (ko) | 가변 길이의 패킷 저장을 위한 메모리 관리 장치 및 방법 | |
US6747990B1 (en) | Packet communication system, network-side apparatus to be used therein, and time slot allocation control method | |
CN110166857A (zh) | 一种光纤通道交换机动态配置的实现方法 | |
CN113568891A (zh) | 分布式id生成方法、装置、服务器和可读存储介质 | |
CN1751481A (zh) | 用于在面向分组的通信设备中分配传输带宽的方法 | |
CA2419749C (en) | Bandwidth allocation method in point-to-multipoint communication system | |
EP0844564A3 (en) | Memory manager system | |
CA2622843A1 (en) | System and method for dynamic memory allocation | |
CN105373337A (zh) | 一种数据通信设备中的内存管理方法 | |
CN101515833B (zh) | 保护倒换的实现方法和装置 | |
CN1321011A (zh) | 基于异步转移模式无源光网络的带宽分配方法 | |
CN101753452A (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20041222 Termination date: 20110628 |