威尼斯人棋牌-威尼斯欢乐娱人城-首页

用于设置检查点并恢复程序状态的方法

文档序号:6442167
专利名称:用于设置检查点并恢复程序状态的方法
技术领域
此处所描述的技术涉及允许从中断点恢复计算机进程的实行。
背景技术
已知在应用程序或其它计算机程序非预期地终止或不再按设计地运行的情况下发生程序崩溃。一些程序不时地保存信息,使得当崩溃发生时,能够限制数据丢失的量。例如,当用户在做文档工作时,一些文字处理程序在不同时间自动保存文档的草稿。如果文字处理程序崩溃了,则用户可以能够通过加载文字处理程序自动保存文档的最近的点处的保存的数据来恢复文档。一些操作系统提供当程序正在运行时从程序接收信息的能力,并且可从所保存的 状态恢复程序的实行。然而,在这些技术中,要求来自操作系统的协作以允许程序的实行被恢复。

发明内容
如以上所讨论的,一些用于从中断点恢复程序的实行的现有技术要求来自操作系统的协作。这些技术要求操作系统提供适合用于保存应用数据以及当实行中断时恢复应用的运行的状态的接口。然而,不是所有的操作系统都提供这种能力。提供在应用级恢复程序的实行而无需要求来自操作系统的协作将是有利的。一些应用已被特别地设计和编程为包括保存程序数据并且当实行被中断时恢复程序数据的能力。然而,对于应用程序员来说在写新程序或修改现有程序时不得不设计和编写一个应用以提供这种能力将是耗费时间的。此处所描述的技术提供了一种程序级的灵活的框架,用于允许设置检查点以及程序实行的恢复。申请人已开发了用于从实行被中断的点处恢复程序实行而无需来自计算机的操作系统的协作的技术。这些技术可在程序级被实现,而不考虑程序所运行在的操作系统环境。在一些实施例中,可采用自动化工具将实现这些技术的代码结合到现有的程序代码中,该自动化工具修改程序并添加用于运行恢复中断的程序实行的指令。由此,开发应用的程序员不需要设计或编写应用代码以包括这些特征,因为用于允许恢复中断的程序实行的代码可使用自动化工具被自动结合。一些实施例涉及一种方法,包括接收被配置成控制微处理器来实行一个或多个操作的第一计算机可读指令;使用微处理器,基于第一计算机可读指令来生成第二计算机可读指令,第二计算机可读指令被配置成实行一个或多个操作并且通过调用函数来从检查点恢复函数的实行;加载数据供函数使用,在函数之前的实行期间数据已在该检查点被保存;以及跳过在抵达该检查点之前在函数之前的实行期间被实行的一部分函数。一些实施例涉及计算机可读存储介质,其上存储了实行时实行上述方法的指令。一些实施例涉及一种方法,包括一种其上存储计算机可读指令的计算机可读存储介质,计算机可读指令被配置成通过调用函数从检查点恢复函数的实行;加载数据供函数使用,在函数之前的实行期间数据已在该检查点被保存;跳过在抵达该检查点之前在函数之前的实行期间被实行的一部分函数;保存该函数所使用的数据;以及跟踪包括该函数的程序的程序栈。系统还包括至少一个被配置成实行计算机可读指令的微处理器。以上是一些实施例的非限制性概述。


在附图中,各个附图中示出的每个相同或近乎完全相同的组件由同样的附图标记来表示。出于简明的目的,不是每个组件在每张附图中均被标记 。附图不一定是按比例的,相反,重点放在示出本发明的各方面上。图I示出了根据一些实施例的包括用于实行作为计算机程序的函数F的一部分的操作的计算机可读指令的App模块的图表。图2示出根据一些实施例的实行包括保存各检查点处的程序状态和程序数据的程序的流程图。图3显示根据一些实施例的用于从检查点重建函数的实行的方法的流程图。图4显示了根据一些实施例的用于修改代码以允许从检查点恢复程序的运行的方法的流程图。图5显示了具有在其上能够实现此处所描述的技术的多个微处理器的技算设备的示例。图6显示了包括在其上能够实现此处所描述的技术的技算设备的计算环境的示例。
具体实施例方式如以上讨论的,此处所描述的技术允许当实行中断时从检查点恢复程序实行,而无需来自计算机的操作系统的协作。这些技术可针对底层硬件或App中的不稳定性进行保护,并且可允许在操作系统崩溃、断电、或系统中的其它故障之后恢复程序实行。这些技术可通过使用自动化工具修改现有代码来实现,而无需要求程序员特别编写应用以包括这一功能。在一些实施例中,编译器或其它程序翻译工具可重新配置现有代码以提供保存并在错误发生之后恢复程序实行的能力。有利地,这些技术在多线程、多核环境中以及其中程序运行在多个机器上的环境中可以是稳固的。当实行被中断并且不能够继续时,程序可在一不同的处理器或一不同的机器上、甚至在一运行不同操作系统的机器上继续实行。这些技术可被有利地用于云计算环境,其中多个机器可用于实行一个程序。以下将提供示例性实施例的详细讨论。I.修改程序代码以支撑恢复实行的示例常用的程序语言提供定义在程序的实行期间可能被调用的函数的能力。代码定义了函数的关键方面,诸如函数接受的输入、函数实行的操作、以及函数返回的数据。例如,以下代码定义函数F和G。函数F接收整数a和b作为输入。函数F将局部变量X初始化为被设为等于a b的积的整数,并且将变量y初始化为被设为等于函数G的返回值的整数。函数F返回具有值x+y的整数。函数G接收整数X和b作为输入,X和b分别对应于函数G内的局部变量a和b。函数G将局部变量X初始化为被设为等于a+b的整数。函数G返回等于X的值的整数。
权利要求
1.一种方法,包括 接收(402)被配置成控制微处理器来实行一个或多个操作的第一计算机可读指令; 使用微处理器,基于所述第一计算机可读指令来生成(404)第二计算机可读指令,所述第二计算机可读指令被配置成实行一个或多个操作并且通过以下步骤来从检查点恢复函数的实行 i)调用所述函数(304); ii)加载数据供所述函数使用(306),在所述函数之前的实行期间所述数据已在所述检查点被保存;以及 iii)跳过在抵达所述检查点之前在所述函数之前的实行期间被实行的一部分函数(308)。
2.如权利要求I所述的方法,其特征在于,所述方法通过编译器来实行,所述编译器将包括所述第一计算机可读指令的源代码编译成包括所述第二计算机可读指令的对象代码。
3.如权利要求I所述的方法,其特征在于,生成所述第二计算机可读指令包括将附加指令添加至所述第一计算机可读指令,所述附加指令被配置成从检查点恢复所述函数的实行。
4.如权利要求I所述的方法,其特征在于,所述第二计算机可读指令还被配置成保存所述函数所使用的数据(204)。
5.如权利要求I所述的方法,其特征在于,所述第二计算机可读指令还被配置成跟踪包括所述函数的程序的程序栈(120)。
6.一种系统,包括 一种其上存储计算机可读指令的计算机可读存储介质(504),计算机可读指令被配置成通过以下步骤从检查点恢复函数的实行 i)调用所述函数(304); ii)加载数据供所述函数使用,在所述函数之前的实行期间数据已在所述检查点被保存(306); iii)跳过在抵达所述检查点之前在所述函数之前的实行期间被实行的一部分函数(308); iv)保存所述函数所使用的数据(204);以及 v)跟踪包括所述函数的程序的程序栈(120);以及 至少一个被配置成实行所述计算机可读指令的微处理器。
7.如权利要求6所述的系统,其特征在于,所述至少一个微处理器包括第一微处理器(602)和第二微处理器(604)。
8.如权利要求7所述的系统,其特征在于,所述第一微处理器实行所述函数,并且,当使用所述第一微处理器¢02)的函数的实行被中断时,所述函数的实行使用所述第二微处理器(604)从所述检查点继续。
9.如权利要求8所述的系统,其特征在于,所述系统包括 包括所述第一微处理器¢02)的第一设备¢01);以及 包括所述第二微处理器¢04)的第二设备(603)。
10.如权利要求9所述的系统,其特征在于所述第一设备运行第一操作系统并且所述第二设备运行 与所述第一操作系统不同的第二操作系统。
全文摘要
本发明涉及用于设置检查点并恢复程序状态的方法。此处描述了允许从检查点恢复被中断的程序实行而无需来自计算机操作系统的协作的技术。这些技术可通过使用自动化工具修改现有代码来实现,该自动化工具添加用于允许恢复中断的程序实行的指令。
文档编号G06F9/46GK102736948SQ201110428259
公开日2012年10月17日 申请日期2011年12月19日 优先权日2010年12月20日
发明者J·M·斯托尔, P·J·R·赫斯本兹, S·莱布曼 申请人:MicroSoft企业
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1

威尼斯人棋牌|威尼斯欢乐娱人城

XML 地图 | Sitemap 地图