CN100417077C - 一种静态动态结合的存储区管理的方法 - Google Patents
一种静态动态结合的存储区管理的方法 Download PDFInfo
- Publication number
- CN100417077C CN100417077C CNB021374244A CN02137424A CN100417077C CN 100417077 C CN100417077 C CN 100417077C CN B021374244 A CNB021374244 A CN B021374244A CN 02137424 A CN02137424 A CN 02137424A CN 100417077 C CN100417077 C CN 100417077C
- Authority
- CN
- China
- Prior art keywords
- memory block
- dynamic
- size
- static
- idle queues
- 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
- Memory System (AREA)
Abstract
本发明公开了一种静态动态结合的存储区管理的方法,通过将存储区划分为两大部分,一部分被划分成静态的存储块,也是预先定义若干种尺寸,每一种尺寸都配置一定数目,在运行中不会进行拆分与合并;另一部分是共享的动态存储区,用来进行动态的分配。这样保证各种尺寸的存储块都有一定的最少数量,以保证最基本应用,同时又可以充分利用有限的存储区资源。保证了使用效率与存储区利用率,缓解了存储区紧张、使用效率低的矛盾,避免了复杂的使用维护,可应用于对各种内存、数据表格、***存储区的管理,可以同时管理多种和/或多个存储区。
Description
技术领域:
本发明涉及一种存储区的管理方法,尤其涉及嵌入式实时***中对各种存储区的管理,特别适用于存储区空间有限、实时性要求高的***中提高存储区的管理效率与存储区利用率。
背景技术:
计算机***的内存管理通常采用动态管理方法,分配内存时从内存区拆分出需要大小的内存块,归还时如果相邻空间也是空闲的要合并内存块,并且时常是需要多级的拆分与合并。这种方法使用灵活,可以更具需要获得任意大小的内存块,内存利用率高,但是由于需要频繁地拆分与合并内存块,效率比较低,可能导致内存抖动,且容易导致内存碎片,降低其利用率。
另有一种内存分片管理方法,预先配置好几种尺寸大小的内存块个数,***初始化时根据配置,分配特定数量的各种尺寸内存,分别放在各自尺寸的空闲队列中,使用时从相应队列中取一个使用,用完后归还到原队列中。这种方法简单稳定、效率高。但是它存在一些明显的不足:
一,内存利用率很低,只能分配于现配置的几种大小的内存,如果申请时相应尺寸的内存用完了则返回失败,即使其它尺寸的内存块还有很多空闲的也申请不到所需的内存。
二,需要预先恰当配置好各种尺寸内存的数目,而产品不同的配置、不同的应用环境,***内存使用需求情况差异很大,需要预先仔细调查、分析使用需求,否则配置的数据不合理就容易导致内存分配失败的错误,影响业务的正常运行。
三,常常导致给不同用户不同的配置参数,提供不同版本,不便于使用与维护。
嵌入式实时***中内存管理需要稳定高效,需要高的利用率。第一种方法,对于嵌入式实时***其低效率更加明显,不适合应用对效率的需求。内存碎片的产生在嵌入式***中会大大降低内存的利用率,导致申请较大尺寸的内存容易失败。同时,也可能出现某些不正常的应用把存储区耗尽,导致其它一些基本的应用无法分配到必需的存储区,导致***无法运转。
第二种方法的低利用率在内存空间有限的嵌入式***中特别明显,配置稍有不当容易导致申请内存失败,导致***配置复杂,使用、维护不方便。
这两种方法都针对堆内存的管理,适用于DRAM(动态随机存取存储器)之类可读写存储区,不适合其它类型存储区的管理,比如非内存的数据表格、存储空间的管理。
发明内容:
本发明提出了一种静态动态结合的存储区管理的方法,克服了现有技术中利用率与效率矛盾的缺点,实现了既保证效率又提高利用率,并且运行稳定可靠的存储区管理方法。
本发明所述静态动态结合的存储区管理的方法如下:
第一步,登记注册需要管理的存储区,包括起始地址、存储区大小,登记成功则给出一个编号;
第二步,配置管理***,配置***使用存储区时可能要用到存储块尺寸种类,给每种尺寸配置保留存储块数目,作为每种尺寸保留的静态存储块;
第三步,初始化静态存储区,按照上述每种尺寸的静态存储块数目分别给各种尺寸划分存储块,将划分出的存储块放在相应尺寸的静态空闲队列中;
第四步,初始化动态存储区,把剩余的存储区按照最大尺寸划分,放入相应尺寸的动态空闲队列中,余下的零头按照较小一号尺寸划分,再有零头再按照更小的尺寸划分,直至全部划分完成或不足最小尺寸而丢弃,划分出的存储块放入相应尺寸的动态空闲队列;
第五步,申请存储块时,先在静态存储区申请,如果没有合适的再到动态区申请存储块,此时如果没有相应尺寸的空闲存储块,需要把较大尺寸的存储块拆分后使用;
第六步,归还存储块时,如果是从静态区申请的则归还到静态区,如果是从动态区申请的则归还到动态区,此时如果动态空闲队列中有其左邻或右邻存储块则要合并存储块。
采用本发明所述方法,由于采取了静态与动态管理方法相结合的技术措施,与现有技术相比,保证了使用效率与存储区利用率,缓解了存储区紧张、使用效率低的矛盾,避免了复杂的使用维护。本发明采用了静态与动态相结合的管理方式,将管理开销与被管理存储区分开,将使用范围扩大到对各种内存、数据表格、***存储区的管理,可以同时管理多种和/或多个存储区。
本发明将存储区划分为两大部分,一部分被划分成静态的存储块,也是预先定义若干种尺寸,每一种尺寸都配置一定数目,在运行中不会进行拆分与合并。另一部分是共享的动态存储区,用来进行动态的分配。这样保证各种尺寸的存储块都有一定的最少数量,以保证最基本应用,同时又可以充分利用有限的存储区资源。
附图说明:
图1是本发明静态管理部分的初始化流程图。
图2是本发明动态管理部分初始化流程图。
图3是本发明分配存储区流程图。
图4是本发明归还存储区流程图。
具体实施方式:
下面结合附图详细介绍本发明的静态动态结合的存储区管理方法。
一,存储区登记,可以预先配置可同时管理存储区的最大数目,登记注册时只需要提供被管理存储区的起始地址和大小,登记成功返回一个编号,以后需要对该存储区进行管理时需要提供该编号。
不同登记号的存储区管理方法相同,但是用不同的管理队列和资源。
二,配置管理***,给该存储区配置使用时要用到存储块尺寸种类,给每种尺寸配置保留存储块数目,作为每个尺寸保留的静态存储块。
三,静态管理部分的初始化,如流程如图1所示,先按照配置依次给每种尺寸划分出指定数目的存储块,放在相应尺寸的静态空闲队列中,每种尺寸对应一个空闲队列,用来存放该尺寸的静态部分空闲存储块。
四,动态管理部分的初始化,如流程图2所示,把剩余的存储区先按照最大尺寸划分,把划分出的存储块放入最大尺寸对应的动态空闲队列中,余下的零头按照较小一号尺寸划分,再由零头再按照更小的尺寸划分,直至全部划分完成或不足最小尺寸而丢弃,划分出的存储块放入相应尺寸的动态空闲队列。
每种尺寸都包含静态空闲队列、动态空闲队列,另外有一个静态使用队列和动态使用队列。
五,申请存储块,如附图3所示,包含如下几步:
1,先查看相应尺寸的静态空闲队列中是否有空闲的存储块,如果有就取出加入相应尺寸的静态使用队列返回,否则进行下一步。
2,在相应尺寸的动态空闲队列中是否有空闲的存储块,如果有就取出加入相应尺寸的动态使用队列返回,否则进行下一步。
3,查找更大尺寸的动态空闲队列是否有空闲存储块,如果没有就继续到查找更大一号尺寸的动态空闲队列,直至找到就取出进入下一步,如果没有找到则返回存储区空间不够的错误。
4,将取出的存储块拆分,如果拆分一次没有得到需要的尺寸,则将新拆出的一个继续拆分,另外的放入相应尺寸的空闲动态队列,直到拆分出适当尺寸的存储块,取出返回,其余的则加入到相应尺寸的动态空闲队列中。拆分合并策略可以采用buddy(伙伴)***。
六,归还存储块,如附图4所示,包含如下几步:
1,先检查是否在静态使用队列中,是则取出,加入到相应尺寸的静态空闲队列中,返回,否则进入下一步。
2,检查是否在动态使用队列中,是则取出,检查动态空闲队列是否存在该存储块的左邻和/或右邻,是则取出合并成较大尺寸的存储块,再在动态空闲队列中检查是否存在合并存储块的左邻和/或右邻,是则取出合并,直至没有左邻和右邻了,把合并的存储块加入到相应尺寸的动态空闲队列中,返回。如果要归还的存储块既不属于静态使用队列,也不属于动态使用队列,则返回错误。
为了适应只需要使用静态管理方法或只需要使用动态管理方法的情况,提供了两个预定义的宏,分别表示使用静态管理方式和使用动态管理方式,如果只定义其中一个,表示仅使用相应的一种管理方法,如果两个宏都定义了,则使用静态动态相结合的管理方法。
上面的步骤是针对静态动态结合的方法描述的,如果需要使用单一的管理方法时只需要定义相应的宏,另一个管理方法的内容不会编译运行。
Claims (3)
1. 一种静态动态结合的存储区管理的方法,其特征在于,包括以下步骤:
第一步,登记注册需要管理的存储区,包括起始地址、存储区大小,登记成功则给出一个编号;
第二步,配置管理***,配置***使用存储区时要用到存储块尺寸种类,给每种尺寸配置保留存储块数目,作为每种尺寸保留的静态存储块;
第三步,初始化静态存储区,按照上述每种尺寸的静态存储块数目分别给各种尺寸划分存储块,将划分出的存储块放在相应尺寸的静态空闲队列中;
第四步,初始化动态存储区,把剩余的存储区按照最大尺寸划分,放入相应尺寸的动态空闲队列中,余下的零头按照较小一号尺寸划分,再有零头再按照更小的尺寸划分,直至全部划分完成或不足最小尺寸而丢弃,划分出的存储块放入相应尺寸的动态空闲队列;
第五步,申请存储块时,先在静态存储区申请,如果没有合适的再到动态区申请存储块,此时如果没有相应尺寸的空闲存储块,需要把较大尺寸的存储块拆分后使用;
第六步,归还存储块时,如果是从静态区申请的则归还到静态区,如果是从动态区申请的则归还到动态区,此时如果动态空闲队列中有其左邻或右邻存储块则要合并存储块。
2. 根据权利要求1所述的静态动态结合的存储区管理的方法,其特征在于,所述步骤五具体包括以下步骤:
1)先查看相应尺寸的静态空闲队列中是否有空闲的存储块,如果有就取出加入相应尺寸的静态使用队列返回,否则进行下一步;
2)在相应尺寸的动态空闲队列中是否有空闲的存储块,如果有就取出加入相应尺寸的动态使用队列返回,否则进行下一步;
3)查找更大尺寸的动态空闲队列是否有空闲存储块,如果没有就继续到查找更大一号尺寸的动态空闲队列,直至找到就取出进入下一步,如果没有找到则返回存储区空间不够的错误;
4)将取出的存储块拆分,如果拆分一次没有得到需要的尺寸,则将新拆出的一个继续拆分,另外的放入相应尺寸的空闲动态队列,直到拆分出适当尺寸的存储块,取出返回,其余的则加入到相应尺寸的动态空闲队列中。
3. 根据权利要求1或2所述的静态动态结合的存储区管理的方法,其特征在于,所述步骤六具体包括以下步骤:
1)先检查是否在静态使用队列中,是则取出,加入到相应尺寸的静态空闲队列中,返回,否则进入下一步;
2)检查是否在动态使用队列中,是则取出,检查动态空闲队列是否存在该存储块的左邻和/或右邻,是则取出合并成较大尺寸的存储块,再在动态空闲队列中检查是否存在合并存储块的左邻和/或右邻,是则取出合并,直至没有左邻和右邻了,把合并的存储块加入到相应尺寸的动态空闲队列中,返回;如果要归还的存储块既不属于静态使用队列,也不属于动态使用队列,则返回错误。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021374244A CN100417077C (zh) | 2002-10-11 | 2002-10-11 | 一种静态动态结合的存储区管理的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB021374244A CN100417077C (zh) | 2002-10-11 | 2002-10-11 | 一种静态动态结合的存储区管理的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1489334A CN1489334A (zh) | 2004-04-14 |
CN100417077C true CN100417077C (zh) | 2008-09-03 |
Family
ID=34147011
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB021374244A Expired - Lifetime CN100417077C (zh) | 2002-10-11 | 2002-10-11 | 一种静态动态结合的存储区管理的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100417077C (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100412800C (zh) * | 2004-12-25 | 2008-08-20 | 鸿富锦精密工业(深圳)有限公司 | 一种用于管理网络服务器内存的方法 |
CN100461120C (zh) * | 2006-05-16 | 2009-02-11 | 中兴通讯股份有限公司 | 用于现场数据保护的内存管理方法 |
CN102096638B (zh) * | 2010-11-25 | 2013-05-29 | 意法·爱立信半导体(北京)有限公司 | 静态存储的分配方法和装置 |
CN104516929B (zh) | 2013-09-27 | 2019-07-19 | 伊姆西公司 | 用于文件***的方法和装置 |
CN107665146B (zh) * | 2016-07-29 | 2020-07-07 | 华为技术有限公司 | 内存管理装置和方法 |
US9971510B2 (en) | 2016-10-16 | 2018-05-15 | Mediatek Inc. | Method for managing memory and associated microcontroller |
CN107003892B (zh) * | 2016-12-29 | 2021-10-08 | 深圳前海达闼云端智能科技有限公司 | Gpu虚拟化方法、装置、***及电子设备、计算机程序产品 |
CN106844046B (zh) * | 2016-12-31 | 2021-06-11 | 北京市腾河智慧能源科技有限公司 | 宽带载波内存管理方法 |
CN114116222A (zh) * | 2021-11-30 | 2022-03-01 | 翱捷智能科技(上海)有限公司 | 一种嵌入式***启动时内存布局动态规划的方法及装置 |
CN115858184B (zh) * | 2023-03-03 | 2023-05-02 | 浪潮电子信息产业股份有限公司 | 一种rdma内存管理方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1193776A (zh) * | 1997-03-13 | 1998-09-23 | 国际商业机器公司 | 静态映射在统一存储器体系结构中的智能型媒体存储器 |
CN1205477A (zh) * | 1998-07-16 | 1999-01-20 | 英业达股份有限公司 | 存储器替代方法及其装置 |
US6151664A (en) * | 1999-06-09 | 2000-11-21 | International Business Machines Corporation | Programmable SRAM and DRAM cache interface with preset access priorities |
US6260101B1 (en) * | 1997-03-07 | 2001-07-10 | Advanced Micro Devices, Inc. | Microcontroller having dedicated hardware for memory address space expansion supporting both static and dynamic memory devices |
-
2002
- 2002-10-11 CN CNB021374244A patent/CN100417077C/zh not_active Expired - Lifetime
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6260101B1 (en) * | 1997-03-07 | 2001-07-10 | Advanced Micro Devices, Inc. | Microcontroller having dedicated hardware for memory address space expansion supporting both static and dynamic memory devices |
CN1193776A (zh) * | 1997-03-13 | 1998-09-23 | 国际商业机器公司 | 静态映射在统一存储器体系结构中的智能型媒体存储器 |
CN1205477A (zh) * | 1998-07-16 | 1999-01-20 | 英业达股份有限公司 | 存储器替代方法及其装置 |
US6151664A (en) * | 1999-06-09 | 2000-11-21 | International Business Machines Corporation | Programmable SRAM and DRAM cache interface with preset access priorities |
Also Published As
Publication number | Publication date |
---|---|
CN1489334A (zh) | 2004-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101221536B (zh) | 嵌入式***的内存管理方法及装置 | |
CN100382048C (zh) | 一种内存管理方法 | |
CN100417077C (zh) | 一种静态动态结合的存储区管理的方法 | |
CN101799797B (zh) | 分布式存储***中用户磁盘配额的动态分配方法 | |
CN105677597A (zh) | 数据写入方法及装置 | |
CN102193814A (zh) | 嵌入式虚拟化内存动态分配方法及*** | |
CN101226553A (zh) | 一种嵌入式数据库变长字段存储的实现方法及装置 | |
CN102024008A (zh) | 一种Web服务器的并发数限制方法 | |
CN103988186A (zh) | 内存***、内存模块、内存模块的访问方法以及计算机*** | |
CN105701019A (zh) | 一种内存管理方法以及装置 | |
CN102025550A (zh) | 一种分布式集群中数据管理的***和方法 | |
CN1427342A (zh) | 一种内存管理***及其分配方法 | |
CN104731799A (zh) | 内存数据库管理装置 | |
CN104850505B (zh) | 基于链式堆叠的内存管理方法与*** | |
CN103412884A (zh) | 一种异构存储介质下嵌入式数据库的管理方法 | |
CN112685333B (zh) | 一种堆内存管理方法及装置 | |
CN103218305A (zh) | 存储空间的分配方法 | |
CN103389945B (zh) | 一种内存管理的方法及装置 | |
CN106557427A (zh) | 共享内存数据库的内存管理方法及装置 | |
CN103455433A (zh) | 内存管理方法及*** | |
CN105677761A (zh) | 一种数据切分的方法及*** | |
CN103425435A (zh) | 磁盘存储方法及磁盘存储*** | |
US5640597A (en) | Method and apparatus for servicing simultaneously a plurality of requests for data streams | |
CN105469173A (zh) | 一种静态内存进行优化管理的方法 | |
CN106855845A (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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20080903 |
|
CX01 | Expiry of patent term |