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

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

Info

Publication number
CN102736948B
CN102736948B CN201110428259.2A CN201110428259A CN102736948B CN 102736948 B CN102736948 B CN 102736948B CN 201110428259 A CN201110428259 A CN 201110428259A CN 102736948 B CN102736948 B CN 102736948B
Authority
CN
China
Prior art keywords
function
execution
checkpoint
computer
microprocessor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201110428259.2A
Other languages
English (en)
Other versions
CN102736948A (zh
Inventor
S·莱布曼
J·M·斯托尔
P·J·R·赫斯本兹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102736948A publication Critical patent/CN102736948A/zh
Application granted granted Critical
Publication of CN102736948B publication Critical patent/CN102736948B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Retry When Errors Occur (AREA)
  • Software Systems (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及用于设置检查点并恢复程序状态的方法。此处描述了允许从检查点恢复被中断的程序执行而无需来自计算机操作系统的协作的技术。这些技术可通过使用自动化工具修改现有代码来实现,该自动化工具添加用于允许恢复中断的程序执行的指令。

Description

用于设置检查点并恢复程序状态的方法
技术领域
此处所描述的技术涉及允许从中断点恢复计算机进程的执行。
背景技术
已知在应用程序或其它计算机程序非预期地终止或不再按设计地运行的情况下发生程序崩溃。一些程序不时地保存信息,使得当崩溃发生时,能够限制数据丢失的量。例如,当用户在做文档工作时,一些文字处理程序在不同时间自动保存文档的草稿。如果文字处理程序崩溃了,则用户可以能够通过加载文字处理程序自动保存文档的最近的点处的保存的数据来恢复文档。
一些操作系统提供当程序正在运行时从程序接收信息的能力,并且可从所保存的状态恢复程序的执行。然而,在这些技术中,要求来自操作系统的协作以允许程序的执行被恢复。
发明内容
如以上所讨论的,一些用于从中断点恢复程序的执行的现有技术要求来自操作系统的协作。这些技术要求操作系统提供适合用于保存应用数据以及当执行中断时恢复应用的运行的状态的接口。然而,不是所有的操作系统都提供这种能力。提供在应用级恢复程序的执行而无需要求来自操作系统的协作将是有利的。
一些应用已被特别地设计和编程为包括保存程序数据并且当执行被中断时恢复程序数据的能力。然而,对于应用程序员来说在写新程序或修改现有程序时不得不设计和编写一个应用以提供这种能力将是耗费时间的。
此处所描述的技术提供了一种程序级的灵活的框架,用于允许设置检查点以及程序执行的恢复。申请人已开发了用于从执行被中断的点处恢复程序执行而无需来自计算机的操作系统的协作的技术。这些技术可在程序级被实现,而不考虑程序所运行在的操作系统环境。在一些实施例中,可采用自动化工具将实现这些技术的代码结合到现有的程序代码中,该自动化工具修改程序并添加用于运行恢复中断的程序执行的指令。由此,开发应用的程序员不需要设计或编写应用代码以包括这些特征,因为用于允许恢复中断的程序执行的代码可使用自动化工具被自动结合。
一些实施例涉及一种方法,包括:接收被配置成控制微处理器来执行一个或多个操作的第一计算机可读指令;使用微处理器,基于第一计算机可读指令来生成第二计算机可读指令,第二计算机可读指令被配置成执行一个或多个操作并且通过调用函数来从检查点恢复函数的执行;加载数据供函数使用,在函数之前的执行期间数据已在该检查点被保存;以及跳过在抵达该检查点之前在函数之前的执行期间被执行的一部分函数。一些实施例涉及计算机可读存储介质,其上存储了执行时执行上述方法的指令。
一些实施例涉及一种方法,包括:一种其上存储计算机可读指令的计算机可读存储介质,计算机可读指令被配置成通过调用函数从检查点恢复函数的执行;加载数据供函数使用,在函数之前的执行期间数据已在该检查点被保存;跳过在抵达该检查点之前在函数之前的执行期间被执行的一部分函数;保存该函数所使用的数据;以及跟踪包括该函数的程序的程序栈。系统还包括至少一个被配置成执行计算机可读指令的微处理器。
以上是一些实施例的非限制性概述。
附图说明
在附图中,各个附图中示出的每个相同或近乎完全相同的组件由同样的附图标记来表示。出于简明的目的,不是每个组件在每张附图中均被标记。附图不一定是按比例的,相反,重点放在示出本发明的各方面上。
图1示出了根据一些实施例的包括用于执行作为计算机程序的函数F的一部分的操作的计算机可读指令的软件模块的图表。
图2示出根据一些实施例的执行包括保存各检查点处的程序状态和程序数据的程序的流程图。
图3显示根据一些实施例的用于从检查点重建函数的执行的方法的流程图。
图4显示了根据一些实施例的用于修改代码以允许从检查点恢复程序的运行的方法的流程图。
图5显示了具有在其上能够实现此处所描述的技术的多个微处理器的技算设备的示例。
图6显示了包括在其上能够实现此处所描述的技术的技算设备的计算环境的示例。
具体实施方式
如以上讨论的,此处所描述的技术允许当执行中断时从检查点恢复程序执行,而无需来自计算机的操作系统的协作。这些技术可针对底层硬件或软件中的不稳定性进行保护,并且可允许在操作系统崩溃、断电、或系统中的其它故障之后恢复程序执行。这些技术可通过使用自动化工具修改现有代码来实现,而无需要求程序员特别编写应用以包括这一功能。在一些实施例中,编译器或其它程序翻译工具可重新配置现有代码以提供保存并在错误发生之后恢复程序执行的能力。
有利地,这些技术在多线程、多核环境中以及其中程序运行在多个机器上的环境中可以是稳固的。当执行被中断并且不能够继续时,程序可在一不同的处理器或一不同的机器上、甚至在一运行不同操作系统的机器上继续执行。这些技术可被有利地用于云计算环境,其中多个机器可用于执行一个程序。以下将提供示例性实施例的详细讨论。
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的值的整数。
当运行程序时,函数F可被调用,函数F随后调用函数G。如果在函数F和/或G的执行期间程序崩溃或以执行其它方式中断,执行函数F和/或G中取得的进展可能丢失。为了继续执行,程序需要被重新启动并且函数F需要被从头开始再次启动,并且随后函数G需要被再次调用。尽管执行示例性函数F和G所需的处理能力可能不大,但应当理解,当执行复杂程序时,可能丢失大量的数据并且可需要第二次执行大量的处理来抵达函数F和/或G的执行曾被中断的点。当执行诸如例如建模和模拟之类的复杂的编程任务时,丢失的工作的量可能特别大。
在一些实施例中,可将附加代码插入到程序中以允许在被称为“检查点”的各个点存储程序的运行状态。可包含代码,用于通过保存关于哪些函数正运行的指示来跟踪程序栈。可还包括代码,用于存储函数所使用的局部变量以及用于保存函数内的在执行中已到达的行的指示。这些类型的代码的添加通过调用在检查点处正在运行的一个或多个函数、加载该函数正使用的局部变量、以及跳过函数在中断前已被执行的部分,可允许重建程序。
图1显示了软件模块100的示例,软件模块100包括用于执行计算机程序的函数F的操作以及用于允许恢复程序执行的计算机可读指令。软件模块100的计算机可读指令允许跟踪程序内函数执行的状态、保存程序执行期间在各检查点处函数所使用的数据、以及当程序中断时从检查点恢复函数的执行。在图1的示例中,软件模块100包括帮助器代码102、函数前言(preamble)104、用于执行函数F的操作的函数代码106、调用位置标签代码(call site label code)108,以及函数结尾110。
帮助器代码102可包括定义用于保存函数F的局部变量和输入自变量的数据结构的代码112。帮助器代码102还可包括代码114和代码116,代码114定义用于保存函数F的数据的保存函数,代码116定义用于从存储器中加载函数F的数据的加载函数。保存函数将所保存的变量附加到检查点文件。加载函数从检查点文件中的当前点加载变量并使文件指针向前。尽管为了例示概念的目的显示为软件代码,但可以理解的是,帮助器代码102和此处所描述的任何其它代码可被实现为对象代码,或任何其它适当类型的代码。以下示出适合用于定义数据结构并提供保存和加载函数的帮助器代码102的示例。
图1中所示,函数前言104可包括代码118和代码120,代码118实例化用于函数F的局部变量的数据结构对象,代码120用于通过使用push()函数保存正被执行的函数F的指示来跟踪程序栈。函数前言104还可包括能够从检查点重建函数F的执行的代码122。如果函数F的执行正被重建,执行代码124来加载曾在检查点保存的函数F的局部变量。代码126被执行以跳过函数F中在抵达检查点之前已执行过的部分。例如,如果当程序的执行被中断时函数G正在函数F的范围内执行,代码126可跳至函数F的调用函数G的行。以下显示可用于一些实施例中的函数前言104的示例。
如图1所示,包含函数代码106用于执行函数(例如函数F)的操作。虽然通过示例的方式讨论了函数F,此处所描述的函数可被用于任何执行计算机程序的一个或多个操作的函数。函数代码106可根据原始函数(例如函数F)的函数代码来重写,使得局部变量被存储在代码112所定义的数据结构中以便于在执行期间保存数据,使得如果需要重建函数F的执行时变量可稍后被加载。以下示出了用于一些实施例中的函数代码106的示例。
l.x=a*b;
如以上针对函数F所讨论的,变量x被设为等于积a·b。在函数代码106中,执行与函数F中相同的乘法运算,但是代码被修改使得结果被存储在代码112所定义的数据结构中,以便于如果函数需要被重建时重新加载局部变量。
如图1所示,调用位置标签代码130可包括标识函数F内在何处调用其它函数的代码。例如,函数F可调用另一函数G,并且调用位置标签代码130可标识函数F内函数G被调用的位置。代码132也被包括在函数F中用于调用函数G。以下示出了用于一些实施例中的调用位置标签函数代码130的示例。
FunctionCall1:
l.__CallSite=1;
l.y=G(l.x,b);
在这点处,可包括附加函数代码106,如以下所示,附加函数代码106可被执行以计算变量x和y的和,如以上函数F所示。
int temp=l.x+l.y;
如图1中所示,函数结尾110可包括代码134用于在函数F的执行将要完成时使用pop()函数来更新对程序栈的跟踪。函数尾声110还可包括代码136用于通过函数F返回数据。以下显示可用于一些实施例中的函数尾声110的示例。
以下代码定义了“Checkpoint(检查点)”类的示例,其具有LoadLocals()和SaveLocals()的实现,LoadLocals()和SaveLocals()进一步被“Locals”对象的Load()和Save()方法所使用。
II.在检查点保存程序状态的示例
图2显示了执行程序并在各个检查点保存程序状态的方法200的示例。为了保存程序状态,局部对象的栈可被遍历并且每个对象可依次被保存。程序的执行开始于步骤202。在步骤203,抵达检查点时机,此处程序具有对保存程序的状态选项。程序可在步骤203做出决定是否利用该检查点机会来保存程序状态。可基于从上次检查点以来经过的时间量,或其它任何适当的标准,来做出程序是否使用该检查点机会的决定。在一些情况下,用户可明确请求检查点。在保存程序状态的频率和程序的性能之间存在权衡。增加保存程序状态的频率可限制数据丢失的量,但可引起降低的程序性能。把握检查点机会的频率可随着应用而改变。
如果程序决定使用该检查点机会来保存程序状态,该信息在步骤204中被保存。例如,程序可使用由帮助器代码102中的由代码114所定义的保存函数。如果程序决定不使用该检查点机会,则程序的执行在步骤206继续。程序的执行继续直到抵达下一检查点,在该点方法返回到步骤203的下一检查点机会。方法200可继续直至程序终止。
III.从检查点恢复程序执行的示例
图3显示根据一些实施例的用于从检查点恢复函数执行的方法300的流程图。在步骤302,在发生崩溃或其它故障之后重启程序。在步骤304,程序调用第一函数,诸如以上讨论的函数F。在步骤306从存储中加载在检查点保存的函数F的局部变量。在步骤308,程序跳到函数F的在检查点处曾在执行中的行,并且函数F的执行从那一点恢复。因此,步骤306和308便于当在检查点存储了程序状态时将函数F的执行恢复到该执行点。如果在该检查点处函数G曾在执行,程序可跳至函数F的调用函数G的行,并且随后在步骤310调用函数G。随后为函数G重复步骤306和308。从存储中加载曾在该检查点保存的函数G的局部变量,并且程序跳至函数G的在该检查点处曾在执行的行。如果在之前的函数的范围内没有其它曾在执行的函数,方法结束并且程序执行从该检查点继续。因此,程序的执行可从该检查点恢复而无需要求执行抵达该检查点之前、在程序的中断之前的所执行的所有操作。
IV.生成允许保存状态并从检查点恢复程序执行的代码
图4例示了根据一些实施例的用于修改代码以允许从检查点恢复程序的运行的方法。如上所讨论的,此处所描述的技术有利地能够被自动结合入程序中而无需程序员手动编码。诸如编译器之类的程序翻译工具可修改现有代码以允许从检查点恢复程序的运行。例如,在步骤402,编译器或其它程序翻译工具能够接收包括定义一个或多个函数的代码的程序代码。程序代码可被设计成执行任何适当的操作,因为此处所描述的技术不对程序所执行的操作的类型进行限制。作为一个示例,程序代码可包括定义函数F和G的代码,如以上所讨论的。在步骤404,用于执行函数F和G的代码被修改为允许程序从检查点恢复执行。例如,编译器或其它程序翻译工具可插入如以上所讨论的帮助器代码102、函数前言104、调用位置标签代码108、以及函数结尾110。检查点机会还可被插入在代码内的合适位置用于保存数据。函数代码106可被修改以利用数据结构来存储帮助器代码102中所定义的局部变量。如果编译器被用于执行方法400,所产生的结果可以是被配置成执行函数F和G的对象代码,具有允许在中断发生时从检查点恢复函数F和G的执行的附加能力。
V.应用程序
此处所描述的技术可提供错误容忍和失效备援方案,这对于具有长执行时间的程序可以是非常意义重大的。这是因为随着计算的规模增长而增加的丢失工作的成本。这些技术还可以对利用大量计算资源的分布式程序非常有用,因为当越多的硬件被用于执行计算,故障的可能性越高。新的计算机硬件中的趋势已经从每个下一代硬件指数式地更快这样的范例变为每个下一代具有指数式地更多计算核心这样的范例。此处所描述的技术可被用于允许使用运行在多个计算核心或一个群集的机器上的多线程程序来执行大量的计算工作。例如,该技术可被用于云技术环境,在云计算环境中多个机器和/或多个核心被涉及用于处理程序数据。
此处所描述的技术的优点是可在一个处理器/机器上启动程序,且随后在崩溃或其它故障发生时,处理可在另一处理器/机器上继续。如果一个处理器或机器故障,处理可以最小中断在另一处理器或机器上恢复。由于此处所描述的技术不要求操作系统的协作,因此在一些实施例中,处理可在运行不同操作系统的处理器/机器上继续。如果适当的版本被编译在新的体系结构上且检查点的文件格式是可跨体系结构移动的,则程序可运行在不同操作系统上。
图5显示了具有多个微处理器502和503的计算设备501的示例。当崩溃或中断执行的其它故障发生时,整个程序或程序线程可运行在微处理器502上。使用此处所描述的技术,程序或程序线程可使用表示程序的执行的状态的存储在永久存储器504中的数据在微处理器503上继续程序的执行。
图6显示包括具有微处理器602的计算设备601和具有微处理器604的计算设备603的计算环境的示例。当崩溃或中断执行的其它故障发生时,程序或程序线程可运行在微处理器602上。使用此处所描述的技术,程序或程序线程可在设备603的微处理器604上继续程序的执行。设备601和603可通过任何适当的通信连接来连接。设备501、601和603可以是任何适当的计算设备,诸如通用计算机或者例如此处所描述的其它设备。
至此描述了本发明的至少一个实施例的若干方面,可以理解,本领域的技术人员可容易地想到各种更改、修改和改进。
这样的更改、修改和改进旨在是本发明的一部分,且旨在处于本发明的精神和范围内。从而,上述描述和附图仅用作示例。
可以多种方式中的任一种来实现本发明的上述实施例。例如,可使用硬件、软件或其组合来实现各实施例。当使用软件实现时,该软件代码可在无论是在单个计算机中提供的还是在多个计算机之间分布的任何合适的处理器或处理器集合上执行。该处理器可被实现为集成电路,集成电路组件中具有一个或多个处理器。然而,可使用电路按照任何适合的方式来实现处理器。
此外,应当理解,计算机可以用多种形式中的任一种来具体化,如机架式计算机、台式计算机、膝上型计算机、或平板计算机。此外,计算机可以具体化在通常不被认为是计算机但具有合适的处理能力的设备中,包括个人数字助理(PDA)、智能电话、或任何其他适合的便携式或固定电子设备。
同样,计算机可以具有一个或多个输入和输出设备。这些设备主要可用于呈现用户界面。可用于提供用户界面的输出设备的示例包括用于可视地呈现输出的打印机或显示屏和用于可听地呈现输出的扬声器或其他声音生成设备。可用于用户界面的输入设备的示例包括键盘和诸如鼠标、触摸板和数字化输入板等定点设备。作为另一示例,计算机可以通过语音识别或以其他可听格式来接收输入信息。
这些计算机可以通过任何合适形式的一个或多个网络来互连,包括作为局域网或广域网,如企业网络或因特网。这些网络可以基于任何合适的技术并可以根据任何合适的协议来操作,并且可以包括无线网络、有线网络或光纤网络。
而且,此处略述的各种方法或过程可被编码为可在采用各种操作系统或平台中任何一种的一个或多个处理器上执行的软件。此外,这样的软件可使用多种合适的程序设计语言和/或程序设计或脚本工具中的任何一种来编写,而且它们还可被编译为可执行机器语言代码或在框架或虚拟机上执行的中间代码。
就此,本发明可被具体化为用一个或多个程序编码的一个计算机可读存储介质(或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘、紧致盘(CD)、光盘、数字视频盘(DVD)、磁带、闪存、现场可编程门阵列或其他半导体器件中的电路配置、或其他非瞬态的有形计算机存储介质),当这些程序在一个或多个计算机或其他处理器上执行时,它们执行实现本发明的上述各个实施例的方法。计算机可读存储介质或媒质可以是可转移的,使得其上存储的一个或多个程序可被加载到一个或多个不同的计算机或其它处理器上以便实现本发明上述的各个方面。如此处所使用的,术语“非瞬态计算机可读存储介质”只包含可被认为是产品(即,制品)或机器的计算机可读介质。可替代地或附加地,本发明可以体现为除了计算机可读存储介质以外的计算机可读截止,比如传播信号。
此处以一般的意义使用术语“程序”或“软件”来指可被用来对计算机或其他处理器编程以实现本发明上述的各个方面的任何类型的计算机代码或计算机可执行指令集。另外,应当理解,根据本实施例的一个方面,当被执行时实现本发明的方法的一个或多个计算机程序不必驻留在单个计算机或处理器上,而是可以按模块化的方式分布在多个不同的计算机或处理器之间以实现本发明的各方面。
计算机可执行指令可以具有可由一个或多个计算机或其他设备执行的各种形式,诸如程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可以按需在多个实施例中进行组合或分布。
本发明的各个方面可单独、组合或以未在前述实施例中特别讨论的各种安排来使用,从而并不将其应用限于前述描述中所述或附图形中所示的组件的细节和安排。例如,可使用任何方式将一个实施例中描述的各方面与其他实施例中描述的各方面组合。
同样,本发明可被具体化为方法,其示例已经提供。作为该方法的一部分所执行的动作可以按任何适合的方式来排序。因此,可以构建各个实施例,其中各动作以与所示的次序所不同的次序执行,不同的次序可包括同时执行某些动作,即使这些动作在各说明性实施例中被示为顺序动作。
在权利要求书中使用诸如“第一”、“第二”、“第三”等序数词来修饰权利要求元素本身并不意味着一个权利要求元素较之另一个权利要求元素的优先级、先后次序或顺序、或者方法的各动作执行的时间顺序,而仅用作将具有某一名字的一个权利要求元素与(若不是使用序数词则)具有同一名字的另一元素区分开的标签以区分各权利要求元素。
同样,此处所使用的短语和术语是出于描述的目的而不应被认为是限制。此处对“包括”、“包含”、或“具有”、“含有”、“涉及”及其变型的使用旨在包括其后所列的项目及其等效物以及其他项目。

Claims (9)

1.一种用于设置检查点并恢复程序状态的方法,包括:
接收(402)被配置成控制微处理器来执行一个或多个操作的第一计算机可读指令;
使用微处理器,基于所述第一计算机可读指令来生成(404)第二计算机可读指令,所述第二计算机可读指令被配置成执行一个或多个操作并且通过以下步骤来从检查点恢复函数的执行:
i)调用所述函数(304);
ii)加载数据供所述函数使用(306),在所述函数之前的执行期间所述数据已在所述检查点被保存;以及
iii)跳至所述函数的在所述函数之前的执行期间在所述检查点处曾在执行的行(308),所述函数的该行是所述函数中非所述函数的开始或结尾的一点,并且
其中生成所述第二计算机可读指令包括将附加指令添加至所述第一计算机可读指令,所述附加指令被配置成从检查点恢复所述函数的执行。
2.如权利要求1所述的方法,其特征在于,所述方法通过编译器来执行,所述编译器将包括所述第一计算机可读指令的源代码编译成包括所述第二计算机可读指令的对象代码。
3.如权利要求1所述的方法,其特征在于,所述第二计算机可读指令还被配置成保存所述函数所使用的数据(204)。
4.如权利要求1所述的方法,其特征在于,所述第二计算机可读指令还被配置成跟踪包括所述函数的程序的程序栈(120)。
5.一种用于设置检查点并恢复程序状态的系统,包括:
用于接收被配置成控制微处理器来执行一个或多个操作的第一计算机可读指令的装置;
用于使用微处理器,基于所述第一计算机可读指令来生成(404)第二计算机可读指令的装置,所述第二计算机可读指令被配置成执行一个或多个操作并且通过以下步骤从检查点恢复函数的执行:
i)调用所述函数;
ii)加载数据供所述函数使用,在所述函数之前的执行期间数据已在所述检查点被保存;
iii)跳至所述函数的在所述函数之前的执行期间在所述检查点处曾在执行的行,所述函数的该行是所述函数中非所述函数的开始或结尾的一点,并且
其中所述生成所述第二计算机可读指令的装置包括用于将附加指令添加至所述第一计算机可读指令的装置,所述附加指令被配置成从检查点恢复所述函数的执行。
6.如权利要求5所述的系统,其特征在于,所述微处理器包括第一微处理器(602)和第二微处理器(604)。
7.如权利要求6所述的系统,其特征在于,所述第一微处理器执行所述函数,并且,当使用所述第一微处理器(602)的函数的执行被中断时,所述函数的执行使用所述第二微处理器(604)从所述检查点继续。
8.如权利要求7所述的系统,其特征在于,所述第一微处理器(602)被包括在第一设备(601)中;以及
所述第二微处理器(604)被包括在第二设备(603)中。
9.如权利要求8所述的系统,其特征在于所述第一设备运行第一操作系统并且所述第二设备运行与所述第一操作系统不同的第二操作系统。
CN201110428259.2A 2010-12-20 2011-12-19 用于设置检查点并恢复程序状态的方法 Active CN102736948B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/972,792 US9740562B2 (en) 2010-12-20 2010-12-20 Method for checkpointing and restoring program state
US12/972,792 2010-12-20

Publications (2)

Publication Number Publication Date
CN102736948A CN102736948A (zh) 2012-10-17
CN102736948B true CN102736948B (zh) 2015-04-01

Family

ID=46236230

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110428259.2A Active CN102736948B (zh) 2010-12-20 2011-12-19 用于设置检查点并恢复程序状态的方法

Country Status (8)

Country Link
US (1) US9740562B2 (zh)
EP (1) EP2656217A4 (zh)
JP (1) JP6027020B2 (zh)
KR (1) KR101903805B1 (zh)
CN (1) CN102736948B (zh)
CA (1) CA2821522A1 (zh)
HK (1) HK1175005A1 (zh)
WO (1) WO2012088171A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108241543A (zh) * 2016-12-30 2018-07-03 深圳壹账通智能科技有限公司 业务操作断点执行的方法、业务服务器及系统

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US9384019B2 (en) * 2014-03-25 2016-07-05 International Business Machines Corporation Dynamic code injection
JP6691294B2 (ja) * 2016-06-13 2020-04-28 富士通株式会社 情報処理装置、ダイナミックリンクプログラムおよびプログラム再開方法
US10782950B2 (en) * 2018-05-01 2020-09-22 Amazon Technologies, Inc. Function portability for services hubs using a function checkpoint
US10853178B1 (en) * 2018-05-18 2020-12-01 Amazon Technologies, Inc. Code function checkpoint and restore
EP3605374A1 (en) 2018-08-03 2020-02-05 Hewlett-Packard Development Company, L.P. Intrusion resilient applications
WO2020146011A1 (en) * 2019-01-10 2020-07-16 Mentor Graphics Corporation Software checkpoint-restoration between distinctly compiled executables
US11368470B2 (en) * 2019-06-13 2022-06-21 International Business Machines Corporation Real-time alert reasoning and priority-based campaign discovery
CN111198689B (zh) * 2019-12-30 2023-04-28 北京明略软件系统有限公司 一种代码执行方法、装置及计算机可读存储介质
CN113778742A (zh) * 2020-06-09 2021-12-10 华为技术有限公司 程序执行方法,程序处理方法以及相关设备
US11467850B2 (en) 2020-11-11 2022-10-11 Micron Technology, Inc. Computing device reboot
CN113127248B (zh) * 2021-04-02 2022-08-09 清华大学 面向机器人ros程序的自动崩溃恢复方法和系统
US11899546B2 (en) 2022-05-26 2024-02-13 Red Hat, Inc. Portability of checkpoints of an application using central processing unit (CPU)-specific functions
KR102625338B1 (ko) * 2023-03-06 2024-01-15 주식회사 모레 인공지능 연산과 연관된 호출 목록 병렬 처리 방법및 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044475A (en) * 1995-06-16 2000-03-28 Lucent Technologies, Inc. Checkpoint and restoration systems for execution control

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6154877A (en) 1997-07-03 2000-11-28 The University Of Iowa Research Foundation Method and apparatus for portable checkpointing using data structure metrics and conversion functions
US6161219A (en) 1997-07-03 2000-12-12 The University Of Iowa Research Foundation System and method for providing checkpointing with precompile directives and supporting software to produce checkpoints, independent of environment constraints
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
US6256751B1 (en) 1998-10-29 2001-07-03 International Business Machines Corporation Restoring checkpointed processes without restoring attributes of external data referenced by the processes
US7814309B1 (en) * 2000-02-29 2010-10-12 Cisco Technology, Inc. Method for checkpointing and reconstructing separated but interrelated data
US7240334B1 (en) * 2000-06-29 2007-07-03 International Business Machines Corporation Methods, systems, and computer program products for deferred computer program tracing
US6708288B1 (en) * 2000-10-31 2004-03-16 Hewlett-Packard Development Company, L.P. Compiler-based checkpointing for support of error recovery
US6874138B1 (en) * 2000-11-28 2005-03-29 Hewlett-Packard Development Company, L.P. Method and apparatus for resuming execution of a failed computer program
US6766471B2 (en) 2000-12-28 2004-07-20 International Business Machines Corporation User-level checkpoint and restart for groups of processes
US6817014B2 (en) * 2001-04-11 2004-11-09 Hewlett-Packard Development Company, L.P. Analysis of executable program code using compiler-generated function entry points and endpoints with other sources of function entry points and endpoints
US20030088807A1 (en) * 2001-11-07 2003-05-08 Mathiske Bernd J.W. Method and apparatus for facilitating checkpointing of an application through an interceptor library
US7206964B2 (en) * 2002-08-30 2007-04-17 Availigent, Inc. Consistent asynchronous checkpointing of multithreaded application programs based on semi-active or passive replication
US20040260678A1 (en) 2003-06-18 2004-12-23 Microsoft Corporation State based configuration failure detection using checkpoint comparison
US7536591B2 (en) 2003-11-17 2009-05-19 Virginia Tech Intellectual Properties, Inc. Transparent checkpointing and process migration in a distributed system
US7275183B2 (en) * 2004-04-30 2007-09-25 Hewlett-Packard Development Company, L.P. Method of restoring processes within process domain
US7634687B2 (en) 2005-01-13 2009-12-15 Microsoft Corporation Checkpoint restart system and method
FR2881246B1 (fr) * 2005-01-21 2007-03-23 Meiosys Soc Par Actions Simpli Procede perdictif de gestion, de journalisation ou de rejeu d'operations non deterministes au sein du deroulement d'un processus applicatif
US20060206873A1 (en) * 2005-03-11 2006-09-14 Argade Pramod V Environment for run control of computer programs
US7711988B2 (en) * 2005-06-15 2010-05-04 The Board Of Trustees Of The University Of Illinois Architecture support system and method for memory monitoring
US8082468B1 (en) * 2008-12-15 2011-12-20 Open Invention Networks, Llc Method and system for providing coordinated checkpointing to a group of independent computer applications
US8255745B2 (en) * 2005-08-29 2012-08-28 The Invention Science Fund I, Llc Hardware-error tolerant computing
US7673181B1 (en) 2006-06-07 2010-03-02 Replay Solutions, Inc. Detecting race conditions in computer programs
US7810081B2 (en) * 2006-08-22 2010-10-05 International Business Machines Corporation Compilation error isolation, optimization and resolution
US7669081B2 (en) 2006-09-27 2010-02-23 Raytheon Company Systems and methods for scheduling, processing, and monitoring tasks
CA2667172C (en) * 2006-10-20 2013-01-08 Her Majesty The Queen, In Right Of Canada As Represented By The Minister Of Health Through The Public Health Agency Of Canada Method and apparatus for software policy management
US8214806B2 (en) * 2007-05-09 2012-07-03 International Business Machines Corporation Iterative, non-uniform profiling method for automatically refining performance bottleneck regions in scientific code
US7818610B2 (en) * 2007-09-27 2010-10-19 Microsoft Corporation Rapid crash recovery for flash storage
US8495573B2 (en) * 2007-10-04 2013-07-23 International Business Machines Corporation Checkpoint and restartable applications and system services
US7793153B2 (en) * 2008-01-11 2010-09-07 International Business Machines Corporation Checkpointing and restoring user space data structures used by an application
US8510757B2 (en) * 2008-01-11 2013-08-13 Google Inc. Gathering pages allocated to an application to include in checkpoint information
US20090254888A1 (en) * 2008-04-07 2009-10-08 International Business Machines Corporation Debug tours for software debugging
US8533663B2 (en) * 2008-05-12 2013-09-10 Oracle America, Inc. System and method for utilizing available best effort hardware mechanisms for supporting transactional memory
US8291383B1 (en) * 2008-10-20 2012-10-16 Google Inc. Code analysis via dual branch exploration
US20100153776A1 (en) * 2008-12-12 2010-06-17 Sun Microsystems, Inc. Using safepoints to provide precise exception semantics for a virtual machine
US9021502B2 (en) * 2008-12-29 2015-04-28 Oracle America Inc. Method and system for inter-thread communication using processor messaging
US7945808B2 (en) * 2009-01-30 2011-05-17 International Business Machines Corporation Fanout connectivity structure for use in facilitating processing within a parallel computing environment
US9940138B2 (en) * 2009-04-08 2018-04-10 Intel Corporation Utilization of register checkpointing mechanism with pointer swapping to resolve multithreading mis-speculations
US8949801B2 (en) * 2009-05-13 2015-02-03 International Business Machines Corporation Failure recovery for stream processing applications
US8392694B2 (en) * 2009-09-15 2013-03-05 International Business Machines Corporation System and method for software initiated checkpoint operations
US8745597B2 (en) * 2009-11-25 2014-06-03 International Business Machines Corporation Providing programming support to debuggers

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044475A (en) * 1995-06-16 2000-03-28 Lucent Technologies, Inc. Checkpoint and restoration systems for execution control

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Checkpointing-based rollback recovery for parallel applications on the InteGrade grid middleware;Raphael Y. de Camargo, Andrei Goldchleger, Fabio Kon, Alfredo;《Proceedings of the 2nd workshop on Middleware for grid computing》;20041031;第4.2节,4.2.1节 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108241543A (zh) * 2016-12-30 2018-07-03 深圳壹账通智能科技有限公司 业务操作断点执行的方法、业务服务器及系统
CN108241543B (zh) * 2016-12-30 2020-07-07 深圳壹账通智能科技有限公司 业务操作断点执行的方法、业务服务器及系统

Also Published As

Publication number Publication date
EP2656217A2 (en) 2013-10-30
HK1175005A1 (zh) 2013-06-21
US20120159462A1 (en) 2012-06-21
WO2012088171A2 (en) 2012-06-28
JP2014500564A (ja) 2014-01-09
WO2012088171A3 (en) 2012-10-26
KR20140000283A (ko) 2014-01-02
JP6027020B2 (ja) 2016-11-16
CN102736948A (zh) 2012-10-17
KR101903805B1 (ko) 2018-10-02
US9740562B2 (en) 2017-08-22
CA2821522A1 (en) 2012-06-28
EP2656217A4 (en) 2014-07-09

Similar Documents

Publication Publication Date Title
CN102736948B (zh) 用于设置检查点并恢复程序状态的方法
US20100146481A1 (en) Developing applications at runtime
CN1838088B (zh) 探测具有限制性调用约定代码的方法
CN110603527B (zh) 用于服务器侧生产代码的条件调试的方法、系统和设备
MX2008011914A (es) Modelo de ejecucion abstracto durante un meta-tiempo de funcionamiento basado en continuacion.
US9841953B2 (en) Pluggable components for runtime-image generation
CN102609296A (zh) 虚拟机分支和并行执行
JP2009532758A (ja) ワークフローにおいて継続をモデル化するフレームワーク
CN113811852A (zh) 依赖性版本冲突自动解决
CN104267978A (zh) 一种生成差分包的方法及装置
CN109491664B (zh) iOS应用程序的生成方法、装置、设备及存储介质
Huang et al. A framework for reliability-aware embedded system design on multiprocessor platforms
CN110333867B (zh) 一种多方安全计算数据处理方法、装置及系统
CN110781126A (zh) 一种TensorFlow的FPGA异构加速实现方法、系统、终端及存储介质
CN108399068B (zh) 函数程序持久化的方法、电子设备及存储介质
US10496433B2 (en) Modification of context saving functions
Fanfarillo et al. Resilient computational applications using Coarray Fortran
Aparicio-Morales et al. Minimizing Deployment Cost of Hybrid Applications
EP3906470B1 (en) Techniques for scheduling instructions in compiling source code
CN115629795A (zh) 一种可执行文件的配置方法、装置及电子设备
US9298449B2 (en) Composite program history
US20050005087A1 (en) System and method for memory management
US20230297346A1 (en) Intelligent data processing system with metadata generation from iterative data analysis
Tounaka et al. Unicage Architecture Development Method
US9928045B2 (en) Information processing apparatus, compile method and non-transitory recording medium storing compile program

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1175005

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150731

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150731

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1175005

Country of ref document: HK