一种基于Linux环境的内存防崩溃方法及装置制造方法及图纸

技术编号:34449879 阅读:13 留言:0更新日期:2022-08-06 16:49
本申请提供了基于Linux环境的内存防崩溃方法及装置,该方法包括:获取每个内存块的首地址、内存块的大小以及内存块的属性;在用户申请到内存块时,构建用户信息与内存块的对应关系,并存储申请到的内存块的首地址、内存块的大小以及内存块的属性;在用户释放内存块时,根据构建的用户信息与内存块的对应关系,验证存储的内存块的首地址、内存块的大小以及内存块的属性与释放的内存块的首地址、内存块的大小以及内存块的属性是否匹配;在匹配时,允许释放。在上述技术方案中,通过对用户以及内存块建立对应关系,并通过对内存块的首地址、大小以及属性进行验证,从而保证了内存块在释放时的准确性,降低了Mempool使用者的编程负担。程负担。程负担。

【技术实现步骤摘要】
一种基于Linux环境的内存防崩溃方法及装置


[0001]本说明书一个或多个实施例涉及汽车
,尤其涉及一种基于Linux环境的内存防崩溃方法及装置。

技术介绍

[0002]Linux的kernel开发工作,要求工程师必须在KernelSpace中进行。Kernel Space相较于UserSpace的差别在于,Kernel程序和操作系统处于同一个空间和时间的维度,而不是像应用程序一样互相之间被严格的进行时空隔离。所以一旦Kernel中的程序有缺陷,导致的将是系统性的错误,严重的可能导致结果错误或者系统崩溃。
[0003]Linux Kernel目前更新到5.17版本,在包括此版本之前的所有发行版本中,为了能够确保程序申请到内存,提供了一种方法,即Mempool技术。
[0004]该技术基本思路是,为程序预留出指定数量的固定大小的内存块,而不是随用随申请;以便于防止申请不到内存的情况发生。
[0005]Mempool技术为编程者提供了一个基本的预分配内存机制,也一定程度的避免了内存碎片的大量产生;然而,该机制也同时存在着一定的使用风险。
[0006]Mempool的泄漏、释放错误和内存引用错误,通常是引起kernel崩溃的几个重要原因,也是发生频率较高的几个原因。
[0007]目前发布的Linux代码中,编程开发者需要自己来人为的维护、验证、保证Mempool的正确使用;从一定程度上,也增加了Mempool使用者的编程负担。

技术实现思路

[0008]有鉴于此,本说明书一个或多个实施例的目的在于提出一种基于Linux环境的内存防崩溃方法及基于Linux环境的内存防崩溃装置,提高Linux环境的内存的使用效果。
[0009]第一方面,提供了一种基于Linux环境的内存防崩溃方法,该基于Linux环境的内存防崩溃方法包括以下步骤:获取每个内存块的首地址、内存块的大小以及内存块的属性;在用户申请到内存块时,构建用户信息与内存块的对应关系,并存储申请到的内存块的首地址、内存块的大小以及内存块的属性;在用户释放内存块时,根据构建的用户信息与内存块的对应关系,验证所述存储的内存块的首地址、内存块的大小以及内存块的属性与释放的内存块的首地址、内存块的大小以及内存块的属性是否匹配;在匹配时,允许释放。在上述技术方案中,通过对用户以及内存块建立对应关系,并通过对内存块的首地址、大小以及属性进行验证,从而保证了内存块在释放时的准确性,降低了Mempool使用者的编程负担。
[0010]在一个具体的可实施方案中,所述内存块的属性包括随机指纹和是否被分配的标记。
[0011]在一个具体的可实施方案中,所述方法还包括根据内存块的首地址、内存块的大小确定所述内存块的随机指纹。
[0012]在一个具体的可实施方案中,所述方法还包括在用户申请到内存块前查询可用的
内存块;且在查询的内存块少于需求的内存块时,停止分配内存块。
[0013]在一个具体的可实施方案中,所述方法还包括:构建内存池,在构建内存池时,确定每个内存块的首地址、内存块的大小以及内存块的属性。
[0014]在一个具体的可实施方案中,所述方法还包括:在用户释放内存块后更新所述内存块的属性。
[0015]在一个具体的可实施方案中,所述方法还包括销毁所述内存池;且在销毁所述内存池时,查询所有内存块是否被分配;若所有内存块均未分配时,则销毁所述内存池。
[0016]第二方面,提供了一种基于Linux环境的内存防崩溃装置,该装置包括:
[0017]信息采集模块,用于记录内存池中已分配的内存块;以及获取每个内存块的首地址、内存块的大小以及内存块的属性;
[0018]数据处理模块,用于在用户申请到内存块时,构建用户信息与内存块的对应关系,并存储申请到的内存块的首地址、内存块的大小以及内存块的属性;在用户释放内存块时,根据构建的用户信息与内存块的对应关系,验证所述存储的内存块的首地址、内存块的大小以及内存块的属性与释放的内存块的首地址、内存块的大小以及内存块的属性是否匹配;在匹配时,允许释放。
[0019]在上述技术方案中,通过对用户以及内存块建立对应关系,并通过对内存块的首地址、大小以及属性进行验证,从而保证了内存块在释放时的准确性,降低了Mempool使用者的编程负担。
[0020]在一个具体的可实施方案中,所述内存块的属性包括随机指纹和是否被分配的标记。
[0021]在一个具体的可实施方案中,所述数据处理模块还用于根据内存块的首地址、内存块的大小确定所述内存块的随机指纹。
[0022]在一个具体的可实施方案中,所述数据处理模块还用于在用户申请到内存块前查询可用的内存块;且在查询的内存块少于需求的内存块时,停止分配内存块。
[0023]在一个具体的可实施方案中,所述数据处理模块还用于构建内存池,在构建内存池时,确定每个内存块的首地址、内存块的大小以及内存块的属性。
[0024]第三方面,提供了一种汽车,该汽车包括车体以及设置在所述车体内的上述任一项所述的基于Linux环境的内存防崩溃装置。
[0025]在上述技术方案中,通过对用户以及内存块建立对应关系,并通过对内存块的首地址、大小以及属性进行验证,从而保证了内存块在释放时的准确性,降低了Mempool使用者的编程负担。
[0026]第四方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现执行第一方面以及第一方面中任意一种可能的设计的方法。
[0027]第五方面,提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行第一方面以及第一方面中任意一种可能的设计的方法。
[0028]第六方面,还提供一种计算机程序产品,包括指令,当其在计算机上运行时,使得计算机执行本申请第一方面以及第一方面中任意一种可能的设计的方法。
[0029]另外,第四方面至第六方面中任一种可能设计方式所带来的技术效果可参见方法部分中不同设计方式带来的效果,在此不再赘述。
附图说明
[0030]为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0031]图1为本申请实施例提供的基于Linux环境的内存防崩溃方法的流程图;
[0032]图2为本申请实施例提供的构建内存池的方法的流程图;
[0033]图3为本申请实施例提供的内存块的查询流程图;
[0034]图4为本申请实施例提供的内存块的申请流程图;
[0035]图5为本申请实施例提供的释放内存块的流程图;
[0036]图本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Linux环境的内存防崩溃方法,其特征在于,包括以下步骤:获取每个内存块的首地址、内存块的大小以及内存块的属性;在用户申请到内存块时,构建用户信息与内存块的对应关系,并存储申请到的内存块的首地址、内存块的大小以及内存块的属性;在用户释放内存块时,根据构建的用户信息与内存块的对应关系,验证所述存储的内存块的首地址、内存块的大小以及内存块的属性与释放的内存块的首地址、内存块的大小以及内存块的属性是否匹配;在匹配时,允许释放。2.根据权利要求1所述的基于Linux环境的内存防崩溃方法,其特征在于,所述内存块的属性包括随机指纹和是否被分配的标记。3.根据权利要求2所述的基于Linux环境的内存防崩溃方法,其特征在于,所述方法还包括根据内存块的首地址、内存块的大小确定所述内存块的随机指纹。4.根据权利要求1~3任一项所述的基于Linux环境的内存防崩溃方法,其特征在于,所述方法还包括在用户申请到内存块前查询可用的内存块;且在查询的内存块少于需求的内存块时,停止分配内存块。5.根据权利要求4所述的基于Linux环境的内存防崩溃方法,其特征在于,所述方法还包括:构建内存池,在构建内存池时,确定每个内存块的首地址、内存块的大小以及内存块的属性。6.根据权利要求5所述的基于Linux环境的内存防崩溃方法,其特征在于,所述方法还包括:在用户释放内存块后更新所述内存块的属性。7.根据权利要求6所述的基于Linux环境的内存防崩溃方法,其特征在于,所述方法还包括销毁所述内存池;且在销毁所述内存池时,查询所有内存块是否被分配;若所有内存块均未分配时,则销毁所述内存池。8.一种基于Linux环境的内存防崩溃装置,其特征在于,包括:信息采集模块,用于记录内存池中已分配的内存块;以及获取每个内存块的首地址、内存块的...

【专利技术属性】
技术研发人员:公维学
申请(专利权)人:中国第一汽车股份有限公司
类型:发明
国别省市:

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

1