← Back to Patent Explorer
US6161219A Expired / Lapsed US ⏱️ 0.0 years remaining

System and method for providing checkpointing with precompile directives and supporting software to produce checkpoints, independent of environment constraints

Assignee: University of Iowa Research Foundation
•
Filing: 1997-07-03
•
Granted: 2000-12-12
•
Expires: 2017-07-03
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method for portable checkpointing comprising the steps of: pre-compiling an input source code; and outputting an associated output source code which includes support for portable checkpointing. The portability of the checkpoints allows migration between systems with different hardware, software, and operating systems. The portable checkpoints are stored in a Universal Code Format (UCF) and are selectively activated at the next potential checkpoint marker after a MinTBC (Minimum Time Between Checkpoints) timer expires.

Inventors

  • 👤 Balkrishna Ramkumar
  • 👤 Volker Strumpen

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-02 04:14
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/07; G06F11/14; G06F11/1402; G06F11/1415; G06F11/1438

Claims Analysis

Total Claims: 56
Claim 1
Independent Claim 92 words
A method for portable checkpointing comprising the steps of: pre-compiling an input source code of a selected programming language; and outputting an associated output source code which includes support for portable checkpointing, wherein the portable checkpointing provides a first portable checkpoint, and wherein said associated output source code using the first portable checkpoint can be executed on a destination platform that is not limited by (a) programming language restrictions of the selected programming language, (b) operating system level variations and (c) processor restrictions including memory page size, firmware byte-ordering and word size.
Claim 2
Independent Claim 92 words
A method for portable checkpointing comprising the steps of: pre-compiling an input source code of a selected programming language; and outputting an associated output source code which includes support for portable checkpointing, wherein the portable checkpointing provides a first portable checkpoint, and wherein said associated output source code using the first portable checkpoint can be executed on a destination platform that is not limited by (a) programming language restrictions of the selected programming language, (b) operating system level variations and (c) processor restrictions including memory page size, firmware byte-ordering and word size.
Claim 3
Dependent Claim 31 words
The method for portable checkpointing of claim 1, comprising the further step of: inserting markers for the support of portable checkpointing in original source code to produce the input source code.
Claim 4
Dependent Claim 23 words
The method for portable checkpointing of claim 1, comprising the further step of: compiling the associated output source code to produce executable code.
Claim 5
Dependent Claim 21 words
The method for portable checkpointing of claim 3, comprising the further steps of: executing the executable code; and producing portable checkpoints.
Claim 6
Dependent Claim 39 words
The method for portable checkpointing of claim 4, wherein said step of producing includes producing the portable checkpoints at checkpoint times, and wherein consecutive checkpoint times are spaced at greater than or equal to a minimum time between checkpoints.
Claim 7
Dependent Claim 22 words
The method for portable checkpointing of claim 4, wherein said step of producing includes selective activation of the portable checkpoints at runtime.
Claim 8
Dependent Claim 18 words
The method for portable checkpointing of claim 4, wherein the portable checkpoints are in a universal checkpoint format.
Claim 9
Dependent Claim 20 words
The method for portable checkpointing of claim 4, wherein each of the portable checkpoints is a contiguous area of memory.
Claim 10
Dependent Claim 43 words
The method for portable checkpointing of claim 4, wherein each of the portable checkpoints is a shadow stack, wherein the shadow stack is a data structure that maintains global variables, dynamically allocated variables and automatic stack variables defining the state of executing code.
Claim 11
Dependent Claim 17 words
The method for portable checkpointing of claim 4, wherein the portable checkpoints are minimal overhead portable checkpoints.
Claim 12
Dependent Claim 19 words
The method for portable checkpointing of claim 3, wherein the portable checkpointing is portable across at least two compilers.
Claim 13
Dependent Claim 46 words
The method for portable checkpointing of claim 1, wherein the portable checkpointing is portable across operating systems, wherein the operating systems (OSs) include at least two of a command driven compatible OS, a DOS compatible OS, a windows environment compatible OS and a network compatible OS.
Claim 14
Dependent Claim 37 words
The method for portable checkpointing of claim 12, wherein the command driven compatible OS includes Unix™ OS implementations and variants thereof, and wherein the windows environment compatible OS includes MacIntosh™ compatible OS and Windows `95™ compatible OS.
Claim 15
Dependent Claim 33 words
The method for recovering of claim 1, wherein the portable checkpoints are in a universal checkpoint format, wherein the universal checkpoint format can be adapted to the selected OS and the selected processor.
Claim 16
Dependent Claim 25 words
The method for portable checkpointing of claim 1, wherein the first portable checkpoint defines a state of an executing process of the output source code.
Claim 17
Dependent Claim 19 words
The method for portable checkpointing of claim 1, wherein the input source code includes a general-purpose programming language code.
Claim 18
Dependent Claim 25 words
The method for portable checkpointing of claim 1, wherein the pre-compiling step can compile one of C code, C++ code, Fortran code, and Java™ code.
Claim 19
Dependent Claim 19 words
The method for portable checkpointing of claim 1, wherein the support for portable checkpointing includes padding for data compatibility.
Claim 20
Dependent Claim 22 words
The method for portable checkpointing of claim 1, wherein the support for portable checkpointing includes jump tables at the entry of functions.
Claim 21
Dependent Claim 20 words
The method for portable checkpointing of claim 1, wherein the support for portable checkpointing includes function call wrappers in functions.
Claim 22
Dependent Claim 15 words
The method for portable checkpointing of claim 1, wherein the input source code includes call-by-reference.
Claim 23
Dependent Claim 39 words
The method for portable checkpointing of claim 1, wherein the pre-compiling and outputting steps can output source executable on two of a RISC compatible processor, an x86-family compatible processor, an alpha-compatible processor, and a multiprocessing compatible processor hardware platform.
Claim 24
Independent Claim 93 words
An system for portable checkpointing, comprising: a marker inserter for receiving a selected language source code, and inserting markers for support of portable checkpointing to produce input source code; and a pre-compiler, coupled to said marker inserter, for pre-compiling the input source code and outputting an associated output source code that includes the support of portable checkpointing, wherein the support for portable checkpointing in the associated output source code is selectively executable on each of a RISC compatible processor, an x86-family compatible processor, an alpha-compatible processor, and a multiprocessing compatible processor hardware platform.
Claim 25
Independent Claim 93 words
An system for portable checkpointing, comprising: a marker inserter for receiving a selected language source code, and inserting markers for support of portable checkpointing to produce input source code; and a pre-compiler, coupled to said marker inserter, for pre-compiling the input source code and outputting an associated output source code that includes the support of portable checkpointing, wherein the support for portable checkpointing in the associated output source code is selectively executable on each of a RISC compatible processor, an x86-family compatible processor, an alpha-compatible processor, and a multiprocessing compatible processor hardware platform.
Claim 26
Dependent Claim 27 words
The apparatus for portable checkpointing of claim 23, further comprising: a compiler, coupled to said pre-compiler, for compiling the associated output source code to produce executable code.
Claim 27
Dependent Claim 19 words
The apparatus for portable checkpointing of claim 23, wherein the portable checkpointing is portable across at least two compilers.
Claim 28
Dependent Claim 17 words
The apparatus for portable checkpointing of claim 23, wherein the portable checkpointing is portable across operating systems.
Claim 29
Dependent Claim 17 words
The apparatus for portable checkpointing of claim 23, wherein the portable checkpointing is portable across hardware platforms.
Claim 30
Dependent Claim 18 words
The apparatus for portable checkpointing of claim 23, wherein the portable checkpointing is in a universal checkpoint format.
Claim 31
Dependent Claim 18 words
The apparatus for portable checkpointing of claim 23, wherein the portable checkpointing uses a contiguous area of memory.
Claim 32
Dependent Claim 16 words
The apparatus for portable checkpointing of claim 23, wherein the portable checkpointing uses a shadow stack.
Claim 33
Dependent Claim 19 words
The method for portable checkpointing of claim 23, wherein multiplatforms include various off-the-shelf operating system and off-the-shelf processor combinations.
Claim 34
Independent Claim 60 words
An apparatus for general purpose checkpointing, comprising: a pre-compiler for pre-compiling an input source code that is independent of application semantics and outputting an associated output source code which includes support of portable checkpointing and the generation of portable checkpoints, wherein the associated output source code that includes support for portable checkpointing can regenerate memory that was dynamically-allocated during execution.
Claim 35
Independent Claim 60 words
An apparatus for general purpose checkpointing, comprising: a pre-compiler for pre-compiling an input source code that is independent of application semantics and outputting an associated output source code which includes support of portable checkpointing and the generation of portable checkpoints, wherein the associated output source code that includes support for portable checkpointing can regenerate memory that was dynamically-allocated during execution.
Claim 36
Dependent Claim 47 words
The apparatus for portable checkpointing of claim 32, wherein the associated output source code that includes the support of portable checkpointing is processor independent and can selectively compile with no modification to executable code of the input source code and execute on two processors that are binary-incompatible.
Claim 37
Dependent Claim 17 words
The method for portable checkpointing of claim 33, wherein binary-incompatible features of byte-ordering, word-ordering and word size.
Claim 38
Independent Claim 78 words
A method for selectively activating portable checkpointing in output source code which includes potential checkpoint markers, comprising the steps of: selectively activating, at run time, portable checkpointing at the next potential checkpoint marker; and producing an associated portable checkpoint in the output source code that is independent of operating system restrictions and processor restrictions including one of memory page size, firmware byte-ordering and word size for a destination operating system and processor that will execute the portable checkpoint.
Claim 39
Independent Claim 78 words
A method for selectively activating portable checkpointing in output source code which includes potential checkpoint markers, comprising the steps of: selectively activating, at run time, portable checkpointing at the next potential checkpoint marker; and producing an associated portable checkpoint in the output source code that is independent of operating system restrictions and processor restrictions including one of memory page size, firmware byte-ordering and word size for a destination operating system and processor that will execute the portable checkpoint.
Claim 40
Dependent Claim 29 words
The method of claim 35, comprising the further step of: saving the portable checkpoint to a stable storage, wherein the associated portable checkpoint is capable of regenerating dynamically-allocated memory.
Claim 41
Dependent Claim 22 words
The method of claim 36, comprising the further step of: waiting a minimum time between checkpoints before repeating said selectively activating step.
Claim 42
Dependent Claim 22 words
The method of claim 35, comprising the further step of: waiting a minimum time between checkpoints before repeating said selectively activating step.
Claim 43
Dependent Claim 18 words
The method of claim 35, wherein said waiting step is executed after the completion of said saving step.
Claim 44
Dependent Claim 16 words
The method of claim 35, wherein said waiting step is executed concurrently with said saving step.
Claim 45
Dependent Claim 12 words
The method of claim 40, wherein said saving step includes latency hiding.
Claim 46
Independent Claim 110 words
A method for checkpoint recovery using portable checkpoints, comprising the steps of: performing execution of an executable code with the portable checkpoints in a first operating system and processor platform; restarting the executable code on a second operating system and processor platform; loading a first portable checkpoint taken on the first operating system and processor platform onto the second operating system and processor platform; and resuming execution of the executable code on the second operating system and processor platform from a point in the executable code where the first portable checkpoint was taken, wherein the first portable checkpoint is independent of the first and second platforms executing the executable code.
Claim 47
Independent Claim 110 words
A method for checkpoint recovery using portable checkpoints, comprising the steps of: performing execution of an executable code with the portable checkpoints in a first operating system and processor platform; restarting the executable code on a second operating system and processor platform; loading a first portable checkpoint taken on the first operating system and processor platform onto the second operating system and processor platform; and resuming execution of the executable code on the second operating system and processor platform from a point in the executable code where the first portable checkpoint was taken, wherein the first portable checkpoint is independent of the first and second platforms executing the executable code.
Claim 48
Dependent Claim 16 words
The method for recovering of claim 42, wherein the portable checkpoints are fault tolerant portable checkpoints.
Claim 49
Dependent Claim 16 words
The method for recovering of claim 42, wherein the portable checkpoints are distributed processing portable checkpoints.
Claim 50
Dependent Claim 16 words
The method for recovering of claim 42, wherein the portable checkpoints are load balancing portable checkpoints.
Claim 51
Dependent Claim 18 words
The method for recovering of claim 42, wherein the portable checkpoints are suspension and subsequent execution portable checkpoints.
Claim 52
Dependent Claim 15 words
The method for recovering of claim 42, wherein the portable checkpoints are diagnostic portable checkpoints.
Claim 53
Dependent Claim 22 words
The method for recovering of claim 42, wherein said step of loading includes loading the recovery portable checkpoint into a shadow stack.
Claim 54
Dependent Claim 22 words
The method for recovering of claim 42, comprising the further step of: restoring at least one of data/bss, heap segment, and stack.
Claim 55
Dependent Claim 17 words
The method for recovering of claim 42, wherein the recovery portable checkpoint is a last portable checkpoint.
Claim 56
Dependent Claim 59 words
The method of claim 42, wherein the OS is selectable from each of a command driven compatible OS, a DOS compatible OS, a windows environment compatible OS and a network compatible OS, and wherein the processor is selectable from all of a RISC compatible processor, an x86-family compatible processor, an alpha-compatible processor, and a multiprocessing compatible processor hardware platform.

References Cited (Backward Citations)

US5146460A Cited
US5583988A Cited
US5440726A Cited
US5530802A Cited
US5590277A Cited
US5630047A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2003-12-12 2004-06-12 2004-12-12 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2007-12-12 2008-06-12 2008-12-12 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2011-12-12 2012-06-12 2012-12-12 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag