用于最小化计算机应用程序中的丢失的方法和系统的制作方法

文档序号:6656476阅读:330来源:国知局
专利名称:用于最小化计算机应用程序中的丢失的方法和系统的制作方法
技术领域
本发明涉及计算机软件应用程序的一般容错度,以及用于使得单个应用程序能够在未被编程或预期的错误情形中操作。
背景计算机系统和软件应用程序日益复杂并分布广泛。这些因素均导致数据丢失的常见问题。当最终用户操作软件应用程序时,他们通常将操作的结果保存在一个或多个数据文件中,保存到数据库或其它地方。提交这些操作的动作创建了系统中的状态改变,这可有效地用作检查点。应用程序程序员花费大量时间来确保他们的软件程序按预期将在这些检查点处执行,或者提交或者拒绝改变。
然而,通常状态改变在这些检查点之间累积。在大多数软件应用程序中,在提交之间可能存在相当多的经过的时间或采取的操作。如果应用程序在该间隔期间发生故障,则由用户采取的动作可能丢失,回到上一检查点。用户必须然后重新打开应用程序,研究其可查看状态来理解丢失了什么,并重新创建所采取的那些动作。
应用程序故障可由于若干原因导致,包括网络故障、硬件故障、服务器或系统故障或其它操作故障。在新软件模式中,当用户将膝上型计算机或其它移动设备从网络中断开,或当应用程序被流化或分块传递给客户计算机时,故障的可能性增加。众多应用程序未被设计成当从网络断开时操作,或在程序及其资源的完整性在运行时不存在的情况下操作。
期望提供调节或克服这些和其它形式的故障的手段,在无需费用和时间高昂的应用程序重写或考虑各种形式的故障的情况中消除在检查点处或检查点之间的丢失的工作。提出了一组简单、通用的方法以便在无需对任何软件应用程序进行修改或访问软件应用程序代码或设计的情况下提供期望的弹性。
提出了各种方法来实现为特定应用或目的在设计时对这个问题的解决方案,诸如授予Walker等人的名为Method for Saving a Document Using a Background SaveThread(使用背景保存线程保存文档的方法)的美国专利第6,014,681号中所述的方法。授予Huang的名为Apparatus and Method for Fault-Tolerant Computing(容错计算的装置和方法)的美国专利第5,748,882号公开了创建来供应用程序开发员使用的容错例程库。本发明的方法克服了需要应用程序通过使用这样的库被设计和构建来容错的限制。本发明提供了用于处理以往、目前和将来软件系统的众多需求的可扩展的解决方案架构。
概述本发明提供用于当错误或潜在错误在计算机应用程序中发生时防止或最小化数据丢失的方法和系统。本发明的方法和系统可在无需对使用中的应用程序的代码进行任何修改或访问的情况下最小化或防止数据丢失。
在本发明中,提供帮助者应用程序来监视运行在目标计算机上的主应用程序以检测主应用程序中的错误或潜在错误的存在。当检测到错误时,帮助者应用程序选择用于处理该错误的方法,然后执行所选方法。
帮助者应用程序通过截取对主应用程序的调用并检查调用的结果来监视主应用程序。帮助者应用程序监视应用程序的内部操作(诸如逻辑故障)和/或外部操作(诸如网络连接的丢失、应用程序所需的外部服务的故障、连接的设备的故障以及对等或服务器网络的故障)。
如果标识了错误,则帮助者应用程序确定哪一错误处理器是最适当的。在本发明的较佳实施例中,提供了包括重定向处理器、挂起处理器和快照处理器的错误处理器。系统可扩展来提供为不同目的利用任何数量的不同处理器的能力。其它处理器的示例可以是自动重启处理器或倒带处理器。
如果选择了重定向处理器,则重定向处理器调用主应用程序的保存逻辑。可通过(a)直接调用主应用程序保存入口点,(b)将程序计数器复位到保存入口点,或(c)插入跳转指令来强制调用保存来调用保存逻辑。
如果选择了挂起处理器,则挂起处理器挂起应用程序,等待恢复可进行的通知。一旦它获取了该通知之后,挂起处理器进行(a)恢复主应用程序或(b)复位主应用程序的程序计数器或(c)重新调用原始错误API中的任一种。挂起处理器在主应用程序通过使得主应用程序仅可通过预定手段控制来被挂起的同时防止对主应用程序的偏离恢复(stray resumption)。可在错误持续时间内挂起主应用程序,或它可在预期错误状态的情况下由用户接口挂起。
如果选择了快照处理器,则快照处理器响应于主应用程序中错误或潜在错误的存在挂起主应用程序的进程和线程。快照处理器然后摄取主应用程序的存储器快照,将存储器存储到非易失性存储,终止主应用程序,并在调用之后,还原主应用程序。快照处理器防止主应用程序在错误被清除或由用户明确确认之前被再次调用。
在上述实施例中,帮助者应用程序对它将处理哪组错误以及它将调用何种处理器进行分类。系统可通过各种技术离线或在线地获取这种知识。在最基本的系统中,处理器仅登记来检测所有的错误。
根据本发明的另一方面,采取附加的步骤来对主应用程序代码执行静态分析以确定其组成和其错误的可能性以及诸如“保存”或“退出”的其常见程序入口点。在分析完成之后,分析器可呈现可恢复和不可恢复的那些错误的列表以及关于处理的建议。对这两类错误,然后可禁止用于配置错误处理器的动作。对不可恢复的那些错误,通常使用重定向处理器。如果没有“保存”代码存在或可标识,则系统可设置成仅得体地退出,而数据不必保存。
为了分析程序入口点,帮助者应用程序可使用平台知识来发现源。在替换实施例中,可使用动态分析标识错误和入口点。从而程序可在其执行期间被跟踪以便标识这些签名。
附图简述

图1示出了本发明的系统和方法的一个实施例的示意图;图2示出了图1中所示的本发明的系统和方法中所利用的错误检测过程的示意图;图3示出了图1中所示的本发明的系统和方法中的程序计数器的操作的示意图;图4示出了图1中所示的本发明的系统和方法所使用的程序分析器的示意图;以及图5示出了图1中所示的本发明的方法所执行以检测和处理错误的步骤的流程图。
较佳实施例的详细描述如图1中所示,软件应用程序100在目标计算机101上执行。帮助者应用程序102并发地在同一计算机上执行,而它也可整体或部分地作为服务程序存在于替换计算机103上。该帮助者应用程序102可作为注入到主应用程序的存储器空间内的独立进程驻留,或作为计算机的操作的系统的一部分作为设备驱动程序等。不必重新编译或修改主应用程序100。主应用程序100可作为独立程序存在,或与网络中的一个或多个对等或服务器计算机通信而存在。
参考图2,帮助者应用程序102包括错误检测器201、错误处理器203、以及知识库203。当主应用程序100执行时,错误检测器201监视主应用程序100以试图检测错误的存在性。错误检测在响应于主应用程序100的内部操作和在响应诸如网络连接的丢失、应用程序所需的外部服务的故障、诸如打印机和调制解调器等连接的设备的故障、其网络中对等或服务器计算机的故障等其它外部因素时完成。为调节内部出错,错误检测器截取各种消息和主应用程序100所采取的动作。在一个示例方法(图2中所示)中,帮助者应用程序102监视主应用程序对存储器分配例程的调用,诸如使用标准C运行时程序库中的malloc()和failed()。如果malloc()例程不能分配所请求的存储器,则将发生存储器错误。
在该示例中,主应用程序对malloc()例程的调用由错误检测器201截取。注意,在本发明的替换实施例中,错误检测器可按照这样一种方式操作,它实际上不截取例程调用,而监视诸如异常、坏返回代码或其它不正确行为等对错误的输出。所截取的调用被转发给malloc()例程。反过来(on return),错误检测器将检查调用的结果。此时,错误检测器将分支,并且将控制返回给主应用程序100或者调用错误处理器202。错误处理器202可包含静态编码决策和/或诸如可配置知识库(203)(如图2中所示)的系统以便基于大量行为和探试调用错误处理例程。
在一个实施例中,知识库203包含可配置成响应于各种故障情形的一组规则和行为。作为规则库,它也可随时间扩展。单单通过添加规则,可扩展系统处理新错误、采用新行为或基于可用信息作出不同决策的能力。错误处理器将使用关于当前错误的可用信息查询知识库。在当前示例中,错误处理器可向知识库发送信号,指示在当前程序内发生了malloc_failed(malloc故障)事件。知识库然后调用其规则库以便基于它所具有的关于应用程序和机器当前状态、所发生的错误类型、该错误可用的任何严重性或扩展的出错信息、或任何应用程序专用错误处理规则的任何规则作出决策。知识库可按照各种方式实现,包括决策树、基于范例的推论器、或各种技术的组合。知识库处理的结果是响应于该错误选择要采取的一动作或不采取动作。该返回指令将向错误处理器指示如何处理当前错误。
错误检测器201也响应于目标计算机101上或其作为一部分的网络中的外部事件。例如,如当移动设备靠电池运行时,目标计算机101可指示其电力低下。错误检测系统201可观察该事件并调用错误处理器以便经由知识库选择适当的恢复动作。在其它实现中,错误检测器201可被配置成响应网络连接的丢失、应用程序所需的外部服务的故障、诸如打印机和调制解调器的连接设备的故障、其网络中的对等或服务器计算机的故障、和其它重要事件。接着可看到,错误检测器包含两个不同的模块,一个用于观察应用程序专属错误,另一个用于观察一般系统故障或环境问题。
错误检测器201可结合能够从网络中断开的移动设备使用。在这种类型的设备中,网络中断可能是经常的,主应用程序100的代码可能未对移动性进行设计。此外,在移动设备中,主应用程序100的代码可被流化,即其中主应用程序100被分解成操作主应用程序100的某些功能所需的代码片段的传递模式。这些代码片段及时被传递给移动设备,使得主应用程序100可使用最小覆盖区(footprint)迅速部署。以此模式,移动设备操作员通常请求在离线使用期间可能不可用的主应用程序100的功能。在该功能被请求时,代码片段将不存在,且将不可从网络访问。
在本发明的一个实施例中,如果移动设备操作系统发出指示访问主应用程序的系统代码页的故障的页错误,则错误检测器201捕获该错误,并调用错误处理器202。在替换实施例中,错误检测器201被嵌入到移动设备操作系统内,作为用于流化应用程序的系统的一部分。在该系统中,错误可在页错误发生之前当对数据包的网络请求失败时被检测出,且错误行为被直接检测。
由于移动设备可从网络中断开,它可能丢失与网络资源的接触或不能接触网络资源。如果主应用程序100试图连接至网络并失败,则可发生另一类错误。在该类错误的情况下,错误检测器201可截取对网络的请求,并执行对于故障的适当的错误行为。
如上所述,当检测出错误之后,错误处理器202确定哪一错误处理器是最适当的。在某些情况中,错误处理器将调用帮助者应用程序102来允许用户决定动作过程,或调用可由帮助者应用程序配置的动作。帮助者应用程序可向用户通知错误的存在、内部将错误记入日志、或将错误通知转发给诸如SNMP、WMI或WindowsEvent Log等各种监视系统。帮助者应用程序也可询问用户他们是选择来处理错误还是允许故障发生,且当多种动作可能时还要求用户选择适当的一个动作。
主错误处理器包括重定向处理器、挂起处理器和快照处理器。现在将在以下详细描述这些错误处理器中的每一个。
重定向处理器当调用重定向处理器时,重定向处理器将主应用程序重定向到主应用程序的“保存并退出”逻辑,然后退出。使用重定向处理器的本发明的实施例在图3中示出。在错误发生时,主应用程序100在错误检测器201的截取例程内部运行。操作系统的程序计数器当前指向该截取例程,且当调用错误API之后正常地继续执行下一指令。重定向处理器或者将调用应用程序的保存逻辑302,然后退出主应用程序100。通过(a)直接调用主应用程序100的保存入口点,(b)将程序计数器复位到保存入口点,或者(c)在调用程序中插入跳转指令以强制调用保存并退出逻辑来实现对保存逻辑的这种调用。
在图3中所示的示例中,主应用程序试图调用API call_thesaurus()。该例程的代码片段还未由操作系统303调入页。以此,操作系统303截取该调用,并查询其虚拟存储器管理器304来检索代码页。当这发生故障时,操作系统303将发出页错误,正常终止主应用程序100。该页错误然后由重定向处理器306截取。或者,重定向处理器306可从例程直接接收“不能检索代码”页。
在某些情况中,主应用程序可具有保存并退出的若干变型。可能存在封装保存功能的“保存为”、“断开连接”或“退出”。错误处理器306确保,向用户给予保存已经完成的工作并从应用程序中退出而避免应用程序的错误和/或崩溃的安全的手段。用户可在退出之后重启应用程序,但他/她将了解可能发生了错误且错误可再次发生。
在错误处理器的一个实施例中,主应用程序调用其“保存”逻辑,但其数据文件将被重定向至本地数据源或代理存储,使得主应用程序可在其中或者数据文件损坏并引起写故障或者数据文件是网络文件且网络不可用的任一情况中完成其保存操作。正常地,当程序不能与网络文件服务器通信或有效保存其文件时可生成其它错误。在重新连接时,数据文件或代理存储可与源数据文件同步化或替换它。
挂起处理器当调用挂起处理器时,挂起处理器挂起包括主应用程序100的所有进程、子进程和线程。一旦主应用程序100被挂起之后,挂起处理器等待恢复可进行(即,诸如网络被重新建立、或用户选择指示其继续的期望的控制的事件)的通知。当请求继续时,挂起处理器可(a)直接恢复主应用程序,(b)复位程序计数器,或(c)重新调用原始错误API。
在挂起期间,主应用程序100将保持以其完整形式存在,并仍将作为目标计算机101上的应用程序可见。在一个实施例中,挂起处理器可防止通过诸如Windows Task Manager等简单的系统工具对主应用程序的偏离(stray)恢复。它将主应用程序挂起以便仅可通过明确的手段或通过内部帮助者应用程序102控制。
挂起处理器常用于其中不存在明确“保存”功能的应用程序。这些应用程序将其状态保存为一连串副作用,或通过与外部服务器、数据库或其它系统的通信保存。在一个示例中,应用程序是超文本应用程序,且对HTTP服务器的连接丢失。在此示例中,可存储超文本应用程序的用户侧状态,或者可存储整个超文本浏览器应用程序。当服务器回到在线时,应用程序可使用其所保存的状态继续。
快照处理器如果错误指示长期的问题,则挂起将不能从问题持续时间恢复,因为目标计算机可能经受动力循环(power cycle),或遭受其它错误,因而调用快照处理器。在这种情形中,期望备份主应用程序的运行状态以便稍后还原。
当调用快照处理器时,快照处理器挂起主应用程序的进程和线程,摄取主应用程序的存储器快照,包括不是应用程序的一部分但用于将其还原成进程的内核数据结构。该存储器快照然后可被写至磁盘,供稍后恢复使用。在替换方法中,快照处理器可周期性、主动地对主应用程序摄取快照以提供更细粒度的恢复手段。为了避免过多的开销,可迅速摄取存储器快照,并在后台中将存储器存储到磁盘或其它非易失性存储。如果由于长期的问题而摄取快照,则一旦完成快照之后,快照处理器然后可终止主应用程序。
一旦终止了主应用程序之后,帮助者应用程序102然后可用于防止应用程序在错误清除或用户已明确确认该用户想要应用程序被再次调用之前被再次调用。在调用之后,帮助者应用程序然后可还原主应用程序100,或仅允许主应用程序的另一实例被代替创建。或者,帮助者应用程序可将快照图像传送给网络中的对等或服务器计算机以便从那里恢复。
在还原之后,错误处理器映射回进程的存储器,并复位内部操作系统内核数据结构以确保程序能够精确地在其曾停止的位置继续。作为示例,如果应用程序100在错误时打开了若干文件,则快照处理器将需要重新打开这些文件,并重新分配已知文件句柄,使得主应用程序不会生成试图使用其旧的文件句柄的错误。而且,如果文件句柄为流访问而设置,则它们必须指向文件中的适当偏移量。
图5示出了本发明的帮助者应用程序的一个实施例的流程图。在步骤501、502中调用潜在错误API,帮助者应用程序102在步骤504中询问调用是否成功或者错误是否发生。如果未有错误发生,则应用程序在步骤505中返回API结果。如果错误发生,则帮助者应用程序102标识错误处理器,在重定向处理器和挂起处理器之间选择。如果在步骤508中选择了挂起处理器,则帮助者程序询问主应用程序是否可被恢复。如果程序被恢复,则它在步骤505中返回API结果。如果主应用程序未被恢复,则帮助者应用程序在步骤510中询问是否重新调用API。如果不重新调用API,则帮助者应用程序询问是否有快照可用。如果在步骤511中有快照可用,则帮助者应用程序在步骤513中将PC回复到快照。如果无快照可用,则在步骤512中复位程序计数器。
在本发明的又一实施例中,帮助者应用程序102也还原外部连接,诸如至数据库、TCP/IP槽或其它IPC机制的连接。为此,帮助者应用程序102也可向用户要求协助,诸如使用数据库登录或使用HTTP服务器认证。如上所述,系统可能需要复位某些主应用程序内部构件或将句柄重定向到经改变的实体,如槽描述器。在替换实施例中,可提供用户界面来允许用户在不考虑错误的存在与否的情况下明确地调用这种行为。
帮助者应用程序除分类它可调用何种处理器以外还分类它将处理哪一类错误。帮助者应用程序通过各种技术离线或在线地获取这种知识。在一个示例中,错误处理器将登记来检测所有的错误。
在本发明的另一实施例中,采取附加的步骤来对主应用程序代码执行静态分析以确定其组成和错误的可能性、以及诸如“保存”或“退出”等其常见的程序入口点。在对潜在错误的检查中,分析例程寻找对一组公共API的使用,诸如对文件的访问、或经由ODBC对数据库的访问、或如上所述的对诸如malloc()和free()等存储器例程的使用或者对诸如socket()或Windows GetNamedPipe()的IPC例程的使用。
当分析完成之后,分析器403可提供被认为可经由系统可用错误处理器恢复和不可恢复的错误的列表以及用于处理错误的建议(见图4)。对这两类错误,随后可禁止用于配置错误处理器的动作。对那些不可恢复的错误,通常使用重定向处理器。如果不存在或不可标识“保存”代码,则系统可被设置成仅得体地退出。
为了分析程序入口点,系统可使用平台知识来发现源。例如,在MicrosoftWindows平台上,可响应WM_EXIT消息的消息处理器可对应于程序的“退出”例程。因此,对WM_EXIT的搜索将指示该功能点。或者,资源文件可描述FileExit菜单命令以及在调用时它将生成的Windows消息。如果这些指示符不存在,则分析器可进一步寻找对诸如Windows ExitProcess()或exit()功能等API的使用。在搜索“保存”例程时,分析器可寻找对文件或外部数据源的任何使用。
在替换实施例中,可使用动态分析标识错误和入口点。可在程序执行期间跟踪程序以标识这些签名。在一个实施例中,使用以类似于宏记录的方式记录入口点的入口点标识符UI 404进行动态分析。当用户指示将标识“保存”功能时,标识符记录所有UI和程序活动。从这些签名中,可标识入口点和相关联的代码。对其中应用程序离线使用的流化的应用程序,以“保存”和“退出”功能标识的代码被特别标记以指示它必须总是被流化且以离线模式提供以确保这种行为可被调用。
本发明也提供允许在没有工作丢失的情况下调节应用程序使用中的中断或错误的手段。正常地,应用程序使用期间的故障可使得在该程序中进行的某些工作无论完成与否都被丢弃。本发明的系统和方法不仅提供对程序的简单恢复,而且允许确保不遭受数据丢失的手段。而且,这是在无需对软件的任何修改、重新编译或重新设计的情况下完成的,且允许在考虑该范例的情况下构建新软件。
尽管结合某些较佳实施例描述了本发明,但可以理解,本发明不旨在被限于这些特定实施例。相反,它旨在也覆盖替换、修改和等效实施方式。提及了某些具体分量、外形和某种类型的材料,但可以理解,这样的分量值、材料的尺度和类型仅作为示例给出,且不旨在以任何方式限制本发明的范围。
权利要求
1.一种在使用计算机应用程序的同时最小化数据丢失的方法,包括以下步骤监视所述计算机应用程序以便检测错误或潜在错误的存在;选择用于处理所述错误或潜在错误的方法;以及执行所选的用于处理错误或潜在错误的方法;其中所述监视、选择和执行的步骤在无需访问或修改所述计算机应用程序的代码的情况下执行。
2.如权利要求1所述的方法,其特征在于,所述用于处理错误或潜在错误的方法是从以下方法中选出的重定向所述计算机应用程序代码的执行;挂起所述计算机应用程序;以及摄取所述计算机应用程序的存储器快照。
3.如权利要求1所述的方法,其特征在于,所述执行所选的用于处理错误或潜在错误的方法的步骤包括调用所述计算机应用程序的保存逻辑以便保存数据。
4.如权利要求1所述的方法,其特征在于,所述执行所选的用于处理错误或潜在错误的方法的步骤包括挂起所述计算机应用程序;为可进行恢复的指示而监视所述计算机应用程序;以及选择恢复所述计算机应用程序或复位所述计算机应用程序的程序计数器之一。
5.如权利要求1所述的方法,其特征在于,所述执行所选的用于处理错误或潜在错误的方法步骤还包括挂起所述计算机应用程序;摄取所述计算机应用程序的存储器快照;以及将所述存储器快照存储到非易失性存储器装置中。
6.如权利要求1所述的方法,其特征在于,所述监视计算机应用程序的步骤包括截取对所述计算机应用程序的调用;检查所述调用的结果;以及选择是将控制返回给所述计算机应用程序还是选择用于处理所述错误或潜在错误的方法。
7.如权利要求1所述的方法,其特征在于,所述监视计算机应用程序的步骤包括监视所述计算机应用程序的内部操作。
8.如权利要求1所述的方法,其特征在于,所述监视计算机应用程序的步骤包括监视外部事件。
9.如权利要求1所述的方法,其特征在于,所述处理错误或潜在错误的步骤包括与所述计算机应用程序的用户进行关于所述错误或潜在错误的通信。
10.一种在使用计算机应用程序的同时最小化数据丢失的方法,包括监视计算机应用程序以检测错误或潜在错误的存在;以及响应于检测到错误或潜在错误的存在而调用所述计算机应用程序的保存逻辑以便保存数据。
11.如权利要求10所述的方法,其特征在于,所述调用计算机应用程序的保存逻辑的步骤包括直接调用所述计算机应用程序的保存入口点。
12.如权利要求10所述的方法,其特征在于,所述调用计算机应用程序的保存逻辑的步骤包括将所述计算机应用程序的程序计数器复位到保存入口点。
13.如权利要求10所述的方法,其特征在于,所述调用计算机应用程序的保存逻辑的步骤包括将跳转指令插入到现场代码流中以强制对保存的调用。
14.如权利要求10所述的方法,其特征在于,所述调用计算机应用程序的保存逻辑的步骤包括将所述计算机应用程序重定向到本地数据源或代理存储。
15.如权利要求10所述的方法,其特征在于,还包括在运行所述计算机应用程序的系统内部记录所述错误或潜在错误。
16.如权利要求10所述的方法,其特征在于,还包括将错误通知转发给外部监视系统。
17.如权利要求10所述的方法,其特征在于,还包括与所述计算机应用程序的用户进行关于所述错误或潜在错误的通信。
18.如权利要求17所述的方法,其特征在于,所述与计算机应用程序的用户进行关于错误或潜在错误的通信的步骤包括询问用户是想要处理所述错误或潜在错误还是应允许所述错误或潜在错误发生。
19.一种用于在使用计算机应用程序的同时最小化数据丢失的方法,包括监视计算机应用程序以检测错误或潜在错误的存在;响应于检测到错误或潜在错误,挂起所述计算机应用程序;为可进行恢复的指示而监视所述计算机应用程序;以及选择进行恢复所述计算机应用程序或复位所述计算机应用程序的程序计数器的任一种。
20.如权利要求19所述的方法,其特征在于,还包括在所述计算机应用程序挂起的同时防止所述计算机应用程序的不需要的恢复。
21.如权利要求19所述的方法,其特征在于,所述防止计算机应用程序的不需要的恢复的步骤包括使得所述计算机应用程序仅可通过预定手段来控制。
22.如权利要求19所述的方法,其特征在于,还包括将所述计算机应用程序的状态作为一连串副作用来保存的步骤。
23.如权利要求19所述的方法,其特征在于,还包括通过与外部系统的通信来保存所述计算机应用程序的状态的步骤。
24.如权利要求19所述的方法,其特征在于,所述计算机应用程序在检测到的错误的持续期间内挂起。
25.如权利要求19所述的方法,其特征在于,所述挂起计算机应用程序的步骤包括经由用户界面与用户通信以确定在预期到错误状态时所述用户是否希望挂起所述计算机应用程序的步骤。
26.一种用于在使用计算机应用程序的同时最小化数据丢失的方法,包括响应于计算机应用程序中错误或潜在错误的存在,挂起所述计算机应用程序;摄取所述应用程序的存储器快照;以及将所述存储器快照存储到辅助存储器设备。
27.如权利要求26所述的方法,其特征在于,还包括在所述存储器快照被存储之后,终止所述计算机应用程序;以及在调用之后,进行还原所述计算机应用程序或允许创建所述计算机应用程序的另一实例的任一种。
28.如权利要求27所述的方法,其特征在于,所存储的存储器快照可在所述计算机应用程序的终止之后恢复。
29.如权利要求26所述的方法,其特征在于,还包括在挂起所述计算机应用程序之后防止所述计算机应用程序在检测到的错误或潜在错误被清除或由用户明确确认之前被调用。
30.如权利要求26所述的方法,其特征在于,所述还原计算机应用程序的步骤包括映射所述计算机应用程序的存储器并复位内部操作系统内核数据结构。
31.如权利要求26所述的方法,其特征在于,还包括响应于检测到外部连接被断开的错误还原与其上使用所述计算机应用程序的计算机的外部连接的步骤。
32.如权利要求1所述的方法,其特征在于,还包括分析所述计算机应用程序的代码以标识常见入口点。
33.如权利要求32所述的方法,其特征在于,所述分析代码以标识常见入口点的步骤包括在所述应用程序执行期间跟踪它。
全文摘要
在软件应用程序的执行期间,用户将通常创建表示他们试图完成的工作的重要数据。此外,使用应用程序的动作将创建该程序内反映使用期间所执行的操作的状态。在众多情形中,由于应用程序、系统或网络故障,这种数据可能丢失。本发明提供经由(a)响应于故障将程序执行重定向到来自程序的表示保存和/或退出的已知代码路径,(b)挂起程序并在错误修复之后还原,以及(c)摄取应用程序状态快照以便在应用程序故障之后还原的弹性手段。
文档编号G06F11/07GK101023411SQ200580024221
公开日2007年8月22日 申请日期2005年7月18日 优先权日2004年7月20日
发明者S·谢弗 申请人:索芙特瑞斯提股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1