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
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 |