Compiler Checkpointing for OS-Independent Program Recovery

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing techniques for restoring program execution from a point of interruption require cooperation from the operating system, which is not available in all operating systems, making it challenging to implement without manual programming efforts for application developers.

Innovation Solution

A flexible framework at the program level is developed to enable checkpointing and restoration of program execution without operating system cooperation, using automated tools to modify existing code and incorporate instructions for saving and resuming program execution from a checkpoint.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If operating system cooperation is required for program restoration, then restoration capability is provided, but compatibility with operating systems lacking such capability is lost

Engineering Contradiction:
Improveprogram restoration capabilityVSAvoidoperating system compatibility
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The patent introduces a compiler as an intermediary tool that translates source code into executable code with embedded checkpointing instructions. This compiler acts as a mediator between the programmer's intent and the operating system's capabilities, enabling checkpointing functionality to be implemented at the application level without requiring operating system support. The compiler inserts special instructions that create checkpoint data structures and restore points independently of the operating system's native capabilities.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If manual programming is required to implement checkpointing capability, then program restoration is enabled, but development time and complexity increase

Engineering Contradiction:
Improveprogram restoration capabilityVSAvoidprogram development effort
Core Design Contradiction:
ReliabilityVSEase of manufacture

Solution Approach 1:

The patent implements checkpointing capability during the compilation phase, which is a preliminary action performed before program execution. The compiler automatically inserts checkpointing instructions, creates data structures for storing program state, and generates restore points without requiring the programmer to manually code these features. This preliminary automation of checkpointing implementation significantly reduces development effort while ensuring reliable program restoration capability.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If checkpointing is implemented at the application level, then operating system independence is achieved, but implementation complexity increases

Engineering Contradiction:
Improveoperating system independenceVSAvoidimplementation complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent extracts the checkpointing functionality from the operating system layer and implements it at the application level through compiler-generated code. By taking out the dependency on operating system-specific restoration capabilities and embedding checkpointing instructions directly in the application code, the system achieves operating system independence. The complexity is managed by automating the extraction process through the compiler rather than requiring manual implementation.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS9740562B2Method for checkpointing and restoring program state
Publication Date: 2017.08.22 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9740562B2 patent drawing
  • US9740562B2 patent drawing
  • US9740562B2 patent drawing

AI summary

Techniques are described that enable restoring interrupted program execution from a checkpoint without the need for cooperation from the computer's operating system. These techniques can be implemented by modifying existing code using an automated tool that adds instructions for enabling restoring interrupted program execution.