Dynamic Shared Library Loading for Memory Conservation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Deploying new software applications in information handling systems often requires updating the target software stack, which can be intrusive and wasteful in terms of memory usage, especially when redundant libraries are loaded into volatile memory.

Innovation Solution

Deploying new software application features as dynamically-loadable executable packages that can be executed with or without dependent shared libraries, leveraging non-volatile memory to conserve scarce volatile memory space by selectively loading only needed libraries.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If updated shared libraries are dynamically linked to the application, then the application can use the latest library versions, but the installation of additional library packages becomes intrusive to system stability and other applications

Engineering Contradiction:
Improvelibrary version compatibilityVSAvoidsystem stability
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent segments the library dependency resolution into two independent paths: (1) a static embedding path where library code is copied into the application image, and (2) a dynamic linking path where existing shared libraries are referenced at runtime. This segmentation allows the system to choose the appropriate path based on whether libraries are already available in the target stack, avoiding intrusive updates while maintaining compatibility.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary mechanism (the runtime loader with embedded file system image) that mediates between the application's library needs and the system's existing library stack. This intermediary can selectively extract and embed only the necessary library portions into the application image, acting as a buffer that prevents direct modification of system-wide library packages and thus maintains system stability.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If updated shared libraries are statically linked to the application, then the dynamically-linked shared libraries do not have to be updated, but the runtime memory usage increases when libraries are already available in the target stack

Engineering Contradiction:
Improvesoftware stack stabilityVSAvoidruntime memory usage
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent makes the library loading approach dynamic rather than static. The runtime loader examines whether the required shared libraries are already present in the target stack's shared memory space. If they are available, the loader references them dynamically without embedding copies. If they are not available, the loader extracts and embeds the necessary library code into the application image. This dynamic decision-making optimizes memory usage while ensuring reliability.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent changes the parameter of library loading based on availability conditions. When libraries are already in the target stack, the system uses dynamic referencing (lower memory overhead). When libraries are missing, the system switches to embedding (ensuring self-containment). This parameter change based on runtime conditions resolves the contradiction between memory efficiency and reliability.

Inventive Principle:
Principle #35Parameter changes

3Ease of operation

If all dependent shared libraries are embedded into the application image, then the application is self-contained and can execute without external libraries, but redundant libraries are loaded into volatile memory wasting scarce memory space

Engineering Contradiction:
Improveapplication executabilityVSAvoidvolatile memory consumption
Core Design Contradiction:
Ease of operationVSQuantity of substance

Solution Approach 1:

The patent applies partial action by embedding only the necessary library portions into the application image rather than all possible libraries. The runtime loader determines which libraries are actually needed by the application and embeds only those, avoiding the excessive action of embedding every possible library. This partial embedding approach ensures executability while minimizing redundant memory consumption.

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The patent extracts only the essential library code from the full library packages and embeds just those portions into the application image. The runtime loader identifies the minimal set of library functions required by the application and extracts only those, leaving the rest of the library packages unused. This extraction approach enables self-containment while avoiding the waste of loading redundant libraries into volatile memory.

Inventive Principle:
Principle #2Taking out (Extraction)

Data Source

PatentUS9104504B2Systems and methods for embedded shared libraries in an executable image
Publication Date: 2015.08.11 DELL PROD LP
  • US9104504B2 patent drawing
  • US9104504B2 patent drawing
  • US9104504B2 patent drawing

AI summary

Systems and methods are provided for deploying new software application features as a dynamically-loadable executable package including one or more dynamically-linked shared dependent libraries. The dynamically-loadable executable package may be capable of being loaded into volatile memory and executed in an information handling system environment with or without the dependent shared libraries, and without duplicating the presence or use of redundant shared libraries that may be already present on the existing software stack.