具有增强的应用元数据的存储器管理器的制造方法

文档序号:6495633阅读:166来源:国知局
具有增强的应用元数据的存储器管理器的制造方法
【专利摘要】本文描述了一种存储器管理系统,它从各应用接收描述存储器正被如何使用的信息并且允许应用主机对使用存储器的应用请求施加更多控制。该系统提供应用存储器管理应用编程接口(API),该API允许应用指定与存储器分配有关的有助于后来管理存储器的更多信息。该系统还提供以下能力:静态地和/或动态地分析传统应用以便向未被修改成与该系统一起工作的各应用给予参与更有效的存储器管理的一些能力。该系统提供应用主机改变以利用各应用所提供的信息并通过使用该信息和该应用的存储器使用中的勾连来更有效地管理存储器。由此,该系统提供用于管理存储器的新模型,它改进了应用主机行为并允许各应用更有效地使用计算资源。
【专利说明】具有增强的应用元数据的存储器管理器
【背景技术】
[0001]计算机系统中的存储器管理指的是多个应用和操作系统对存储器的使用达成一致的方式。虽然每一计算机系统具有固定量的物理随机存取存储器(RAM)或其他存储器,但操作系统可向各应用和各操作系统组件呈现表示与物理存储器不同的存储器大小的虚拟存储器。在一些情况下,虚拟存储器允许操作系统限制每一应用访问存储器的特定部分、阻止一个应用通过无意地或有意地修改另一应用的存储器来干扰该另一应用的操作。操作系统一般提供用于响应于应用和操作系统组件请求来分配并释放存储器的一个或多个功能。操作系统可向应用提供存储器池,该应用可从该池中分配存储器块。如果一应用使用或者一组应用一起使用比所安装的物理存储器的量更多的虚拟存储器,则操作系统可以在被称为分页或盘交换(即,向盘存储和从中取回存储器的各页)的过程中使用较慢的基于盘的存储来通过交换文件扩展存储器的表观大小。
[0002]除了所提供的分配和释放功能之外,操作系统对各应用如何使用存储器具有非常少的洞察。许多计算设备包含围绕存储器的特定限制。例如,移动计算设备可包括与在台式计算机系统上可用的存储器量相比小得多的存储器量(或系统可能想要解除某存储器的电力以降低能耗),从而产生对该设备的与多少应用可同时运行、每一应用可请求/消费多少存储器等等有关的限制。在特定计算系统内主存应用代码的其他计算环境也可对该环境的存储器使用施加限制或上限。诸如VMware和MICROSOFT TM Virtual PC、系统管理程序、操作系统以及其他的主机可分配到有限的资源。在所有这些情况中,有效的存储器管理变得更加值得注意。
[0003]新计算平台引入新技术或重新利用旧技术来解决各应用之间共享的存储器有限的问题。例如,移动电话操作系统可以创建每一应用的存储器快照,以使得在该应用不在前台(例如,被主动使用)时,操作系统将它关闭并将该应用的存储器的镜像储存在较慢存储上(例如,闪存或其他存储)。在该应用被选择时,操作系统将所存储的镜像重新加载到存储器并起动该应用。该应用可能甚至不知道它被关闭过。虽然这些技术是有用的,但操作系统仍然将遭受该应用对使用存储器的不透明请求的损害。当前,关于动态存储器使用作出的大多数决策是基于在运行时期间找到的信息来作出的。这样的信息的示例包括对所分配的存储器段的引用的大小和数量。这一信息随后可被用来确定哪些分配将被分页到盘,被高速缓存到高性能存储器,或被某种自动存储器管理系统释放。不幸的是,任何平台都受到可能多年的传统应用的限制,所以在与存储器管理一样宽广的区域中采用新模型是困难的。
[0004]概述
[0005]本文描述了一种存储器管理系统,它从各应用接收描述存储器被如何使用的信息并且允许应用主机对使用存储器的应用请求施加更多控制。当今,除了应用已作出了多少存储器请求和每一请求请求了多大的存储器之外,应用主机对该应用的存储器使用知之甚少。然而,应用主机不知道每一存储器分配的目的,哪些存储器分配将很快被使用,在应用主机需要更多存储器的情况下哪些存储器分配可被容易地重新创建,哪些存储器分配暂时不会被使用并且因此可被分页到盘而不影响该应用的性能,等等。不幸的是,虽然应用主机的任务是作出这些类型的决策,但应用拥有与有效作出这些决策有关的最多信息。
[0006]本存储器管理系统用若干方式克服了这些问题。首先,该系统提供应用存储器管理应用程序编程接口(API),该API允许该应用指定与存储器分配有关的有助于后来管理存储器的更多信息。该API还可向应用主机提供通知该应用何时需要存储器以及在需要时抢先释放并重新创建存储器分配而无需该应用的交互的能力。其次,该系统提供以下能力:在统计上和/或动态地分析传统应用以向未被修改成与该系统一起工作的各应用给予参与更高效的存储器管理的某能力。第三,该系统提供应用主机改变以利用各应用所提供的信息并使用该信息和该应用的存储器使用中的勾连来更高效地管理存储器。因而,本存储器管理系统提供用于管理存储器的新模型,它改进了应用主机行为并潜在地允许各应用更高效地使用计算资源。
[0007]提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的选择的概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
[0008]附图简述
[0009]图1是示出在一个实施例中的存储器管理系统的各组件的框图。
[0010]图2是示出在一个实施例中的存储器管理系统的操作环境的框图。
[0011]图3是示出在一个实施例中的软件应用内的存储器管理系统请求分配和使用存储器的处理的流程图。
[0012]图4是示出在一个实施例中的主机内的存储器管理系统接收分配和使用存储器的应用请求的处理的流程图。
[0013]图5是示出在一个实施例中的存储器管理系统分析没有被专门设计成提供存储器分配信息的应用的处理的流程图。
[0014]图6是示出在一个实施例中的存储器管理系统在统计上分析应用并提供增强的存储器信息的清单的处理的流程图。
[0015]图7是示出一个实施例中的存储器管理系统响应于检测到的存储器压力来采取与存储器有关的动作的处理的流程图。
[0016]图8是示出一个实施例中的存储器管理系统激活存储器先前已针对其被主机修改的应用的处理的流程图。
[0017]详细描述
[0018]本文描述了一种存储器管理系统,它从各应用接收描述存储器被如何使用的信息并且允许应用主机对使用存储器的应用请求施加更多控制。当今,除了应用已作出了多少存储器请求和每一请求请求了多大的存储器之外,应用主机对该应用的存储器使用知之甚少。然而,应用主机不知道每一存储器分配的目的,哪些存储器分配将很快被使用,在应用主机需要更多存储器的情况下哪些存储器分配可被容易地重新创建,哪些存储器分配暂时不会被使用并且因此可被分页到盘而不影响该应用的性能,等等。不幸的是,虽然应用主机的任务是作出这些类型的决策,但应用拥有与有效作出这些决策有关的最多信息。这一冲突当今是通过应用主机提供基本水平的功能并猜测要采取哪些动作来解决的。在许多情况下,应用主机可能恰好在应用需要存储器之前将该存储器分页到盘,或者应用主机可能花费大量努力来管理对应用几乎不重要的存储器。[0019]本存储器管理系统用本文进一步讨论的若干方式克服了这些问题。首先,该系统提供应用存储器管理应用程序编程接口(API),该API允许该应用指定与存储器分配有关的有助于后来管理存储器的更多信息。该API还可向应用主机提供通知该应用何时需要存储器以及在需要时抢先释放并重新创建存储器分配而无需该应用的交互的能力。其次,该系统提供以下能力:在统计上和/或动态地分析传统应用以向未被修改成与该系统一起工作的各应用给予参与更高效的存储器管理的某能力。第三,该系统提供内核级操作系统(或主机)改变以利用各应用所提供的信息并通过使用该信息和该应用的存储器使用中的勾连来更高效地管理存储器。因而,本存储器管理系统提供用于管理存储器的新模型,它改进了应用主机行为并潜在地允许各应用更高效地使用计算资源。如本文所描述的,应用主机可指执行应用的操作系统或另一类型的主机(例如,本身在操作系统或虚拟化子系统上运行的应用),如SILVERLIGHT TM、.NET所提供的运行时,本机Win32主机,或VMware和虚拟PC所提供的其他主机或虚拟机。以上介绍的这三个区域中的每一个在以下各节中进一步详细描述。
[0020]经修改的应用
[0021]在许多情况下,软件开发人员修改软件应用以与存储器管理系统进行交互是可能的。对于主动开发的应用,软件开发人员可选择采用存储器管理系统来获得它所提供的益处,或可被该应用在其上操作的特定平台强制采用存储器管理系统。在许多情况下,应用可能保持该应用不可能使用的存储器的分配。例如,在用户从该应用的用户界面的一部分转移到另一部分时,该应用可保持来自先前界面的信息以防万一用户重新访问该界面。当今,该存储器的需要程度在主机看来就与其他主动使用的存储器一样。存储器管理系统提供了供应用将诸如此类情形通知给主机以使得这类存储器可被降低优先级的方式。作为响应,主机可将这类存储器选为分页的良好候选或由于来自应用的添加信息而作出更高效的其它存储器管理决策。
[0022]在一些实施例中,存储器管理系统提供应用编程模型或框架,该应用编程模型或框架使存储器管理器能够作出关于优化运行时期间的存储器使用的智能决策。这可通过利用接收用于分配和填充被指定给应用请求的任何给定存储器对象的存储器分配的元数据和动作两者的应用编程模型/框架来完成。元数据提供应用想要传递给主机的描述存储器分配的性质或目的的信息,诸如存储器的优先级、正被分配的存储器的数量、从头重新创建存储器内容的容易度(例如,这些内容可以从文件加载或者可通过算法来计算)、访问频率、应用可能多久以后使用存储器,等等。用于分配和填充存储器的动作可以向主机提供足够的信息以使得能够释放存储器并且随后应应用的请求重新创建所释放的存储器。通过允许开发者指定用于填充存储器的元数据和动作,存储器管理系统能够与应用所指定的所需使用一致地优化存储器使用。
[0023]存储器管理系统提供给应用的API为应用开发者提供了通过应用框架或编程模型来指定描述对存储器分配的使用的元数据的手段。另外,该API允许应用框架规定开发者利用标准手段来通过公知的功能填充或修改存储器。这允许存储器管理系统出于性能原因不失时机地填充存储器,以便在低存储器可用性时段期间(即,在释放存储器的机会成本大于后来重新分配和重新填充存储器的成本时)释放存储器。
[0024]优化存储器使用可涵盖本领域内已知的许多技术,但将一般意味着针对性能或大小而进行优化。在性能的情况下,优化可能意味着在完成存储器分配的手段可用的情况下允许进行尚不需要的存储器分配。这在当前CPU使用率较低且应用空闲的情况下可以是合乎需要的。在某些情况下,应用分配存储器的请求可变成主机存储的笔记以供将来参考,而不在此时进行任何分配。后来,当应用通过API请求使用存储器时或者在主机确定完成该请求的合适时间时,存储器管理系统实际分配所请求的存储器。在大小的情况下,优化可能意味着减少存储器占用或基于当前分配的存储器和未来存储器需求来作出决策。
[0025]应用和主机之间的实际接口可采取本领域内的普通技术人员将会认识到的各种形式。例如,应用可以为每一种类型的分配提供分配函数并在分配请求中向主机传递针对该分配的指针或引用。当主机准备好执行分配时,主机调用所提供的分配函数并且应用使用常规存储器分配函数来创建存储器。类似地,应用可传递对其它函数的引用以使得主机能够请求释放存储器、移动存储器、将存储器内容切换至不同类型的存储,等等。相同的概念还可用于分配,当应用向操作系统请求存储器时,操作系统可基于多个因素来延迟分配。当操作系统准备好分配时,(用所分配的存储器)回调函数引用或者引发一事件(或类似机制)。该接口还可接收元数据,诸如存储器大小(其可以不同于所请求的大小)、优先级、高速缓存偏好、可分页性、如何填充存储器、对存储器的依赖或引用、是否更新存储器,等等。在一些实施例中,系统提供分配从中导出以定义每一种类型的存储器分配的存储器接口类。该类可包括用于检索应用指定分配函数的GetPointer函数或用于检索执行其它存储器处理任务的函数的其它GetX函数。另选地或另外地,应用可以按传统方式进行分配并且然后调用RegisterPointer函数,该函数向主机注册所分配的存储器并指定要与所分配的存储
器相关联的本文描述的附加信息。以下伪代码提供了应用可使用的一个存储器类的示例。
[0026]
【权利要求】
1.一种计算机实现的用于在从各应用接收存储器优先级信息的应用主机中处理存储器管理的方法,所述方法包括: 在应用主机中接收710描述多个存储器分配请求以及一个或多个应用如何使用存储器分配的信息; 检测720指示要采取动作以在所述主机上继续高效地运行各应用的需求的至少一个存储器状况; 枚举730接收到的分配请求以确定要对其采取动作的分配; 选择740所枚举的分配中的要对其采取动作的一个或多个分配;以及 对所选分配执行750动作以减轻所检测到的存储器状况, 其中前述步骤由至少一个处理器来执行。
2.如权利要求1所述的方法,其特征在于,接收描述存储器分配请求的信息包括访问在所述主机从各应用接收到各分配时所存储的这些分配的列表或其他数据结构。
3.如权利要求1所述的方法,其特征在于,接收描述存储器分配请求的信息包括访问帮助所述主机确定哪些分配可被释放、分页、或以其他方式处理以高效地管理可用存储器的优先级或其他信息。
4.如权利要求1所述的方法,其特征在于,检测所述存储器状况包括确定一应用正用完了执行所需的存储器并从其他正在运行的应用取得存储器来给予该应用。
5.如权利要求1所述的方法,其特征在于,检测所述存储器状况包括确定即将到来的应用存储器请求不能被满足并且预先使得更多存储器可用以在所述主机接收到所述请求之时满足所述应用的请求。
6.如权利要求1所述的方法,其特征在于,枚举所述请求包括遍历分配的列表或其他数据结构以确定在需要被释放的情况下能被容易地恢复的分配。
7.如权利要求1所述的方法,其特征在于,枚举所述请求包括遍历分配的列表或其他数据结构以确定应用不可能很快使用的分配。
8.如权利要求1所述的方法,其特征在于,选择分配包括基于接收到的描述请求分配的应用如何使用所述分配的信息来选择分配。
9.如权利要求1所述的方法,其特征在于,选择分配包括选择多个分配来操作特定总大小的存储器并选择加起来达到或超过所述大小的分配。
10.如权利要求1所述的方法,其特征在于,执行所述动作包括释放先前分配的存储器或者将存储器内容交换到盘或其他存储。
11.如权利要求1所述的方法,其特征在于,执行所述动作包括向所述应用通知所述动作,使得所述应用能修改依赖于所述分配的行为。
12.一种用于使用从在主机上运行的应用接收到的分配元数据来在所述主机内高效地管理存储器的计算机系统,所述系统包括: 被配置成执行包含在以下组件内的软件指令的处理器和存储器; 提供一个或多个应用和所述主机之间的通信接口以协商对存储器分配的使用的应用接口组件125 ; 包括应用在其中运行的环境并提供对所述系统提供的存储器管理的访问的主机组件
.140 ;从各应用接收分配存储器的请求的请求接收组件145,其中每一请求包括向所述主机提供描述所述应用如何使用所分配的存储器的信息的元数据; 存储接收到的请求及相关联的元数据信息以供后续在存储器管理决策制定期间使用的请求存储组件150 ; 执行分配存储器的实际动作以满足接收到的一个或多个应用分配请求的分配组件155 ;以及 执行管理设备上的存储器的动作并访问先前存储的接收到的请求信息以确定将受到所执行动作影响的一个或多个合适的存储器分配的存储器动作组件160。
13.如权利要求12所述的系统,其特征在于,所述应用接口组件包括所述主机提供给所述应用的应用编程接口(API),所述应用可通过所述API来提供描述所述分配的信息以允许所述主机代表所述应用来管理存储器。
14.如权利要求12所述的系统,其特征在于,所述应用接口组件静态地或动态地分析应用二进制模块以向所述主机提供存储器使用行为信息。
15.如权利要求12所述的系统,其特征在于,所述请求接收组件、所述请求存储组件、所述分配组件、以及所述存储器动作组件组成了所述主机能访问以管理应用存储器的存储器管理器的各组件。
【文档编号】G06F9/44GK103620548SQ201280030154
【公开日】2014年3月5日 申请日期:2012年6月18日 优先权日:2011年6月20日
【发明者】S·马耶, M·豪尔, J·劳瑞斯, J·C·斯帕德林 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1