一种计算机内存管理方法、装置、设备及存储介质制造方法及图纸

技术编号:29702852 阅读:12 留言:0更新日期:2021-08-17 14:31
本发明专利技术提供了一种计算机内存管理方法、装置、设备及存储介质,所述方法包括:配置各类型的内存管理链表,每种类型的内存管理链表包括若干梯级递增的内存梯级链表,梯级高的内存梯级链表存放的空闲内存块大;根据调用的系统堆接口的类型和所需内存大小从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方;基于调用的系统堆接口的类型和所释放内存大小把所释放内存加入到相应类型的内存管理链表的梯级匹配的内存梯级链表中;对各类型的内存管理链表中物理地址相邻空闲的内存块进行归并。所述方法、装置、设备及存储介质实现了计算机内存的无损管理,提高了计算机内存使用效率。

【技术实现步骤摘要】
一种计算机内存管理方法、装置、设备及存储介质
本专利技术涉及计算机操作系统领域,尤其涉及一种计算机内存管理方法、装置、设备及存储介质领域。
技术介绍
当前嵌入式操作系统的内核堆由于存在不断的分配和释放,导致堆本身可能存在很多内存碎片,这些碎片不连续,如图1A中示出的空闲内存碎片分布。这些空闲碎片不能满足分配更大空间的需求,从而导致堆空间不能被充分使用。分配的堆空间本身带有堆管理数据结构,实际使用的空间总是小于分配的空间,并不是全空间使用。如图1B示出的分配的内存空间结构图,分配的堆空间的起始地址包括堆管理数据结构的数据。
技术实现思路
有鉴于此,本专利技术实施例提供了一种计算机内存管理方法、装置、设备及存储介质,通过梯级式的内存管理链表,对空闲内存块实现按其大小匹配的梯级存放,仅根据所需内存大小分配内存,并对物理地址相邻的空闲内存块进行归并,减少内存碎片,从而实现无损内存管理。第一方面,本专利技术实施例提供了一种计算机内存管理方法,包括:配置各类型的内存管理链表,每种类型的内存管理链表包括若干梯级顺序增加的内存梯级链表,内存梯级链表的梯级越高,其存放的空闲内存块越大;根据调用的系统堆接口的类型和所需内存大小,从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方;基于系统堆使用方类型和所释放内存大小把所释放内存加入到相应类型的内存管理链表的梯级匹配的内存梯级链表中。由上,基于梯级分类的内存梯级链表快速查找满足所需内存大小的最小空闲内存块,且从其中只分配所需内存大小的空闲内存块,并把多余的空间存回对应梯级的内存梯级链表;把释放内存存入相应的内存梯级链表从而实现无损内存分配。在第一方面的一种计算机内存管理方法的一种可能的实施方式中,所述配置各类型的内存管理链表包括:配置所述内存管理链表,所述内存管理链表的类型包括内核字节堆、用户字节堆和页堆,其中,内核字节堆用于计算机内核的内存分配和释放,用户字节堆用于用户程序的内存分配和释放,页堆既用于计算机内核的内存分配和释放,还用于用户程序的内存分配和释放;配置所述内存梯级链表,各类型的内存管理链表包括若干梯级的相应类型的内存梯级链表,页堆内存梯级链表的最小梯级大于内核字节堆内存梯级链表的最大梯级或用户字节堆内存梯级链表的最大梯级;在一些实施例中,所述内核字节堆内存梯级链表中存放的空闲内存块为基础内核空间的整数倍,所述基础内核空间为所述内核字节堆内存梯级链表中运行存放的最小空闲内存块,所述用户字节堆内存梯级链表中存放的空闲内存块为基础用户空间的整数倍,所述基础用户空间为所述用户字节堆内存梯级链表中允许存放的最小空闲内存块,所述页堆内存梯级链表中存放的空闲内存块为基础页堆空间的整数倍,所述基础页堆空间为所述页堆内存梯级链表中允许存放的最小空闲内存块。由上,各梯级内核字节堆内存梯级链表和各梯级页堆内存梯级链表对应的内存空间范围依次增大,从而在为计算机内核分配内存时减少碎片产生;各梯级用户字节堆内存梯级链表和各梯级页堆内存梯级链表对应的内存空间范围依次增大,从而在为用户程序分配内存时减少碎片产生。在第一方面的一种计算机内存管理方法的一种可能的实施方式中,所述根据调用的系统堆接口的类型和所需内存大小,从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方,包括:基于系统堆使用方确定相应类型的内存梯级链表,并从中基于所需内存大小确定对应梯级的内存梯级链表;从所述对应梯级的内存梯级链表开始,基于梯级递增方向在相应类型的内存管理链表中查找满足需求的第一空闲内存块;基于所需内存大小,从第一空闲内存块中选择第二空闲内存块分配给系统堆调用方,第二空闲内存块为与所需内存大小梯级匹配的内存块。其中,在一些实施例中,当系统堆使用方为计算机内核时,所述梯级递增方向包括:从内核字节堆内存梯级链表的低梯级到高梯级,从内核字节堆内存梯级链表到页堆存梯级链表,从页堆存梯级链表的低梯级到高梯级。在一些实施例中,当系统堆使用方为用户程序时,所述梯级递增方向包括:从用户字节堆内存梯级链表的低梯级到高梯级,从用户字节堆内存梯级链表到页堆存梯级链表,从页堆存梯级链表的低梯级到高梯级。在一些实施例中,所述基于所需内存大小确定对应梯级的内存梯级链表,包括:当所需内存大小大于或等于基础页堆空间时,对所需内存除以所述基础页堆空间且向上取整,并以此确定为所对应梯级的页堆内存梯级链表的梯级;当所需内存大小小于基础页堆空间且调用的系统堆接口类型为内核字节堆分配接口时,对所需内存除以基础内核空间且向上取整,并以此确定为所对应梯级的内核字节堆内存梯级链表的梯级;当所需内存大小小于基础页堆空间且调用的系统堆接口类型为用户字节堆分配接口时,对所需内存除以基础用户空间且向上取整,并以此确定为所对应梯级的用户字节堆内存梯级链表的梯级。由上,基于所需内存大小按照梯级递增方向顺序查找满足所需内存需求的空闲内存块,从而查找满足所需内存需求的最小空闲内存块,减少内存碎片的产生。仅根据系统堆使用方所需内存大小分配内存,不分配额外内存进行管理,提高内存使用效率。在第一方面的一种计算机内存管理方法的一种可能的实施方式中,所述从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方,还包括:当调用的系统堆接口类型为内核字节堆分配接口时,所分配的第二空闲内存块的空间不包括堆管理数据结构的大小。由上,当调用的系统堆接口类型为内核字节堆分配接口时,无论直接通过内核字节堆内存管理链变分配所述第二空闲内存块时,或是再调用也堆分配接口通过页堆分类内存管理链变分配所述第二空闲内存块时,所分配的第二空闲内存块的空间不包括堆管理数据结构的大小,从而实现无损分配,进一步提高内存使用效率。在第一方面的一种计算机内存管理方法的一种可能的实施方式中,基于系统堆使用方类型和所释放内存大小把所释放内存加入到相应类型的内存管理链表的梯级匹配的内存梯级链表中时,当所释放内存大于或等于基础页堆空间时,对所释放内存除以所述基础页堆空间且向上取整,并以此确定为所匹配的页堆内存梯级链表的梯级;当所释放内存小于基础页堆空间且系统堆使用方为计算机内核时,对所释放内存除以基础内核空间且向上取整,并以此确定为所匹配的内核字节堆内存梯级链表的梯级;当所释放内存小于基础页堆空间且系统堆使用方为用户程序时,对所释放内存除以基础用户空间且向上取整,并以此确定为所匹配的用户字节堆内存梯级链表的梯级。由上,基于所释放内存大小确定相应类型内存管理链表的梯级,从而把所释放内存准确存入相应类型的所匹配的内存梯级链表中。在第一方面的一种计算机内存管理方法的一种可能的实施方式中,所述根据调用的系统堆接口的类型和所需内存大小,从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方,还包括:分配完第二空闲内存块后,当第一空闲内存块中还存在剩余内存块时,基于所述剩余内存块的空间大小,把所述剩余内存块加入到梯级匹配的对应类型的内存梯级链表里。由本文档来自技高网...

【技术保护点】
1.一种计算机内存管理方法,其特征在于,包括:/n配置系统堆各类型的内存管理链表,每种类型的内存管理链表包括若干梯级的相应类型的内存梯级链表,内存梯级链表的梯级越高,其存放的空闲内存块越大;/n根据调用的系统堆接口的类型和所需内存大小,从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方;/n基于系统堆使用方的类型和所释放内存大小把所释放内存加入到相应类型的内存管理链表的梯级匹配的内存梯级链表中。/n

【技术特征摘要】
1.一种计算机内存管理方法,其特征在于,包括:
配置系统堆各类型的内存管理链表,每种类型的内存管理链表包括若干梯级的相应类型的内存梯级链表,内存梯级链表的梯级越高,其存放的空闲内存块越大;
根据调用的系统堆接口的类型和所需内存大小,从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方;
基于系统堆使用方的类型和所释放内存大小把所释放内存加入到相应类型的内存管理链表的梯级匹配的内存梯级链表中。


2.根据权利要求1所述方法,其特征在于,所述内存管理链表的类型包括内核字节堆、用户字节堆和页堆,其中,页堆内存梯级链表的最小梯级大于内核字节堆内存梯级链表的最大梯级或用户字节堆内存梯级链表的最大梯级。


3.根据权利要求2所述方法,其特征在于,所述根据调用的系统堆接口的类型和所需内存大小,从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方,包括:
根据调用的系统堆接口的类型确定相应类型的内存梯级链表,并从中基于所需内存大小确定对应梯级的内存梯级链表;
从所述对应梯级的内存梯级链表开始,基于梯级递增方向在相应类型的内存管理链表中查找满足需求的第一空闲内存块;
基于所需内存大小,从第一空闲内存块中选择第二空闲内存块分配给系统堆调用方,第二空闲内存块为与所需内存大小梯级匹配的内存块。


4.根据权利要求3所述方法,其特征在于,所述根据调用的系统堆接口的类型和所需内存大小,从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方,还包括:
分配完第二空闲内存块后,当第一空闲内存块中还存在剩余内存块时,基于所述剩余内存块的空间大小,把所述剩余内存块加入到梯级匹配的对应类型的内存梯级链表里。


5.根据权利要求2所述方法,其特征在于,还包括:
把内核字节堆内存管理链表中物理地址相邻的空闲内存块进行归并,把归并后的空闲内存块存入到梯级匹配的内核字节堆内存管理链表或页堆内存管理链表中;
把页堆内存管理链表中物理地址相邻空闲的内存块进行归并,把归并后的空闲内存块存入到梯级匹配的页堆内存管理链表中。


6.根据权利要求3或4所述方法,其特征在于,当调用的系统堆接口类型为用户字节堆分配接口时,所述根据调用的系统堆接口的类型和所需内存大小,从相应类型的内存管理链表的内存梯级链表中按照梯级查找并分配大小匹配的内存块给系统堆调用方,还包括:
所需内存大小包括堆管理数据结构的空间大小和用户程序需求内存大小;
在第二空闲内存块的起始地址存入所述堆管理数据结构;其中,所述堆管理数据结构至少包括第二空闲内存块的大小和起始地址。
...

【专利技术属性】
技术研发人员:李燕
申请(专利权)人:科东广州软件科技有限公司
类型:发明
国别省市:广东;44

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

1