一种嵌入式操作系统的堆内存分配管理方法和装置制造方法及图纸

技术编号:33047333 阅读:68 留言:0更新日期:2022-04-15 09:31
本申请公开了一种嵌入式操作系统的堆内存分配管理方法和装置,具体为根据收到的内存请求查找空闲链表,对从空闲链表中找到的第一个满足申请长度的空闲块进行分割并分配;当被分配的当前内存块使用结束时,通过将当前内存块与其他空闲内存块合并的方式进行内存回收。通过将回收的当前内存块与其他空闲内存块的合并,可以在有内存块被释放时不产生新的空闲内存块,从而避免大量的内存碎片对空闲堆内存空间的占用,提高了堆内存的利用率。提高了堆内存的利用率。提高了堆内存的利用率。

【技术实现步骤摘要】
一种嵌入式操作系统的堆内存分配管理方法和装置


[0001]本申请涉及核电仪控系统
,更具体地说,涉及一种嵌入式操作系统的堆内存分配管理方法和装置。

技术介绍

[0002]嵌入式操作系统(embedded operating system,EOS)的内存管理中的堆内存管理主要是进行堆内存的分配和回收,相对于用户进程内存分配方式来说,堆内存管理具有分配响应时间短、使用周期短、处理效率高、系统开销小和适用于少量多次内存请求的特点。
[0003]当前嵌入式操作系统的堆内存在不断的分配和释放过程中,会产生很多的内存碎片,所谓内存碎片是指不连续的内存空间,如图1所示,大量的内存碎片会占用大量空闲堆内存空间,造成资源浪费,导致内存利用率低。

技术实现思路

[0004]有鉴于此,本申请提供一种嵌入式操作系统的堆内存分配管理方法和装置,用于提高堆内存的利用率。
[0005]为了实现上述目的,现提出的方案如下:
[0006]一种嵌入式操作系统的堆内存分配管理方法,所述堆内存分配管理方法包括步骤:
[0007]根据收到的内存请求查找空闲链表,对从所述空闲链表中找到的第一个满足申请长度的空闲块进行分割并分配;
[0008]当被分配的当前内存块使用结束时,通过将所述当前内存块与其他空闲内存块合并的方式进行内存回收。
[0009]可选的,所述通过将所述当前内存块与其他空闲内存块合并的方式进行内存回收,包括步骤:
[0010]当仅在所述当前内存块之前相邻位置存在一个空闲内存块时,通过前相邻合并方式进行内存回收;
[0011]当仅在所述当前内存块之后相邻位置存在一个空闲内存块时,通过后相邻合并方式进行内存回收;
[0012]当在所述当前内存块之前和之后相邻位置各存在一个空闲内存块时,通过前后相邻合并方式进行内存回收;
[0013]当在所述当前内存块之前和之后相邻位置均无空闲内存块时,通过无相邻合并方式进行内存回收。
[0014]可选的,所述当仅在所述当前内存块之前相邻位置存在一个空闲内存块时,通过前相邻合并方式进行内存回收,包括步骤:
[0015]根据所述当前内存块的内存块大小对所述空闲内存块的表项进行修改。
[0016]可选的,所述当仅在所述当前内存块之后相邻位置存在一个空闲内存块时,通过
后相邻合并方式进行内存回收,包括步骤:
[0017]在所述空闲链表中为所述当前内存块新建一个表项,所述表项的内存大小包括当前内存块的大小与所述空闲内存块的大小之和;
[0018]将所述空闲内存块的表项从所述空闲链表中移除。
[0019]可选的,所述当在所述当前内存块之前和之后相邻位置各存在一个空闲内存块时,通过前后相邻合并方式进行内存回收,包括步骤:
[0020]在所述空闲链表中所述当前内存块之前的空闲内存块的第一表项进行修改,所述第一表项的内存大小为当前内存块的大小、所述当前内存块之前空闲内存块的大小和所述当前内存块之后的空闲内存块的大小之和;
[0021]将所述当前内存块之后的空闲内存块的表项从所述空闲链表中移除。
[0022]可选的,所述当在所述当前内存块之前和之后相邻位置均无空闲内存块时,通过无相邻合并方式进行内存回收,包括步骤:
[0023]在所述空闲链表中为所述当前内存块新建一个表项。
[0024]一种嵌入式操作系统的堆内存分配管理装置,所述堆内存分配管理装置包括:
[0025]内存分配模块,用于根据收到的内存请求查找空闲链表,对从所述空闲链表中找到的第一个满足申请长度的空闲块进行分割并分配;
[0026]内存回收模块,用于当被分配的当前内存块使用结束时,通过将所述当前内存块与其他空闲内存块合并的方式进行内存回收。
[0027]可选的,所述内存回收模块包括:
[0028]第一回收单元,用于当仅在所述当前内存块之前相邻位置存在一个空闲内存块时,通过前相邻合并方式进行内存回收;
[0029]第二回收单元,用于当仅在所述当前内存块之后相邻位置存在一个空闲内存块时,通过后相邻合并方式进行内存回收;
[0030]第三回收单元,用于当在所述当前内存块之前和之后相邻位置各存在一个空闲内存块时,通过前后相邻合并方式进行内存回收;
[0031]第四回收单元,用于当在所述当前内存块之前和之后相邻位置均无空闲内存块时,通过无相邻合并方式进行内存回收。
[0032]可选的,所述第一回收单元被配置为根据所述当前内存块的内存块大小对所述空闲内存块的表项进行修改。
[0033]可选的,所述第二回收单元被配置为在所述空闲链表中为所述当前内存块新建一个表项,所述表项的内存大小包括当前内存块的大小与所述空闲内存块的大小之和,并将所述空闲内存块的表项从所述空闲链表中移除。
[0034]可选的,所述第三回收单元被配置为在所述空闲链表中所述当前内存块之前的空闲内存块的第一表项进行修改,所述第一表项的内存大小为当前内存块的大小、所述当前内存块之前空闲内存块的大小和所述当前内存块之后的空闲内存块的大小之和,并将所述当前内存块之后的空闲内存块的表项从所述空闲链表中移除。
[0035]可选的,所述第四回收单元被配置为在所述空闲链表中为所述当前内存块新建一个表项。
[0036]从上述的技术方案可以看出,本申请公开了一种嵌入式操作系统的堆内存分配管
理方法和装置,具体为根据收到的内存请求查找空闲链表,对从空闲链表中找到的第一个满足申请长度的空闲块进行分割并分配;当被分配的当前内存块使用结束时,通过将当前内存块与其他空闲内存块合并的方式进行内存回收。通过将回收的当前内存块与其他空闲内存块的合并,可以在有内存块被释放时不产生新的空闲内存块,从而避免大量的内存碎片对空闲堆内存空间的占用,提高了堆内存的利用率。
附图说明
[0037]为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0038]图1为嵌入式操作系统的堆内存的内存空间的示意图
[0039]图2为本申请实施例的一种嵌入式操作系统的堆内存分配管理方法的流程图;
[0040]图3为本申请实施例的堆内存的分配方法的流程图;
[0041]图4为本申请实施例的前相邻合并的示意图;
[0042]图5为本申请实施例的后相邻合并的示意图;
[0043]图6为本申请实施例的前后相邻合并的示意图;
[0044]图7为本申请实施例的一种嵌入式操作系统的堆内存分配管理方法的流程图。
具体实施方式
[0045]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种嵌入式操作系统的堆内存分配管理方法,其特征在于,所述堆内存分配管理方法包括步骤:根据收到的内存请求查找空闲链表,对从所述空闲链表中找到的第一个满足申请长度的空闲块进行分割并分配;当被分配的当前内存块使用结束时,通过将所述当前内存块与其他空闲内存块合并的方式进行内存回收。2.如权利要求1所述的堆内存分配管理方法,其特征在于,所述通过将所述当前内存块与其他空闲内存块合并的方式进行内存回收,包括步骤:当仅在所述当前内存块之前相邻位置存在一个空闲内存块时,通过前相邻合并方式进行内存回收;当仅在所述当前内存块之后相邻位置存在一个空闲内存块时,通过后相邻合并方式进行内存回收;当在所述当前内存块之前和之后相邻位置各存在一个空闲内存块时,通过前后相邻合并方式进行内存回收;当在所述当前内存块之前和之后相邻位置均无空闲内存块时,通过无相邻合并方式进行内存回收。3.如权利要求2所述的堆内存分配管理方法,其特征在于,所述当仅在所述当前内存块之前相邻位置存在一个空闲内存块时,通过前相邻合并方式进行内存回收,包括步骤:根据所述当前内存块的内存块大小对所述空闲内存块的表项进行修改。4.如权利要求2所述的堆内存分配管理方法,其特征在于,所述当仅在所述当前内存块之后相邻位置存在一个空闲内存块时,通过后相邻合并方式进行内存回收,包括步骤:在所述空闲链表中为所述当前内存块新建一个表项,所述表项的内存大小包括当前内存块的大小与所述空闲内存块的大小之和;将所述空闲内存块的表项从所述空闲链表中移除。5.如权利要求2所述的堆内存分配管理方法,其特征在于,所述当在所述当前内存块之前和之后相邻位置各存在一个空闲内存块时,通过前后相邻合并方式进行内存回收,包括步骤:在所述空闲链表中所述当前内存块之前的空闲内存块的第一表项进行修改,所述第一表项的内存大小为当前内存块的大小、所述当前内存块之前空闲内存块的大小和所述当前内存块之后的空闲内存块的大小之和;将所述当前内存块之后的空闲内存块的表项从所述空闲链表中移除。6.如权利要求2所述的堆内存分配管理方法,其特征在于,所述当在所述当前内存块之前和之后相...

【专利技术属性】
技术研发人员:马忠刚李萌王晓伟窦维维杨万春赵亚城杨晶况德军
申请(专利权)人:广东核电合营有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1