[发明专利]一种嵌入式系统内存管理方法有效
申请号: | 201711379808.5 | 申请日: | 2017-12-20 |
公开(公告)号: | CN108121603B | 公开(公告)日: | 2021-11-02 |
发明(设计)人: | 刘东栋 | 申请(专利权)人: | 安徽皖通邮电股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京科亿知识产权代理事务所(普通合伙) 11350 | 代理人: | 汤东凤 |
地址: | 230000 *** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 系统 内存 管理 方法 | ||
1.一种嵌入式系统内存管理方法,其特征在于:包括如下步骤:
步骤1:集中申请、集中释放;每次集中申请一个批量的大小相等的小片内存给协议进程使用,同样,协议进程需要释放内存时也是一个批量集中释放回动态内存,同时通过建立一个索引号与管理结构一一对应的索引表的方式实现多个协议进程能够同时批量申请内存;
步骤2:通过配置生成一个内存缓冲池,防止管理结构直接从动态内存中去申请小块内存;批量内存申请方式申请内存池POOL并不是从动态内存中直接申请,而是先从动态内存中申请一个大块内存池BLOCK,大小为64K或者更大,一个BLOCK有若干个大小相等的小内存池POOL,一个POOL包含了若干个小片内存UINT,这样一个POOL就是一批内存,作为一个整体被内存批量申请管理结构申请和释放,由于每个POOL的大小是一致的,不同index类型的批量内存申请应用都可以从这个大块内存中申请POOL;初始化的时候从动态内存中申请一大块地址连续的内存,专门供批量内存申请使用,这N个BLOCK称之为静态的BLOCK,静态的BLOCK永远不释放到动态内存中去;当静态的内存使用完了才会从动态内存中去申请一个BLOCK,称为动态的BLOCK,动态的BLOCK在整个都空闲的时候会释放回动态内存,这样相当于在批量内存申请管理结构和动态内存之间作了一个缓冲;BLOCK内存池之间通过双向链表的方式连接在一起,并定义一个块管理结构来管理,块管理结构用于管理BLOCK的申请、释放和统计工作;
步骤3:对批量内存池采用队列化的管理;
步骤4:对程序异常导致的内存坏块做容错处理,对被破坏的内存块进行隔离,避免错误的内存影响正常的内存申请和释放,被隔离的坏块最终能够被释放会缓冲池,继续利用。
2.根据权利要求1所述的嵌入式系统内存管理方法,其特征在于:所述步骤1还包括:
步骤11:根据各个业务内存使用大小类和数量别初始化批量内存管理索引结构;
步骤12:批量内存管理索引结构下初始化定制大小的内存块,内存块的大小可以根据实际使用需求确定,通过初始化参数传入。
3.根据权利要求2所述的嵌入式系统内存管理方法,其特征在于:所述步骤2还包括:
步骤21:根据业务使用内存大小,在内存块中划分确定大小的内存池,内存池的划分要根据业务批量申请和释放的特点来进行,尽量避免块内碎片和内存浪费。
4.根据权利要求3所述的嵌入式系统内存管理方法,其特征在于:所述步骤3还包括:
步骤31:当业务需要申请内存时,就根据业务初始化时得到的内存管理索引句柄,从内存池中划分出内存单元块返回给使用者,内存池使用队列管理这些内存单元,分为空闲和使用状态两个队列,当所有的内存单元都处于空闲状态时,所属的内存池就处于空闲状态,可以释放回所属内存块队列中,当动态内存块中所有的内存池都空闲时就释放回系统内存池中,如果是静态内存块,就处于空闲状态,等待其他业务初始化批量内存时使用。
5.根据权利要求4所述的嵌入式系统内存管理方法,其特征在于:所述步骤21中内存池分为三种状态:满队列、可用队列和空队列,根据步骤4中的内存单元使用情况使内存池处于某种状态的队列中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于安徽皖通邮电股份有限公司,未经安徽皖通邮电股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711379808.5/1.html,转载请声明来源钻瓜专利网。