当前位置: 首页 > 专利查询>微软公司专利>正文

选择性地使用缓解来减少错误的存储器管理技术制造技术

技术编号:7151006 阅读:306 留言:0更新日期:2012-04-11 18:40
用于执行存储器管理来缓解存储器错误的技术。根据此处描述的原理,可实现一种存储器管理模块,该存储器管理模块对于向该存储器管理模块发出执行存储器操作的请求的一个或多个软件模块中的每一个以不同操作模式来操作。在一种操作模式中,作为调用软件模块所请求的存储器操作的补充或替代,存储器管理模块可执行一个或多个缓解动作,使得该存储器操作根据这些缓解动作来执行。这些缓解动作可用于降低存储器错误负面地影响调用软件模块的可能性。在另一种操作模式中,该存储器管理模块如所请求地执行存储器操作而不执行缓解动作。

【技术实现步骤摘要】
【国外来华专利技术】选择性地使用缓解来减少错误的存储器管理技术背景在多用途计算设备中,操作系统通常,但不专门地,用于管理供在该计算设备上执行的一个或多个应用程序使用的该计算设备的存储器。例如,如果两个应用程序存取计算设备上的存储器,则操作系统可分配存储器的各部分以供这两个应用程序使用,使得两者都能存取存储器而不破坏对方所存储的数据。该管理和仲裁可能是缓解在应用程序试图使用对方正在使用的存储器时引发的问题所必需的。例如,如果两个应用程序都试图在相同或重叠的时间段内使用存储器的同一部分,则第二个应用程序可能盖写第一个应用程序的数据,且第一个应用程序可能无法正确执行或者甚至可能崩溃。诸如这些的错误对用户体验有显著影响,尤其是在它们频繁发生的情况下。操作系统通常包括应用程序可向其发送执行存储器管理任务的请求的存储器管理器,使得存储器管理器可针对存储器资源的使用在进程之间进行仲裁。例如,如果应用程序希望临时或永久地存储数据,则应用程序可请求存储器管理器向该应用程序分配某一量的存储器。稍后,当应用程序不再需要该存储器时,应用程序可如此通知存储器管理器,并且请求解除分配(或“释放”)所分配的存储器,以使其可被另一应用程序使用。当第二应用程序向存储器管理器发送对存储器的请求时,存储器管理器可咨询其记录来确定存储器中当前未被分配的部分,并将这些部分分配给第二应用程序。可执行与操作系统进行交互的进程的某些软件应用程序例如可包括与执行存储器操作相关的隐错或其他编程缺陷,并且即使是在存储器管理器正确地执行了存储器操作的时候,软件应用程序也可能因存储器错误而失败。这些存储器错误可因可在存储器操作之间引发的不一致性而引起。例如,如上所述,软件应用程序可请求向应用程序分配第一数量的存储器,然后将大于该第一数量的第二数量的数据写入该存储器。操作之间的不一致性——在该示例中,是第一数量和第二数量之间大小的不一致性——会引起导致软件应用程序中的失败的存储器错误。这些失败可包括因存储器错误所引起的不正确执行,或甚至是停止应用程序的执行的灾难性错误或“崩溃”。由于这些编程隐错的影响,已经开发了软件工具来试图标识引起这些存储器错误的编程隐错。这些工具可在软件应用程序的开发性测试期间使用。例如,存在可用于在软件应用程序的开发性测试期间标识隐错的不同类型的“诊断”工具。某些软件开发应用程序,如可从美国华盛顿州雷蒙德市的微软公司获得的Visual Studio,具有诸如这些的内置工具。在Visual Mudio中,开发者可选择在测试期间启用可包括页堆(Page Heap)功能的应用程序验证器(Application Verifier)功能。页堆可用于通过监视对于正被测试的应用程序的存储器分配和使用来检测某些存储器错误,包括缓存溢出和数据不足。在页堆中,在堆存储器的所分配的部分(正常地,是“用户分配”页)之后放置一定量的保留的额外存储器(称为“不可存取页”),并且启用应用程序验证器功能来检测信息何时被写入该不可存取页。以此方式,诊断工具可以标识错误并将其报告给开发者。然而,此类诊断工具可能无法在软件应用程序的运行时期间使用。开发了其他工具来在存储器错误引起崩溃时收集崩溃信息,该收集的信息在被分析时可用于标识存储器错误。这一解决运行时期间经历的崩溃的尝试在传统上限于检测此类错误何时发生并将崩溃状况报告给中央聚集点,该中央聚集点然后向开发者通知关于错误的可用信息。开发者可试图使用该信息来重建或诊断错误,然后标识并解决该隐错。可从微软公司获得的 Windows操作系统在其Windows错误报告(WER)系统中提供了此类报告功能。在该系统中, 当WER检测到应用程序非干净地退出时——例如,通过崩溃或以其他方式不正确退出—— 则诸如指令栈的内容等关于应用程序状态的信息可由WER捆绑并报告给聚集服务器。该信息还可包括标识错误的类的通用系统错误代码,但是不包括关于引起该错误的确切隐错的 fn息ο概述申请人:认识到且明白,通过使用存储器管理来补偿引起存储器错误的软件应用程序中的编程隐错,应用程序能更可靠地操作,且改善用户体验。申请人认识到,许多存储器错误可能是由应用程序执行的存储器操作中的不一致性引起的,且这些编程隐错的影响可通过预期这些不一致性并以纠正它们的方式执行存储器管理来缓解。例如,通过向应用程序分配多于请求量的资源(如存储器和/或时间),存储器管理模块可补偿应用程序中导致应用程序存取多于请求量的存储器、或在其发信号通知其处理完存储器之后使用存储器的隐错。此外,在某些情况下,存储器管理模块可通过例如在其检测到对应用程序所请求的存储器操作的输入信息不正确的情况下不执行该操作来缓解错误。可用不同类型的缓解动作来缓解许多不同类型的错误,其示例将在下文中更详细讨论。然而,申请人明白,诸如此类的缓解可对计算设备的效率有显著影响,并且可影响在这些设备上执行的应用程序的性能。每次当请求存储器操作时评估并操纵该操作可增加完成请求的时间,并且分配多于请求量的存储器使用了更多存储器且因此会减少系统可用的资源。申请人明白存储器管理模块的具有能够对每一应用程序选择性地启用的缓解的愿望。根据此处描述的原理,可实现一种存储器管理模块,该存储器管理模块对于向该存储器管理模块发出执行存储器操作的请求的一个或多个软件模块中的每一个具有不同的操作模式。在一种操作模式中,作为调用软件模块所请求的存储器操作的补充或替代,存储器管理模块可执行一个或多个缓解动作,使得该存储器操作根据该缓解动作来执行。这些缓解动作可用于降低存储器错误影响调用软件模块的可能性。在另一种操作模式中,该存储器管理模块如所请求地执行存储器操作而不执行缓解动作。一种存储器管理模块可在与该存储器管理模块相关联的数据存储中维护一记录,该记录具有对应于每一调用软件模块的至少一个条目,该条目指示对于该调用软件模块存储器管理模块应以其操作的模式。根据此处所描述的部分或全部原理来操作存储器管理模块可以降低诸如用户应用程序等软件模块不正确执行或崩溃的可能性,这可用于改善在使用这些软件模块时的用户体验。应当理解,以上内容旨在是本专利技术的非限制概述,本专利技术仅由所附权利要求书来定义。附图简述附图不旨在按比例绘制。在附图中,各个附图中示出的每一完全相同或近乎完全相同的组件由同样的标号来表示。出于简明的目的,不是每一个组件在每张附图中均被标号。在附图中附图说明图1是根据此处描述的原理中的某一些来操作的技术可在其中起作用的示例性计算设备的框图;图2A是根据用于存储器管理的常规技术来操作的系统的各组件之间的交互的示意图;图2B是根据此处描述的部分原理来操作的技术可在其中其作用的一个示例性系统的某些组件之间的某些交互的示意图;图2C是可用于在逐个应用程序的基础上实现存储器缓解的计算机存储介质中的数据结构的示意性图示;图3是根据此处所描述的某些原理来执行存储器管理的示例性技术的流程图;图4A、4B、4C和4D是根据此处描述的一个或多个原理来执行存储器操作的示例性技术的流程图;图5是根据此处所描述的某些原理来执行解除存储器分配的操作的一个示例性技术的流程图;图6是根据此处描述的某些原理来确定是否将缓解技术应用于特定应用程序的示例性技术的流程图;图7A和7B是根据此处描本文档来自技高网...

【技术保护点】
1.一种用于降低计算机系统遇到存储器错误的频率的方法,所述方法包括:从调用软件模块(200)接收(302)执行存储器操作的请求;确定(304)在所述调用软件模块请求的存储器操作的执行期间是否应当应用一个或多个缓解动作;如果应当应用所述一个或多个缓解动作,则应用(310)至少一个缓解动作,所述缓解动作可用于降低作为所述存储器操作的结果而发生存储器错误的可能性;以及根据所述缓解动作执行(312、314)所述存储器操作。

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

【专利技术属性】
技术研发人员:S·C·卡利诺
申请(专利权)人:微软公司
类型:发明
国别省市:US

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

1