Dynamic In-Memory Program Update via Incremental Function Patching

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for updating computer programs require a cold restart, leading to downtime and inefficiency, especially for long-running programs like operating systems or middleware, where frequent updates are hindered by significant time and cost, and existing dynamic program update approaches like DYMOS and Ksplice still interrupt program execution with "Stop The World" scenarios.

Innovation Solution

The method involves identifying specific target functions within a computer program, updating specific sections of these functions with incremental information to generate updated copies, allowing the program to be updated dynamically while running without interruption, thereby reducing downtime and increasing efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If cold restart is used to update computer program, then update can be completed, but program execution is interrupted and downtime occurs

Engineering Contradiction:
Improveprogram update completionVSAvoiddowntime
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the program update process into incremental sections that can be applied independently. Instead of requiring a complete cold restart, the update is divided into manageable sections that can be integrated into the running program, allowing continuous execution while applying updates incrementally

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent prepares updated sections of the program in advance before they are needed. The incremental update information is generated and ready beforehand, allowing it to be applied seamlessly when the program needs updating, avoiding interruption of execution

Inventive Principle:
Principle #10Preliminary action

2Loss of time

If hot patch capability is used to update computer program, then program execution can continue, but update capability is limited to specific extensions only

Engineering Contradiction:
Improvedowntime reductionVSAvoidupdate applicability
Core Design Contradiction:
Loss of timeVSAdaptability or versatility

Solution Approach 1:

The patent creates a universal incremental update mechanism that can apply to any section of any computer program, not just specific extensions. The system generates incremental update information that can be applied to functions, procedures, or any executable code section, making the hot patch capability universally applicable across different program types and structures

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Productivity

If incremental update is applied to running program, then downtime is reduced, but system complexity increases

Engineering Contradiction:
Improveupdate efficiencyVSAvoidupdate mechanism complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent implements a self-service update mechanism where the system automatically generates incremental update information, identifies the sections needing updates, and applies them without requiring complex external intervention. The program essentially updates itself by comparing current state with desired state and applying only the necessary incremental changes

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS11928460B2Dynamic update of a computer program in memory
Publication Date: 2024.03.12 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US11928460B2 patent drawing
  • US11928460B2 patent drawing
  • US11928460B2 patent drawing

AI summary

Embodiments of the present disclosure relate to a method, system, and computer program product for dynamic update of a computer program in memory. According to the method, one or more processors obtain incremental information, the incremental information specifying an incremental update to at least one section of at least one target function in a computer program. One or more processors identify, based on the incremental information, the at least one target function to be updated from the computer program. One or more processors generate at least one updated copy of the at least one target function by updating the at least one section of the at least one target function based on the incremental information. One or more processors update the computer program based on the at least one updated copy of the at least one target function while the computer program is running.