Auxiliary Variable Insertion for Data Consistency in Object Code

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Real-time applications face data inconsistency issues due to interfering functions accessing shared global variables, with existing solutions either causing delays or requiring extensive source code modifications and recompilation, especially when dealing with third-party object code and diverse high-level languages.

Innovation Solution

The method involves inserting initialization of an auxiliary variable directly into existing object code, allowing replacement of global variable accesses with auxiliary variable accesses, using a tool to identify interfering functions and prioritize replacements, and logging changes for transparency, applicable to any high-level language and without source code availability.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If exclusion technique is used to ensure data consistency, then data consistency is improved, but execution speed and real-time performance deteriorate due to unpredictable delays

Engineering Contradiction:
Improvedata consistencyVSAvoidexecution speed
Core Design Contradiction:
ReliabilityVSSpeed

Solution Approach 1:

The patent segments the variable access operations by creating separate access paths: critical sections use exclusion mechanisms while non-critical sections access variables directly without blocking. This segmentation allows the system to maintain data consistency for critical operations while preserving execution speed for non-critical operations.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies different access control qualities to different functions based on their criticality. High-priority functions receive guaranteed access with consistency guarantees, while low-priority functions access variables without blocking others. This local differentiation resolves the contradiction by applying strict consistency only where necessary.

Inventive Principle:
Principle #3Local quality

2Reliability

If local copies are used for all global variables in each function, then data consistency is improved, but memory consumption and processing power requirements increase substantially

Engineering Contradiction:
Improvedata consistencyVSAvoidmemory consumption
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

Instead of universally creating local copies for all functions, the patent selectively applies copy creation only to functions identified as interfering with others. The system analyzes function priorities and interference patterns to determine which functions need local copies, thereby maintaining consistency while minimizing memory overhead.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The patent implements partial copying by creating local copies only for the minimum necessary set of variables and functions required to ensure consistency. Rather than copying all variables for all functions, it identifies and copies only those variables accessed by interfering functions, reducing memory consumption while maintaining adequate consistency guarantees.

Inventive Principle:
Principle #16Partial or excessive action

3Reliability

If source code modification is performed to ensure data consistency, then data consistency is improved, but development time and complexity increase due to recompilation requirements

Engineering Contradiction:
Improvedata consistencyVSAvoiddevelopment speed
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent introduces an intermediary tool that operates at the object code level rather than requiring source code modification. This tool automatically inserts consistency management code into compiled object files, allowing developers to maintain existing source code while achieving data consistency through post-compilation processing.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent uses copying of object code files as an intermediary step to implement consistency mechanisms. By copying and modifying object files (not source code), the system can insert consistency management code without triggering recompilation, thereby maintaining development speed while ensuring data consistency.

Inventive Principle:
Principle #26Copying

4Reliability

If known development tools are used to identify interfering functions, then data consistency is improved, but adaptability to different high-level languages and third-party code deteriorates

Engineering Contradiction:
Improvedata consistencyVSAvoidlanguage compatibility
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The patent creates a universal tool that operates independently of high-level language source code. By working at the object code level, the tool achieves multi-functionality across different programming languages and third-party codebases, as object code is a language-agnostic intermediate representation that can be processed uniformly regardless of the original source language.

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

Data Source

PatentUS8464236B2Data consistency in data processing systems
Publication Date: 2013.06.11 ROBERT BOSCH GMBH
  • US8464236B2 patent drawing
  • US8464236B2 patent drawing
  • US8464236B2 patent drawing

AI summary

In order to avoid data inconsistency between accesses of different functions of an application to a global variable in a data processing system,a) symbolic object code of a totality of functions to be executed in the data processing system is provided and those functions of the totality, called interfering functions, are identified, which access an identical global variable;b) at least one of the interfering functions is selected;c) a step of the initialization of an auxiliary variable using the value of the global variable into the object code of each function selected in step b) or of a function calling a selected function prior to its call is inserted; andd) a symbol of the global variable in the object code of the selected function is replaced by a reference to a memory space of the auxiliary variable.