一种静态动态结合的存储区管理的方法.pdf

上传人:r5 文档编号:1120512 上传时间:2018-04-01 格式:PDF 页数:15 大小:429.02KB
返回 下载 相关 举报
摘要
申请专利号:

CN02137424.4

申请日:

2002.10.11

公开号:

CN1489334A

公开日:

2004.04.14

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效|||公开

IPC分类号:

H04L12/24; H04Q3/545

主分类号:

H04L12/24; H04Q3/545

申请人:

深圳市中兴通讯股份有限公司;

发明人:

李桂平; 陈澎

地址:

518057广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法律部

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本发明公开了一种静态动态结合的存储区管理的方法,通过将存储区划分为两大部分,一部分被划分成静态的存储块,也是预先定义若干种尺寸,每一种尺寸都配置一定数目,在运行中不会进行拆分与合并;另一部分是共享的动态存储区,用来进行动态的分配。这种保证各种尺寸的存储块都有一定的最少数量,以保证最基本应用,同时又可以充分利用有限的存储区资源。保证了使用效率与存储区利用率,缓解了存储区紧张、使用效率低的矛盾,避免了复杂的使用维护,可应用于对各种内存、数据表格、外围存储区的管理,可以同时管理多种和/或多个存储区。

权利要求书

1: 一种静态动态结合的存储区管理的方法,其特征在于,包括以下步骤: 第一步,登记注册需要管理的存储区,包括起始地址、存储区大小,登记成 功则给出一个编号; 第二步,配置管理系统,配置系统使用存储区时可能要用到存储块尺寸种类, 给每种尺寸配置保留存储块数目,作为每种尺寸保留的静态存储块; 第三步,初始化静态存储区,按照上述每种尺寸的静态存储块数目分别给各 种尺寸划分存储块,将划分出的存储块放在相应尺寸的静态空闲队列中; 第四步,初始化动态存储区,把剩余的存储区按照最大尺寸划分,放入相应 尺寸的动态空闲队列中,余下的零头按照较小一号尺寸划分,再有零头再按照更 小的尺寸划分,直至全部划分完成或不足最小尺寸而丢弃,划分出的存储块放入 相应尺寸的动态空闲队列; 第五步,申请存储块时,先在静态存储区申请,如果没有合适的再到动态区 申请存储块,此时如果没有相应尺寸的空闲存储块,需要把较大尺寸的存储块拆 分后使用; 第六步,归还存储块时,如果是从静态区申请的则归还到静态区,如果是从 动态区申请的则归还到动态区,此时如果动态空闲队列中有其左邻或右邻存储块 则要合并存储块。
2: 根据权利要求1所述的静态动态结合的存储区管理的方法,其特征在于,所 述步骤五具体包括以下步骤: 1)先查看相应尺寸的静态空闲队列中是否有空闲的存储块,如果有就取出 加入相应尺寸的静态使用队列返回,否则进行下一步; 2)在相应尺寸的动态空闲队列中是否有空闲的存储块,如果有就取出加入 相应尺寸的动态使用队列返回,否则进行下一步; 3)查找更大尺寸的动态空闲队列是否有空闲存储块,如果没有就继续到查 找更大一号尺寸的动态空闲队列,直至找到就取出进入下一步,如果没 有找到则返回存储区空间不够的错误; 4)将取出的存储块拆分,如果拆分一次没有得到需要的尺寸,则将新拆出 的一个继续拆分,另外的放入相应尺寸的空闲动态队列,直到拆分出适 当尺寸的存储块,取出返回,其余的则加入到相应尺寸的动态空闲队列 中。
3: 根据权利要求1或2所述的静态动态结合的存储区管理的方法,其特征在于, 所述步骤六具体包括以下步骤: 1)先检查是否在静态使用队列中,是则取出,加入到相应尺寸的静态空闲 队列中,返回,否则进入下一步; 2)检查是否在动态使用队列中,是则取出,检查动态空闲队列是否存在该 存储块的左邻和/或右邻,是则取出合并成较大尺寸的存储块,再在动态 空闲队列中检查是否存在合并存储块的左邻和/或右邻,是则取出合并, 直至没有左邻和右邻了,把合并的存储块加入到相应尺寸的动态空闲队 列中,返回;如果要归还的存储块既不属于静态使用队列,也不属于动 态使用队列,则返回错误。

说明书


一种静态动态结合的存储区管理的方法

    技术领域:

    本发明涉及一种存储区的管理方法,尤其涉及嵌入式实时系统中对各种存储区的管理,特别适用于存储区空间有限、实时性要求高的系统中提高存储区的管理效率与存储区利用率。

    背景技术:

    计算机系统的内存管理通常采用动态管理方法,分配内存时从内存区拆分出需要大小的内存块,归还时如果相邻空间也是空闲的要合并内存块,并且时常是需要多级的拆分与合并。这种方法使用灵活,可以更具需要获得任意大小的内存块,内存利用率高,但是由于需要频繁地拆分与合并内存块,效率比较低,可能导致内存抖动,且容易导致内存碎片,降低其利用率。

    另有一种内存分片管理方法,预先配置好几种尺寸大小的内存块个数,系统初始化时根据配置,分配特定数量的各种尺寸内存,分别放在各自尺寸地空闲队列中,使用时从相应队列中取一个使用,用完后归还到原队列中。这种方法简单稳定、效率高。但是它存在一些明显的不足:

    一,内存利用率很低,只能分配于现配置的几种大小的内存,如果申请时相应尺寸的内存用完了则返回失败,即使其它尺寸的内存块还有很多空闲的也申请不到所需的内存。

    二,需要预先恰当配置好各种尺寸内存的数目,而产品不同的配置、不同的应用环境,系统内存使用需求情况差异很大,需要预先仔细调查、分析使用需求,否则配置的数据不合理就容易导致内存分配失败的错误,影响业务的正常运行。

    三,常常导致给不同用户不同的配置参数,提供不同版本,不便于使用与维护。

    嵌入式实时系统中内存管理需要稳定高效,需要高的利用率。第一种方法,对于嵌入式实时系统其低效率更加明显,不适合应用对效率的需求。内存碎片的产生在嵌入式系统中会大大降低内存的利用率,导致申请较大尺寸的内存容易失败。同时,也可能出现某些不正常的应用把存储区耗尽,导致其它一些基本的应用无法分配到必需的存储区,导致系统无法运转。

    第二种方法的低利用率在内存空间有限的嵌入式系统中特别明显,配置稍有不当容易导致申请内存失败,导致系统配置复杂,使用、维护不方便。

    这两种方法都针对堆内存的管理,适用于DRAM(动态随机存取存储器)之类可读写存储区,不适合其它类型存储区的管理,比如非内存的数据表格、存储空间的管理。

    发明内容:

    本发明提出了一种静态动态结合的存储区管理的方法,克服了现有技术中利用率与效率矛盾的缺点,实现了既保证效率又提高利用率,并且运行稳定可靠的存储区管理方法。

    本发明所述静态动态结合的存储区管理的方法如下:

    第一步,登记注册需要管理的存储区,包括起始地址、存储区大小,登记成功则给出一个编号;

    第二步,配置管理系统,配置系统使用存储区时可能要用到存储块尺寸种类,给每种尺寸配置保留存储块数目,作为每种尺寸保留的静态存储块;

    第三步,初始化静态存储区,按照上述每种尺寸的静态存储块数目分别给各种尺寸划分存储块,将划分出的存储块放在相应尺寸的静态空闲队列中;

    第四步,初始化动态存储区,把剩余的存储区按照最大尺寸划分,放入相应尺寸的动态空闲队列中,余下的零头按照较小一号尺寸划分,再有零头再按照更小的尺寸划分,直至全部划分完成或不足最小尺寸而丢弃,划分出的存储块放入相应尺寸的动态空闲队列;

    第五步,申请存储块时,先在静态存储区申请,如果没有合适的再到动态区申请存储块,此时如果没有相应尺寸的空闲存储块,需要把较大尺寸的存储块拆分后使用;

    第六步,归还存储块时,如果是从静态区申请的则归还到静态区,如果是从动态区申请的则归还到动态区,此时如果动态空闲队列中有其左邻或右邻存储块则要合并存储块。

    采用本发明所述方法,由于采取了静态与动态管理方法相结合的技术措施,与现有技术相比,保证了使用效率与存储区利用率,缓解了存储区紧张、使用效率低的矛盾,避免了复杂的使用维护。本发明采用了静态与动态相结合的管理方式,将管理开销与被管理存储区分开,将使用范围扩大到对各种内存、数据表格、外围存储区的管理,可以同时管理多种和/或多个存储区。

    本发明将存储区划分为两大部分,一部分被划分成静态的存储块,也是预先定义若干种尺寸,每一种尺寸都配置一定数目,在运行中不会进行拆分与合并。另一部分是共享的动态存储区,用来进行动态的分配。这样保证各种尺寸的存储块都有一定的最少数量,以保证最基本应用,同时又可以充分利用有限的存储区资源。

    附图说明:

    图1是本发明静态管理部分的初始化流程图。

    图2是本发明动态管理部分初始化流程图。

    图3是本发明分配存储区流程图。

    图4是本发明归还存储区流程图。

    具体实施方式:

    下面结合附图详细介绍本发明的静态动态结合的存储区管理方法。

    一,存储区登记,可以预先配置可同时管理存储区的最大数目,登记注册时只需要提供被管理存储区的起始地址和大小,登记成功返回一个编号,以后需要对该存储区进行管理时需要提供该编号。

    不同登记号的存储区管理方法相同,但是用不同的管理队列和资源。

    二,配置管理系统,给该存储区配置使用时要用到存储块尺寸种类,给每种尺寸配置保留存储块数目,作为每个尺寸保留的静态存储块。

    三,静态管理部分的初始化,如流程如图1所示,先按照配置依次给每种尺寸划分出指定数目的存储块,放在相应尺寸的静态空闲队列中,每种尺寸对应一个空闲队列,用来存放该尺寸的静态部分空闲存储块。

    四,动态管理部分的初始化,如流程图2所示,把剩余的存储区先按照最大尺寸划分,把划分出的存储块放入最大尺寸对应的动态空闲队列中,余下的零头按照较小一号尺寸划分,再由零头再按照更小的尺寸划分,直至全部划分完成或不足最小尺寸而丢弃,划分出的存储块放入相应尺寸的动态空闲队列。

    每种尺寸都包含静态空闲队列、动态空闲队列,另外有一个静态使用队列和动态使用队列。

    五,申请存储块,如附图3所示,包含如下几步:

    1,先查看相应尺寸的静态空闲队列中是否有空闲的存储块,如果有就取出

    加入相应尺寸的静态使用队列返回,否则进行下一步。

    2,在相应尺寸的动态空闲队列中是否有空闲的存储块,如果有就取出加入相应尺寸的动态使用队列返回,否则进行下一步。

    3,查找更大尺寸的动态空闲队列是否有空闲存储块,如果没有就继续到查找更大一号尺寸的动态空闲队列,直至找到就取出进入下一步,如果没有找到则返回存储区空间不够的错误。

    4,将取出的存储块拆分,如果拆分一次没有得到需要的尺寸,则将新拆出的一个继续拆分,另外的放入相应尺寸的空闲动态队列,直到拆分出适当尺寸的存储块,取出返回,其余的则加入到相应尺寸的动态空闲队列中。拆分合并策略可以采用buddy(伙伴)系统。

    六,归还存储块,如附图4所示,包含如下几步:

    1,先检查是否在静态使用队列中,是则取出,加入到相应尺寸的静态空闲队列中,返回,否则进入下一步。

    2,检查是否在动态使用队列中,是则取出,检查动态空闲队列是否存在该存储块的左邻和/或右邻,是则取出合并成较大尺寸的存储块,再在动态空闲队列中检查是否存在合并存储块的左邻和/或右邻,是则取出合并,直至没有左邻和右邻了,把合并的存储块加入到相应尺寸的动态空闲队列中,返回。如果要归还的存储块既不属于静态使用队列,也不属于动态使用队列,则返回错误。

    为了适应只需要使用静态管理方法或只需要使用动态管理方法的情况,提供了两个预定义的宏,分别表示使用静态管理方式和使用动态管理方式,如果只定义其中一个,表示仅使用相应的一种管理方法,如果两个宏都定义了,则使用静态动态相结合的管理方法。

    上面的步骤是针对静态动态结合的方法描述的,如果需要使用单一的管理方法时只需要定义相应的宏,另一个管理方法的内容不会编译运行。

一种静态动态结合的存储区管理的方法.pdf_第1页
第1页 / 共15页
一种静态动态结合的存储区管理的方法.pdf_第2页
第2页 / 共15页
一种静态动态结合的存储区管理的方法.pdf_第3页
第3页 / 共15页
点击查看更多>>
资源描述

《一种静态动态结合的存储区管理的方法.pdf》由会员分享,可在线阅读,更多相关《一种静态动态结合的存储区管理的方法.pdf(15页珍藏版)》请在专利查询网上搜索。

本发明公开了一种静态动态结合的存储区管理的方法,通过将存储区划分为两大部分,一部分被划分成静态的存储块,也是预先定义若干种尺寸,每一种尺寸都配置一定数目,在运行中不会进行拆分与合并;另一部分是共享的动态存储区,用来进行动态的分配。这种保证各种尺寸的存储块都有一定的最少数量,以保证最基本应用,同时又可以充分利用有限的存储区资源。保证了使用效率与存储区利用率,缓解了存储区紧张、使用效率低的矛盾,避免了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1