一种基于Bitmap的内存分配方法、装置、设备及介质制造方法及图纸

技术编号:39332400 阅读:15 留言:0更新日期:2023-11-12 16:07
本发明专利技术涉及数据存储技术领域,公开了一种基于Bitmap的内存分配方法、装置、设备及介质,该方法包括:将内存空间均分为多个内存块;根据内存块的空间大小,建立Bitmap数据结构,并初始化Bitmap数据结构;确定待分配数据所需的分配空间和起始地址;根据分配空间,确定所需的bit数量;基于起始地址,统计Bitmap数据结构的头部,是否存在满足所需的bit数量的连续的二进制位为0的位数;在Bitmap数据结构的头部,满足所需的bit数量的情况下,向待分配数据分配所需的分配空间。不仅提高了分配效率,较传统算法有大幅度的性能提升,同时不会产生内存碎片问题,造成空间浪费的情况。造成空间浪费的情况。造成空间浪费的情况。

【技术实现步骤摘要】
一种基于Bitmap的内存分配方法、装置、设备及介质


[0001]本专利技术涉及数据存储
,具体涉及一种基于Bitmap的内存分配方法、装置、设备及介质。

技术介绍

[0002]内存分配方法是指在应用程序执行的过程中分配或者回收存储空间的内存管理方法。内存分配是现代计算机操作系统中的一个重要功能。在某些异构平台上,设备端通常存在一块高速片上内存空间,具有较快的数据传输效率,在合理使用的情况下,可以加速数据处理速度,提高程序的整体性能。但通常此类内存存储空间有限,需要合理并且高效地分配内存,这就对于高性能内存分配算法提出了比较高的要求。
[0003]目前,采用bitmap的内存分配算法,在分配大块连续内存时,需要逐个遍历bitmap中的二进制位,来查找是否存在连续的可分配块,该过程不仅耗时,而且分配效率低。

技术实现思路

[0004]有鉴于此,本专利技术提供了一种基于Bitmap的内存分配方法、装置、设备及介质,以解决现有技术中分配效率低的问题。
[0005]第一方面,本专利技术提供了一种基于Bitmap的内存分配方法,包括:将内存空间均分为多个内存块;根据内存块的空间大小,建立Bitmap数据结构,并初始化Bitmap数据结构,Bitmap数据结构为由二进制位组成的结构,Bitmap数据结构中的每个二进制位表征内存块的分配状态;分配状态包括已分配状态与未分配状态;Bitmap数据结构中的二进制位表征处于已分配状态时,二进制位为1、Bitmap数据结构中的二进制位表征处于未分配状态时,二进制位为0;确定待分配数据所需的分配空间和起始地址;根据分配空间,确定所需的bit数量;基于起始地址,统计Bitmap数据结构的头部,是否存在满足所需的bit数量的连续的二进制位为0的位数;在Bitmap数据结构的头部,满足所需的bit数量的情况下,向待分配数据分配所需的分配空间。
[0006]采用移位运算和硬件的机器指令进行组合,利用“数头零”的方法,即可读取头部的所有零的数量,而无需逐个遍历bit,不仅提高了分配效率,而且不容易导致内存块之间出现碎片问题,造成空间浪费的情况。尤其在大内存分配和多次内存分配情况下,本实施例中提供的分配方法,较传统算法有大幅度的性能提升,同时并未产生内存碎片问题。
[0007]在一种可选的实施方式中,在Bitmap数据结构的头部不存在满足所需的bit数量的连续的二进制位为0的位数的情况下,采用移位运算,将同一二进制位的位进行偏移,直至Bitmap数据结构的头部存在满足所需的bit数量的连续的二进制位为0的位数。
[0008]可以采用移位、数零的方法统计所需的bit数量,无需逐个遍历以及增加循环次数,提高了分配效率,且避免了碎片问题。
[0009]在一种可选的实施方式中,统计Bitmap数据结构的头部,是否存在满足所需的bit数量的连续的二进制位为0的位数,包括:获取Bitmap数据结构的头部的第一个二进制位地址及预先设置的“数头零”指令;从地址开始,执行“数头零”指令,依次扫描二进制位;在扫描到第一个非零位的情况下,确定连续的二进制位为0的位数。
[0010]算法中的数值操作均使用位运算或硬件指令完成,避免了传统的数学运算,对于算法的整体性能大有益处,且提高了统计效率。
[0011]在一种可选的实施方式中,在扫描到第一个非零位的情况下,确定连续的二进制位为0的位数之后,包括:对Bitmap数据结构进行取反运算;对取反后的Bitmap数据结构,进行移位运算;对移位后的Bitmap数据结构,再次进行取反运算;对再次进行取反运算后的Bitmap数据结构,执行“数头零”指令。
[0012]用到的取反、移位、数零指令均有硬件支持,可以避免传统的数学运算,对于算法的整体性能大有益处,且分配效率高。
[0013]在一种可选的实施方式中,建立的Bitmap数据结构为两个;其中一个Bitmap数据结构用于表征起始地址,另一个Bitmap数据结构用于表征内存块的所有二进制位。
[0014]采用两个bitmap数据结构,同样大小的bitmap可以表示更大的内存块。有利于算法优化,在连续多次内存分配的时候会大大提高效率。
[0015]在一种可选的实施方式中,方法,还包括:获取待释放空间的起始地址;基于起始地址,确定待释放空间的大小;对待释放空间进行释放。
[0016]第二方面,本专利技术提供了一种基于Bitmap的内存分配装置,装置包括:划分模块,用于将内存空间均分为多个内存块;建立模块,用于根据内存块的空间大小,建立Bitmap数据结构,并初始化Bitmap数据结构,Bitmap数据结构为由二进制位组成的结构,Bitmap数据结构中的每个二进制位表征内存块的分配状态;分配状态包括已分配状态与未分配状态;Bitmap数据结构中的二进制位表征处于已分配状态时,二进制位为1、Bitmap数据结构中的二进制位表征处于未分配状态时,二进制位为0;第一确定模块,用于确定待分配数据所需的分配空间和起始地址;第二确定模块,用于根据分配空间,确定所需的bit数量;统计模块,用于基于起始地址,统计Bitmap数据结构的头部,是否存在满足所需的bit数量的连续的二进制位为0的位数;分配模块,用于在Bitmap数据结构的头部,满足所需的bit数量的情况下,向待分配数据分配所需的分配空间;在Bitmap数据结构的头部不存在满足所需的bit数量的连续
的二进制位为0的位数的情况下,采用移位运算,将同一二进制位的位进行偏移,直至Bitmap数据结构的头部存在满足所需的bit数量的连续的二进制位为0的位数。
[0017]第三方面,本专利技术提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的基于Bitmap的内存分配方法。
[0018]第四方面,本专利技术提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的基于Bitmap的内存分配方法。
附图说明
[0019]为了更清楚地说明本专利技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]图1是根据本专利技术实施例的基于Bitmap的内存分配方法的流程示意图;图2是根据本专利技术实施例的Bitmap数据结构的示意图;图3是根据本专利技术实施例的基于Bitmap的内存分配方法中部分步骤的流程示意图;图4是根据本专利技术实施例的基于Bitmap的内存分配方法中又一部分步骤的流程示意图;图5是根据本专利技术实施例的基于Bitmap的内存分配装置的结构框图;图6是本专利技术实施例的计算机设备的硬件结构示意图。
具体实施方式<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Bitmap的内存分配方法,其特征在于,所述方法包括:将内存空间均分为多个内存块;根据所述内存块的空间大小,建立Bitmap数据结构,并初始化所述Bitmap数据结构,所述Bitmap数据结构为由二进制位组成的结构,所述Bitmap数据结构中的每个所述二进制位表征所述内存块的分配状态;所述分配状态包括已分配状态与未分配状态;所述Bitmap数据结构中的所述二进制位表征处于所述已分配状态时,所述二进制位为1、所述Bitmap数据结构中的所述二进制位表征处于所述未分配状态时,所述二进制位为0;确定待分配数据所需的分配空间和起始地址;根据所述分配空间,确定所需的bit数量;基于所述起始地址,统计所述Bitmap数据结构的头部,是否存在满足所述所需的bit数量的连续的二进制位为0的位数;在所述Bitmap数据结构的头部,满足所述所需的bit数量的情况下,向所述待分配数据分配所需的分配空间;在所述Bitmap数据结构的头部不存在满足所述所需的bit数量的连续的二进制位为0的位数的情况下,采用移位运算,将同一二进制位的位进行偏移,直至所述Bitmap数据结构的头部存在满足所述所需的bit数量的连续的二进制位为0的位数。2.根据权利要求1所述的方法,其特征在于,所述统计所述Bitmap数据结构的头部,是否存在满足所述所需的bit数量的连续的二进制位为0的位数,包括:获取所述Bitmap数据结构的头部的第一个二进制位地址及预先设置的“数头零”指令;从所述地址开始,执行所述“数头零”指令,依次扫描二进制位;在扫描到第一个非零位的情况下,确定连续的二进制位为0的位数。3.根据权利要求2所述的方法,其特征在于,在所述在扫描到第一个非零位的情况下,确定连续的二进制位为0的位数之后,包括:对所述Bitmap数据结构进行取反运算;对取反后的所述Bitmap数据结构,进行移位运算;对移位后的所述Bitmap数据结构,再次进行所述取反运算;对再次进行所述取反运算后的所述Bitmap数据结构,执行所述“数头零”指令。4.根据权利要求1所述的方法,其特征在于,建立的所述Bitmap数据结构为两个;其中一个所述Bitmap数据结构用于表征所述起始地址,另一个所述Bitmap数据结构用...

【专利技术属性】
技术研发人员:褚安康刘旭
申请(专利权)人:太初无锡电子科技有限公司
类型:发明
国别省市:

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

1