存储器分配制造技术

技术编号:2843251 阅读:189 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了存储器分配。提供了一种管理数据存储器以改进对存储器分配请求的处理的方法。将存储器段根据其大小与不同的等级相关联。为每个等级定义2的幂值形式的不同的粒度大小。该粒度大小限定了与各等级相关联的段大小的范围。提供了一种多级位映射,其指示哪个等级包含空闲段以及空闲段的大小。每次当释放或分配存储器段时,更新该位映射。从而,提供了确定性的“最佳适合”方法,该方法允许在任务级别和中断级别下进行存储器段的分配和释放,并且该方法减少了存储器碎片。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及一种对分配数据存储器的存储器块的请求进行处理的方法,并且涉及一种管理数据存储器的方法。
技术介绍
在收到来自应用的请求时,操作系统使用存储器分配器来分配空闲存储器。在使用页存储器管理单元(PMMU)的硬件中,将存储器分为固定大小的存储器页。因此,分配存储器的一种简单方法是分配空闲的固定大小的存储器页。该方法的一个缺点是它不灵活,尤其是对于需要分配小存储器块和大存储器块的应用。结果,浪费了存储器。通常,应对存储器分配的这一问题有多种不同方法。一种方法被称为“首次适合(First Fit)”。该方法快,但是浪费存储器。一个示例是分配这样的存储器段,所述段的大小是最接近于且大于所请求的大小的2倍的值。例如,为满足对2049字节的请求,将导致分配4096字节。因此,浪费了2047字节。这产生了存储器碎片。在几百次或几千次的存储器分配和释放之后,在整个存储器上散布着空闲段,并且因为空闲段小且不连续,所以虽然存在足够的存储器剩余,但是很难分配足够大的段。另一种方法被称为“最佳适合(Best Fit)”。在该方法中,存储器浪费是有限的,但是段分配需要搜索所有空闲段,以选择其大小最接近于所请求的存储器块的大小的段。该方法着手解决碎片问题,但不是确定性的(deterministic)。实时操作系统需要存储器的快速分配和少的碎片。此外,应该可以在任务和中断级别下执行存储器分配和释放。在后一情况下,响应时间和确定性(determinism)都很关键。目前,传统的“首次适合”和“最佳适合”算法不满足这些要求。因此,需要一种管理存储器分配请求的改进方法。本专利技术旨在解决这一需要。
技术实现思路
根据本专利技术的一方面,提供了一种对分配数据存储器的存储器块的请求进行处理的方法,其中将数据存储器的多个段根据其大小分配到不同的等级,所述方法包括以下步骤(a)接收对存储器块进行分配的请求;(b)确定最低的所述等级,该等级包含有大小等于或大于所请求的存储器块的段;(c)在步骤(b)所确定的等级中确定大小等于或大于所请求的存储器块的空闲段的可用性;以及(d)根据步骤(c)的确定结果来分配空闲段。根据本专利技术的另一方面,提供了一种管理数据存储器的方法,该方法包括以下步骤定义所述数据存储器的多个等级;为每个等级定义不同的粒度大小(granule size);针对每个等级定义存储器段的多个不同大小的不同范围,其中每个存储器段的大小与相应等级的粒度大小相关,并且其中,可以通过对包含有大小等于或大于所请求的存储器块的段的等级进行确定,并且分配该等级中的大小等于或大于所请求的存储器块的空闲段,来处理对存储器块进行分配的请求。根据本专利技术的另一方面,提供了一种管理数据存储器的方法,所述数据存储器包括用于响应于存储器分配请求而进行分配的具有不同大小的存储器段,所述方法包括以下步骤与大小和状态(空闲、已分配)无关地创建连续的存储器段的第一双链表;以及创建具有相同大小的空闲存储器段的第二双链表。根据本专利技术的另一方面,提供了一种管理数据存储器的方法,该方法包括以下步骤将数据存储器的多个空闲段根据其大小分配到不同的等级(level);以及提供包括不同级的位映射,其中一个级(stage)的位指示所述等级中的空闲段的可用性,另一级的位指示空闲段的状态和/或大小和/或位置。具体地,该位映射的最后一级直接指示段的状态以及空闲段的大小和位置。根据本专利技术的另一方面,提供了一种管理数据存储器的方法,所述管理包括释放和分配所述数据存储器的段,所述方法包括,当释放存储器段时确定与要释放的存储器段相邻的存储器段的状态;以及将要释放的存储器段与空闲的相邻存储器段进行合并。根据本专利技术的另一方面,提供了一种计算机的操作系统,该操作系统适于执行上述方法中的任一方法。根据本专利技术的另一方面,提供了一种在计算机上运行时适于执行上述方法中的任一方法的计算机程序。根据本专利技术的另一方面,提供了一种其上存储有一组指令的存储介质,该组指令在被计算机执行时执行上述方法中的任一方法。根据本专利技术的另一方面,提供了一种被编程为执行上述方法中的任一方法的计算机系统。根据本专利技术的另一方面,提供了一种被安排用来执行上述方法中的任一方法的处理器。根据本专利技术实施例的算法提供了一种用于在任务级别和中断级别上分配并释放存储器段的确定性的“最佳适合”方法,从而减少了存储器碎片并提高了管理存储器的效率。特别地,该算法去掉了在存储器中扫描空闲段的循环,从而提供了确定性和可预测性。可以使用任何处理器来实现该算法。此外,可以使用硬件或软件来实现该算法。本专利技术旨在使浪费的内存最少。对于大于640字节的请求大小,浪费的存储器的百分比小于5%。附图说明下面参照附图描述本专利技术的示例性实施例,在附图中图1示出了数据存储器的第一等级的段大小的范围;图2示出了指示存储器段的状态的三级位映射;图3示出了确定性的“最佳适合”存储器段分配算法;图4示出了用于确定位映射索引的算法;图5示出了用于寻找位映射中指示空闲段的设置位的算法; 图6示出了在“最佳适合”存储器分配算法中所使用的数据结构;图7示出了确定性的“最佳适合”存储器段分配算法;图8示出了链接存储器段的第一双链表;以及图9分别示出了链接存储器段的第一双链表以及链接具有相同大小的空闲存储器段的第二双链表。具体实施例方式根据本专利技术的实施例,提供了一种算法,该算法的特征在于根据存储器段的大小按不同的等级分配存储器段,针对各个等级使用不同的粒度大小(2的幂),并且使用多级(multiple-stage)位映射来提高对存储器块进行分配的请求进行处理时的速度。更具体地,根据存储器段的大小按七个等级来分配存储器段。针对各个等级定义可接受的段大小的范围。具体地,针对各个等级定义粒度大小,并且将255个固定的不同的段大小定义为粒度大小的倍数。给定等级所支持的最大段大小为maxSegSize=2N=256×G其中,G是等级的粒度大小。每一等级都表示包含有多个指针的表,所述指针指向具有为该等级定义的大小的空闲存储器段的列表。因此,每个表中有多达255个指针。图1示出了为等级0定义的存储器段的大小。等级0具有32字节的粒度大小。等级0的段大小的范围是从<64字节到<8192字节。存在255个不同的段大小。表1表示各等级的粒度大小和存储器段大小的范围 表1根据等级的粒度大小和存储器段大小的范围碎片与粒度大小直接相关。粒度大小越小,碎片就越少。另一方面,粒度大小越小,最大可管理的存储器段大小就越小。因此,需要在粒度大小和最大可管理的存储器段大小之间进行均衡。因此,根据要分配的存储器块的大小来选择粒度大小。例如,如果所请求的存储器块的大小不超过4K字节,则用于等级0的16字节的粒度允许支持范围为从1字节到4K字节的255个段大小。这显著地提高了存储器的使用效率。如上所述,每个等级都与具有多达255个指针的表相关联。然而,不是扫描一等级的指针表,而是使用三级位映射,来分配空闲存储器段。从而提供了存储器分配算法的确定性的行为。该方法还显著地加速了对具有合适大小的空闲存储器段的识别。图2示出了在本专利技术实施例中所使用的示例性三级位映射。该位映射包括根位映射1(第一级)、第二级位映射2和第三级位映射3本文档来自技高网
...

【技术保护点】
一种对分配数据存储器的存储器块的请求进行处理的方法,其中将数据存储器的多个段根据其大小分配到不同的等级,该方法包括以下步骤:(a)接收分配存储器块的请求;(b)确定所述多个等级中的包含大小等于或大于所请求的存储器块的段的最低 等级;(c)在步骤(b)所确定的等级中确定大小等于或大于所请求的存储器块的空闲段的可用性;以及(d)根据步骤(c)的确定结果来分配空闲段。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:伊万布勒皮埃尔勒贝
申请(专利权)人:扎鲁纳股份有限公司
类型:发明
国别省市:FR[法国]

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

1