[发明专利]一种嵌入式操作系统的堆内存分配管理方法和装置在审
申请号: | 202210005786.0 | 申请日: | 2022-01-04 |
公开(公告)号: | CN114328285A | 公开(公告)日: | 2022-04-12 |
发明(设计)人: | 马忠刚;李萌;王晓伟;窦维维;杨万春;赵亚城;杨晶;况德军 | 申请(专利权)人: | 北京广利核系统工程有限公司;广东核电合营有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02;G06F9/50 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 姚璐华 |
地址: | 100094 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 操作系统 内存 分配 管理 方法 装置 | ||
本申请公开了一种嵌入式操作系统的堆内存分配管理方法和装置,具体为根据收到的内存请求查找空闲链表,对从空闲链表中找到的第一个满足申请长度的空闲块进行分割并分配;当被分配的当前内存块使用结束时,通过将当前内存块与其他空闲内存块合并的方式进行内存回收。通过将回收的当前内存块与其他空闲内存块的合并,可以在有内存块被释放时不产生新的空闲内存块,从而避免大量的内存碎片对空闲堆内存空间的占用,提高了堆内存的利用率。
技术领域
本申请涉及核电仪控系统技术领域,更具体地说,涉及一种嵌入式操作系统的堆内存分配管理方法和装置。
背景技术
嵌入式操作系统(embedded operating system,EOS)的内存管理中的堆内存管理主要是进行堆内存的分配和回收,相对于用户进程内存分配方式来说,堆内存管理具有分配响应时间短、使用周期短、处理效率高、系统开销小和适用于少量多次内存请求的特点。
当前嵌入式操作系统的堆内存在不断的分配和释放过程中,会产生很多的内存碎片,所谓内存碎片是指不连续的内存空间,如图1所示,大量的内存碎片会占用大量空闲堆内存空间,造成资源浪费,导致内存利用率低。
发明内容
有鉴于此,本申请提供一种嵌入式操作系统的堆内存分配管理方法和装置,用于提高堆内存的利用率。
为了实现上述目的,现提出的方案如下:
一种嵌入式操作系统的堆内存分配管理方法,所述堆内存分配管理方法包括步骤:
根据收到的内存请求查找空闲链表,对从所述空闲链表中找到的第一个满足申请长度的空闲块进行分割并分配;
当被分配的当前内存块使用结束时,通过将所述当前内存块与其他空闲内存块合并的方式进行内存回收。
可选的,所述通过将所述当前内存块与其他空闲内存块合并的方式进行内存回收,包括步骤:
当仅在所述当前内存块之前相邻位置存在一个空闲内存块时,通过前相邻合并方式进行内存回收;
当仅在所述当前内存块之后相邻位置存在一个空闲内存块时,通过后相邻合并方式进行内存回收;
当在所述当前内存块之前和之后相邻位置各存在一个空闲内存块时,通过前后相邻合并方式进行内存回收;
当在所述当前内存块之前和之后相邻位置均无空闲内存块时,通过无相邻合并方式进行内存回收。
可选的,所述当仅在所述当前内存块之前相邻位置存在一个空闲内存块时,通过前相邻合并方式进行内存回收,包括步骤:
根据所述当前内存块的内存块大小对所述空闲内存块的表项进行修改。
可选的,所述当仅在所述当前内存块之后相邻位置存在一个空闲内存块时,通过后相邻合并方式进行内存回收,包括步骤:
在所述空闲链表中为所述当前内存块新建一个表项,所述表项的内存大小包括当前内存块的大小与所述空闲内存块的大小之和;
将所述空闲内存块的表项从所述空闲链表中移除。
可选的,所述当在所述当前内存块之前和之后相邻位置各存在一个空闲内存块时,通过前后相邻合并方式进行内存回收,包括步骤:
在所述空闲链表中所述当前内存块之前的空闲内存块的第一表项进行修改,所述第一表项的内存大小为当前内存块的大小、所述当前内存块之前空闲内存块的大小和所述当前内存块之后的空闲内存块的大小之和;
将所述当前内存块之后的空闲内存块的表项从所述空闲链表中移除。
可选的,所述当在所述当前内存块之前和之后相邻位置均无空闲内存块时,通过无相邻合并方式进行内存回收,包括步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京广利核系统工程有限公司;广东核电合营有限公司,未经北京广利核系统工程有限公司;广东核电合营有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210005786.0/2.html,转载请声明来源钻瓜专利网。