[发明专利]一种嵌入式软件内存管理方法有效
申请号: | 201711347959.2 | 申请日: | 2017-12-15 |
公开(公告)号: | CN108038002B | 公开(公告)日: | 2021-11-02 |
发明(设计)人: | 赵昶宇;蓝仁恩 | 申请(专利权)人: | 天津津航计算技术研究所 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 中国兵器工业集团公司专利中心 11011 | 代理人: | 王雪芬 |
地址: | 300308 天津*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种嵌入式软件内存管理方法,涉及嵌入式软件内存管理技术领域。本发明采用静态分配的方式,预先设定好系统内存区中的分区数量和各个分区中内存块的数量和大小,然后基于池式内存管理机制对用户内存区采用动态内存分配的方式,通过创建内存分配器处理内存申请和释放请求,并对传统的动态内存分配和释放算法进行了改进。该方法采用静态分配系统内存区和动态分配用户内存区相结合的方式,增加了系统的灵活性,同时也限制了大量碎片的产生,避免了内存泄露的出现,且该方法能够有效降低申请和释放内存的时间耗费,提高动态内存管理效率。 | ||
搜索关键词: | 一种 嵌入式 软件 内存 管理 方法 | ||
【主权项】:
1.一种嵌入式软件内存管理方法,其特征在于,包括以下步骤:步骤1、系统内存区的静态内存分配所述系统内存区的静态内存分配的方法中,系统内存区通过Partition_Create()函数创建内存分区,每个块内存的第一部分存储分区对象,其后才是各个内存块,且在内存区中设置一个全局链表来存储所有的内存分区指针,内存分区的数量可动态定义,对链表中的分区按照每个分区中内存块的大小进行排序,内存块小的分区排在前面,内存块大的分区排在后面;在申请内存块时,采用first-fit方法从系统内存区的分区链表中找到合适大小的内存分区,如果该分区空闲内存链表不为空,则返回该链表的第一个内存块地址,如果为空则查看下一块分区;如果找不到合适大小的内存分区,则返回空指针;步骤2、用户内存区的动态内存分配在用户内存区的动态内存分配的方法中,采用池式内存分配方法在程序运行前在内存池中预先分配好一块内存区,然后对内存进行分配,空闲内存块在内存池中按照从小到大的顺序以双向链表进行组织,内存池的结构由两部分组成:内存块管理头节点和可供用户读写的内存;所述内存块管理头节点包括内存池的起始地址、内存池的总大小、最大可用连续空间的大小、指向内存块双向链表的指针、指向空闲内存块的双向链表的指针和指向下一个内存池的指针;当用户程序申请内存时,为每块内存池设置失败因子和跳转指针两个字段,所述失败因子用于记录“查找满足需求的内存池”的次数,所述跳转指针用于表示扫描内存池时下一个要跳转的节点,在顺序查找该内存池的空闲内存块双向链表时,对于失败因子高于预设阈值的节点则直接跳过;若查找到第一个满足分配字节大小要求的空闲块,将该空闲块从双向链表上移除;若未找到合适大小的空闲内存块,则重新创建一块新的内存池;如果查找到的空闲内存块大小除了能够满足用户程序所申请的字节数要求外还有一定大小的可用空闲空间,则将其分割为两个新的内存块,其中一块是为用户程序分配的内存,将其占用标志置为“占用”,另一块是可供用户程序后续申请分配的新空闲块,将其占用标志置为“空闲”,并将其作为新的空闲块按照一定方式插入到空闲块双向链表中;否则,直接将该内存块返回给用户程序。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津津航计算技术研究所,未经天津津航计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201711347959.2/,转载请声明来源钻瓜专利网。
- 上一篇:一种飞防作业灯
- 下一篇:一种基于魔方算子的复杂断层识别及检测方法