管理动态存储器的嵌入式系统和动态存储器管理方法技术方案

技术编号:4300738 阅读:336 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种管理动态存储器的嵌入式系统和动态存储器管理方法。一种适于各种应用程序的存储器分配请求的动态存储器管理方法可以包括如下步骤:通过使用与请求存储器分配的对象的大小相关的索引信息来预测对象是长期的第一类型对象还是短期的第二类型对象;通过使用分为多个层次等级的多个自由列表来确定堆存储器是否包括将被分配给对象的自由块;如果确定堆存储器包括自由块,则将自由块分配给对象,其中,如果预测对象是第一类型对象,则在堆存储器中沿第一方向将自由块分配给对象,如果预测对象是第二类型对象,则在堆存储器中沿第二方向将自由块分配给对象。

【技术实现步骤摘要】

各种实施例涉及一种包括存储器管理单元的嵌入式系统,更具体地讲,涉及一种 包括动态分配存储器的存储器管理单元的嵌入式系统。
技术介绍
存储器管理可以直接影响包括微处理器的嵌入式系统的性能。通常为了在微处理器中执行各种应用程序,存储器管理针对每个应用程序分配(allocate)嵌入式系统的一 部分存储器和释放(free)所述分配的一部分存储器。存储器分配操作被分为静态存储器 分配操作和动态存储器分配操作。静态存储器分配操作使用固定量的存储器。然而,在一些示例中,相对大的固定量的存储器在嵌入式系统中造成对存储器的不需要的消耗。因此,具有有限量的存储器的嵌 入式系统需要针对各种应用程序的动态存储器分配。动态存储器分配可以从未使用的存储器块的堆(heap)分配存储器。已经使用了各种算法来更有效地执行动态存储器分配。为了实现算法,自由块(free block)(响应于 存储器请求而被分配的块)搜索的速度和执行动态存储器分配的效率会是重要的。例如, 可以通过使用单个自由列表(single free list)来管理多个自由块,可以使用诸如首次适 应(first-fit)、下次适应(next-fit)、最佳适应(best-fit)等的各种存储器分配策略来 搜索单个自由列表。此外,可以通过使用分离的自由列表(segregated free list)来管理 多个自由块。在这样的情况下,可以根据关于请求存储器分配的对象的大小的信息来选择 多个自由列表中的一个自由列表,并且搜索所选择的自由列表,从而将具有适合大小的存 储块分配给对象。用于动态地分配存储器的各种分配算法没有完全满足各种应用程序的需要。更 详细地讲,各种应用程序需要不同的存储器大小和请求模式(requestpattern),并优选地 使用不同的分配算法。具体地讲,虽然有效的存储器管理要求减少存储器碎片(memory fragmentation)并改善局部属性(localproperty),但是各种分配算法有时并不满足这样 的要求。
技术实现思路
根据本专利技术构思的一方面,提供了一种管理动态存储器的方法,所述方法包括如下步骤通过使用与请求存储器分配的对象的大小相关的索引信息来预测对象是长期的第 一类型对象还是短期的第二类型对象;通过使用分为多个层次等级的多个自由列表来确定 堆存储器是否包括将被分配给对象的自由块;如果确定堆存储器包括自由块,则将自由块 分配给对象,其中,如果预测对象是第一类型对象,则在堆存储器中沿第一方向将自由块分配给对象,如果预测对象是第二类型对象,则在堆存储器中沿第二方向将自由块分配给对 象。所述多个自由列表可以被分为多个自由列表级,每个自由列表级被分为多个自由 列表组,所述多个自由列表级的大小大于所述多个自由列表组的大小,每个自由列表组被 进一步分为用于将自由块分配给第一类型对象或第二类型对象的多个自由列表类。可以通过使用包括关于每个自由列表级的对象类型的位信息的预测掩码来执行 预测对象的类型的步骤,其中,通过使用包括指示每个自由列表级是否包括可用的自由块 的位信息的第一级掩码、包括指示每个自由列表组是否包括可用的自由块的位信息的第二 级掩码、包括指示每个自由列表类是否包括可用的自由块的位信息的第三级掩码来执行确 定堆存储器是否包括自由块的步骤。所述方法还可以包括如果确定自由列表级或自由列表组不包括自由块,则通过 以下步骤来执行存储器分配,即,确定高于与对象对应的自由列表级或自由列表组的自由 列表级或自由列表组是否包括自由块,和/或确定堆存储器的分配给类型与对象的预测的 类型不同的对象的区域中是否包括自由块。所述方法还可以包括,响应于针对对象的存储器解除分配请求来针对对象解除分 配,其中,解除分配存储器的步骤包括基于关于请求解除分配的块的大小和类型的信息来 更新第一级掩码至第三级掩码的位信息;检测在存储器分配和解除分配之间执行存储器分 配的其他块的数量以确定块的寿命,并基于检测的结果来更新预测掩码。所述方法还可以包括当请求存储器分配的对象的大小超过自由块的大小时,将 所述自由块划分为多个自由块。所述方法还可以包括将用于大小小于预定大小的存储器的存储器分配请求与其 他的存储器分配请求分开。根据本专利技术构思的另一方面,提供了一种管理动态存储器的方法,所述方法包括 确定堆存储器是否包括自由块,堆存储器被虚拟地分为多个区域,自由块通过使用多个自 由列表被分配给对象,所述多个自由列表基于多个自由块的大小而被分为多个层次等级; 与堆存储器的所述多个区域的数量对应地将所述多个层次等级中的低层次等级分为多个 自由列表类,并通过使用包括关于堆存储器的所述多个区域中的最近分配的区域的信息的 至少一个状态掩码来选择一个自由列表类;如果选择的自由列表类包括可用的自由块,则 将堆存储器的对应的区域分配给对象。根据本专利技术构思的另一方面,提供了一种嵌入式系统,所述嵌入式系统响应于存 储器分配请求动态地分配存储器,所述嵌入式系统包括嵌入式处理器,控制所述嵌入式系 统的操作,并包括响应于应用程序的存储器分配请求而控制动态存储器分配的存储器管理 单元;存储器单元,在嵌入式处理器的控制下将存储器分配给请求存储器分配的对象,其 中,存储器管理单元确定存储器单元是否包括自由块,通过使用多个自由列表将自由块分 配给对象,基于多个自由块的大小将所述多个自由列表分为多个层次等级。附图说明 通过下面结合附图的详细描述,将更清楚地理解本专利技术构思的各种实施例,附图 中图1是根据本专利技术实施例的嵌入式系统的框图;图2示出根据本专利技术实施例的图1中示出的存储器单元; 图3示出根据本专利技术实施例的用于管理存储器的各种位(bit)掩码;图4A和图4B示出根据本专利技术实施例的查找表和预测掩码;图5示出根据本专利技术实施例的堆存储器中针对第一类型对象和第二类型对象而 执行的存储器分配操作;图6是示出根据本专利技术实施例的由图5中示出的嵌入式系统执行的存储器分配操 作的流程图;图7是示出根据本专利技术实施例的存储器解除分配(de-allocation)操作的流程 图;图8A示出根据本专利技术另一实施例的嵌入式系统中位掩码和自由列表组织 (organization);图8B示出根据本专利技术另一实施例的堆存储器组织;图9是示出根据本专利技术实施例的由图8A和图8B中示出的嵌入式系统执行的存储 器分配操作的流程图。具体实施例方式现在,将参照示出了一些示例实施例的附图来更充分地描述各种示例实施例。然 而,本专利技术可以以许多不同的形式来实施,并不应该被解释为限于这里阐述的示例实施例。 相反,提供这些示例实施例使得本公开是彻底和完整的,并将把本专利技术的范围充分地传达 给本领域技术人员。附图中相同的标号始终表示相同的元件,因此将省略对它们的描述。应该理解的是,虽然术语第一、第二、第三等可以在这里用来描述不同的元件、组 件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应该受这些术语限制。 这些术语仅是用来将一个元件、组件、区域、层或部分与另一区域、层或部分区分开。因此, 在不脱离本专利技术的教导的情况下,下面讨论的第一元件、组件、区域、层或部分可以被称为 第二元件、组件、区域、层或部分。这里使用的术语只是出于描述具体示例实施例的目的,而本文档来自技高网
...

【技术保护点】
一种管理动态存储器的方法,所述方法包括如下步骤:  通过使用与请求存储器分配的对象的大小相关的索引信息来预测对象是长期的第一类型对象还是短期的第二类型对象;  通过使用分为多个层次等级的多个自由列表来确定堆存储器是否包括将被分配给对象的自由块;  如果确定堆存储器包括自由块,则将自由块分配给对象,  其中,如果预测对象是第一类型对象,则在堆存储器中沿第一方向将自由块分配给对象,如果预测对象是第二类型对象,则在堆存储器中沿第二方向将自由块分配给对象。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:文卡塔拉玛克里施纳米卡金智星
申请(专利权)人:三星电子株式会社
类型:发明
国别省市:KR[韩国]

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

1