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