管理计算机存储器的方法技术

技术编号:2884088 阅读:124 留言:0更新日期:2012-04-11 18:40
一种根据本发明专利技术的用于管理计算机存储器的方法包括保持存储器的多组空块,其中根据其尺寸将空块加至组中。响应于对请求尺寸的块的请求而在一组块内搜索其尺寸至少与请求尺寸一般大但小于请求尺寸加上第二阈值的空块。如果找到空块则将整个空块分配。(*该技术在2021年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及计算机存储方法和系统,更具体地涉及用于稳固动态存储分配的方法和系统。许多计算机需要动态地分配存储器。操作系统使用动态存储分配为执行程序而分配存储器。动态存储分配的另一个例子可以包括用于存储网络数据的网络服务器。在很多情况下,在发出请求之前,所请求的存储尺寸是不知道的。动态分配的存储块的生命周期也是不知道的。已经花费了相当多的精力来开发主存储器的有效动态存储分配算法。但对盘上的有效动态存储分配算法的开发所花费精力却少得多。有多种理由说明盘上的有效动态存储分配的重要性。在很多情况下,主要的是具有能在时间上持久的即使在关机后也持久的数据。盘存储器提供持久存储。盘存储器也提供容错存储;当系统垮台以致主存储器内容丢失之后,经常仍能保持存于盘上的信息。盘存储器的另一个优点是有可能以比主存储器更合理的价格提供更多的盘存储器。因此它可用于存储主存储器内存放不下的信息。参照附图说明图1,最初适配系统分配找到的第一块足够大的能满足存储请求的存储块(的全部或一部分)。对于“7”的存储请求,最初适配返回B1,因为这是遇到的能够满足请求的第一块。最佳适配系统分配足够大以能满足存储请求的最小存储块(的全部或一部分)。图1中,由于“7”在块B3(它的容量为8)中适配得最佳,因此返回B3。参照图2,在二进制伙伴系统中,块尺寸为2的幂(例如4和4,8和8等)。许多动态存储分配器(DSA)保持一个或多个空块表。这类表称为空表,例如空块表。不同尺寸的块有不同的空表。也存在用于分配其他尺寸的块的伙伴系统。在1996年10月在Proceedings of IEEEFrontiers′96上刊登的Arun Iyengar所著的名为“动态存储分配算法的可改变规模性”的文章以及本说明书所附参考文献中都很好地回顾了动态存储分配的现有技术。动态存储分配器(DSA)能够使用不同方法来汇并邻近空块。一个方案是使用立即汇并,其中在释放块时立即将该释放块与邻近空块汇并,如图3所示。在图3中,在每块中都标明块尺寸。正的尺寸值标明空块,而负的尺寸值标明分配块。参照图4,另一个方案包括延迟汇并。当使用延迟汇并时,在释放后邻近的空块并不自动地合并。相反,到一定时候(例如当无法分配一个足够大能满足请求的块时),DSA将扫描存储设备中的各块以及如图4中所示地将邻近块合并。存储碎块是DSA浪费的存储区。内部存储碎块是当使用大于所请求尺寸的空块来满足请求时(例如使用尺寸为32的块来满足对尺寸为25的块的请求时)损失的存储区。当空块与分配块交织时出现外部存储碎块。在这种情况下,即使有大于b字节的空间也无法满足对b字节的分配请求,因为最大的连续空块小于b字节。以上引用的“动态存储分配算法的可改变规模性”文章中所描述的多空表适配Ⅰ(MFLFⅠ)使用多个按照尺寸组织的空表。小块的空表称为快表。大块的空表称为杂项表。当保持单个杂项表时,MFLF Ⅰ退化为称为快适配的存储分配系统。参照图5,其中显示快适配技术。在此系统中,尺寸为16以下的块放在快表中;可以改变快表数量以便针对不同请求分布将性能优化。在此例中,当2≤s≤16(2是最小块尺寸)时,通过检查尺寸为s的快表来分配尺寸为s的块。如此表不空,则表中第一块可用于满足请求。注意到可能有对应于单元尺寸的倍数的块尺寸的快表。例如,在图2中,单元尺寸是1。如果单元尺寸是1000,则可以使用块尺寸为1000、2000、3000、…、16000的快表(总共有16个快表)。MFLFⅠ使用延迟汇并。存储区分为工作存储区12和尾区14,如图5中所示。工作存储区12包括分配块和空表中的块。尾区14包括存储区一端的未分配存储区中的连续块。最初,在分配任何块之前,尾区包括所有可分配存储区,及空表是空的。空表包括快表和杂项表,其中杂项表用于较大存储块。块13包括一个尺寸(由块13中的数目所标示)。当检查一个或多个空表后发现无法满足请求时,可从尾区14中分配从而满足请求。尾区指针(tailptr.)标示尾区14的始端。当释放已分配块时即将它填放入空表。为满足对于快表无法满足的过大块的请求,快适配对杂项表进行最初适配搜索。搜索大块可能需要多条指令。为减少此开销,MFLFⅠ可以使用多个杂项表而不是如快适配中那样只用一个表,如图6中所示。在图6中,尺寸为17-25的块13有一个杂项表,尺寸为26-40的块13有另一个杂项表,而尺寸为41-60的块则还有一个杂项表。可用不同准则来满足请求,包括图7A和7B中所示的一个准则来使用MFLFⅠ分配“84”。当分配84的请求得到满足时,图7A显示存储区的“以前”简况,而图7B显示“以后”简况。在图7A和7B中,系统将表L2中的第一块进行分配以便满足请求,它划分尺寸为“90”的块并且将多余的尺寸“6”送回至空表。系统检查L2而不是L1,因为L2所允许的最小块的尺寸为89。因此,不需要在L2的第一块之外再进行搜索来满足对其尺寸小于或等于89的请求。虽然以上所述技术对于许多应用场合已经够用,但直接将主存储器的动态存储分配算法使用于盘系统中时往往会导致不良性能,因为访问盘和写盘的等待时间比主存储器大得多。因此,需要盘存储器的动态存储分配方法,用于减少访问盘或写盘的次数。还需要存储分配和释放方法,用于提供更有效的存储和更快的访问时间。一种根据本专利技术的用于管理计算机存储器的方法包括保持多组存储区空块,其中根据空块尺寸将其加至一组中。响应于对所请求尺寸的块的请求来搜索一组空块,以便寻找至少和所请求尺寸一般大,但又小于所请求尺寸加上一个阈值的空块。如果找到该空块,则将该块整个地分配。在另一个方法中,保持多组空块的步骤可能包括在盘上或主存储器内保持多组空块的步骤。可能包括如果找不到空块但能找到至少一块至少与所请求尺寸相同的一块则可以划分至少一块至少与所请求尺寸相同的一块的步骤及使用划分步骤所得第二块来满足请求的步骤。这划分的至少一块可能是大于所请求尺寸的块中的最小的找到的块。该多个组可能包括一组最大块组以及第一阈值可能大于最大块组的最小允许块尺寸,以及可以包括搜索最大块组以便满足请求的步骤。搜索步骤可以包括搜索包括一个表的组的步骤,该表包括该组的存储块分配信息。该方法还可包括动态地调整第一和第二阈值中的至少一个以便调整性能的步骤。在又一个方法中,该方法可能包括以下步骤保持存储区的连续块,根据所请求尺寸来选择空块组,对空块组不空的情况作出响应而分配位于该组的第一块中的至少一部分,以及对该组是空的情况作出响应而满足对存储区中连续块的请求。该方法可能包括以下步骤保持指向第一指针位置的连续块的指针,对给定尺寸存储区的请求作出响应而按照给定尺寸将指针增量至第二指针位置以及满足使用在第一指针位置开始的连续块的一部分的请求。该方法还可包括根据分配块的尺寸来将分配块释放至新的空块组。用于管理连续持久存储区的块的方法包括以下步骤在主存储器内保持用于确定第一存储块内的第一空字节的第一指针,为持久存储区中的多块保持各首部,其中这些首部包括至少一个代码字节,以及通过为第二块设置至少一个代码字节以便标示该第二块已不再是第一块的一部分和在主存储器内更新第一指针从而自第一块中分配第二块。换言之,可能包括将块b增加至第一块的步骤,该增加步骤包括本文档来自技高网...

【技术保护点】
一种用于管理计算机存储器的方法,包括以下步骤: 保持存储器的多组空块,其中根据空块尺寸将空块加至组中; 响应于对其请求尺寸超过第一阈值的空块的请求而在一组内搜索其尺寸至少与请求尺寸一般大但小于请求尺寸加上第二阈值的空块;及 如果找到空块则将整个空块分配。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:詹姆斯RH查林杰阿鲁K利恩格尔
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

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

1