Shared State Memory Array for Concurrent Process Access

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional methods for sharing state information between concurrently-running processes or threads are inefficient in terms of resource usage and predictability, often leading to blocking and invalid data reads due to asynchronous access patterns.

Innovation Solution

A system comprising a mutator, an observer, and an N-element memory array, utilizing pointers managed by a memory manager to facilitate efficient sharing of state information through APIs like Begin(), End(), Push(), and Poll() functions, which prevent blocking and ensure valid data access by managing writes and reads asynchronously.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If conventional methods are used for sharing state information between concurrently-running processes or threads, then resource usage is high and performance predictability is poor, but implementing a new pointer-based system increases device complexity

Engineering Contradiction:
Improveperformance predictabilityVSAvoiddevice complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The memory array is segmented into N elements with dedicated pointers (first pointer for mutator, second pointer for observer) to enable independent concurrent access. Each process/thread operates on its own pointer without blocking the other, eliminating contention while maintaining simple individual operations.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The memory manager acts as an intermediary that manages the pointers and coordinates access between mutator and observer. It provides Begin(), End(), Push(), and Poll() functions that handle the complexity of synchronization, allowing the mutator and observer to operate independently while ensuring data consistency.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If data copying is used to share state information, then data validity is ensured, but memory usage increases

Engineering Contradiction:
Improvedata validityVSAvoidmemory usage
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

Instead of physically copying data, the system copies pointer references. The first pointer and second pointer both reference elements in the shared memory array, allowing the observer to access mutator's data without duplication. This maintains data validity through consistent referencing while using minimal memory.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The shared memory array serves multiple functions: it stores state information, acts as a communication channel between processes, and provides synchronization through pointer management. This multi-functionality eliminates the need for separate data copies while ensuring data validity.

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

3Quantity of substance

If asynchronous access patterns are used, then resource usage is reduced, but blocking and invalid data reads occur

Engineering Contradiction:
Improveresource usageVSAvoiddata access validity
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The mutator calls Begin() to prepare the memory element before writing, and the observer calls Poll() to check readiness before reading. These preliminary actions ensure that data is valid before access, preventing invalid reads while maintaining asynchronous operation and low resource usage.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The Poll() function provides feedback to the observer about whether data is ready for reading. The memory manager monitors the state of memory elements and returns information about their readiness, enabling the observer to asynchronously access only valid data without blocking or risking invalid reads.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS9141310B1Methods and apparatuses for shared state information among concurrently running processes or threads
Publication Date: 2015.09.22 GOOGLE LLC
  • US9141310B1 patent drawing
  • US9141310B1 patent drawing
  • US9141310B1 patent drawing

AI summary

In a system where data is shared by a first module writing the information to memory, and a second module then reading the information from the memory, asynchronous and/or unpredictable operation of the two modules may lead to instances of blocking and/or instances of the second module reading invalid data from the memory. Aspects of the present disclosure manage reads and writes to memory such that blocking by either the first module and/or the second module, and/or reads of invalid data by the second module, may be prevented if so desired.