[发明专利]一种嵌入式软件内存管理方法有效
申请号: | 201711347959.2 | 申请日: | 2017-12-15 |
公开(公告)号: | CN108038002B | 公开(公告)日: | 2021-11-02 |
发明(设计)人: | 赵昶宇;蓝仁恩 | 申请(专利权)人: | 天津津航计算技术研究所 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 中国兵器工业集团公司专利中心 11011 | 代理人: | 王雪芬 |
地址: | 300308 天津*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 软件 内存 管理 方法 | ||
本发明涉及一种嵌入式软件内存管理方法,涉及嵌入式软件内存管理技术领域。本发明采用静态分配的方式,预先设定好系统内存区中的分区数量和各个分区中内存块的数量和大小,然后基于池式内存管理机制对用户内存区采用动态内存分配的方式,通过创建内存分配器处理内存申请和释放请求,并对传统的动态内存分配和释放算法进行了改进。该方法采用静态分配系统内存区和动态分配用户内存区相结合的方式,增加了系统的灵活性,同时也限制了大量碎片的产生,避免了内存泄露的出现,且该方法能够有效降低申请和释放内存的时间耗费,提高动态内存管理效率。
技术领域
本发明涉及嵌入式软件内存管理技术领域,具体涉及一种嵌入式软件内存管理方法。
背景技术
由于嵌入式系统的实时性、灵活性和稳定性要求,对内存管理有着特殊的策略。良好的程序性能部分依赖于其有效的内存管理能力,而常规的堆内存管理器的性能会受到内存碎片和内存回收需求的影响,尤其是在内存频繁分配和释放的应用环境中,更容易成为系统性能的瓶颈。不仅如此,潜在的内存泄露可能会使长时间运行的系统内存耗尽,导致系统性能急剧下降直至最后宕机。为解决嵌入式系统在内存分配时带来的堆中内存有碎片,同时在分配与回收时所需时间不确定等问题,一般采用内存池分配内存。传统内存池管理机制只能分配大小固定的内存块,灵活性差;其它的内存池管理方法虽然可以实现动态分配内存块,但是内存池管理的内存空间通过定义全局数组的方法创建,将数组名作为内存池地址指针传递给生成函数,这种做法显然不够灵活。
为了克服现有内存池管理机制存在的不足,需要提出一种嵌入式软件内存管理方法。
发明内容
(一)要解决的技术问题
本发明是克服现有内存池管理机制存在的不足,提出一种嵌入式软件内存管理方法。
(二)技术方案
为了解决上述技术问题,本发明提供了一种嵌入式软件内存管理方法,包括以下步骤:
步骤1、系统内存区的静态内存分配
所述系统内存区的静态内存分配的方法中,系统内存区通过Partition_Create()函数创建内存分区,每个块内存的第一部分存储分区对象,其后才是各个内存块,且在内存区中设置一个全局链表来存储所有的内存分区指针,内存分区的数量可动态定义,对链表中的分区按照每个分区中内存块的大小进行排序,内存块小的分区排在前面,内存块大的分区排在后面;
在申请内存块时,采用first-fit方法从系统内存区的分区链表中找到合适大小的内存分区,如果该分区空闲内存链表不为空,则返回该链表的第一个内存块地址,如果为空则查看下一块分区;如果找不到合适大小的内存分区,则返回空指针;
步骤2、用户内存区的动态内存分配
在用户内存区的动态内存分配的方法中,采用池式内存分配方法在程序运行前在内存池中预先分配好一块内存区,然后对内存进行分配,空闲内存块在内存池中按照从小到大的顺序以双向链表进行组织,内存池的结构由两部分组成:内存块管理头节点和可供用户读写的内存;所述内存块管理头节点包括内存池的起始地址、内存池的总大小、最大可用连续空间的大小、指向内存块双向链表的指针、指向空闲内存块的双向链表的指针和指向下一个内存池的指针;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津津航计算技术研究所,未经天津津航计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711347959.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种飞防作业灯
- 下一篇:一种基于魔方算子的复杂断层识别及检测方法