Hierarchical Thread Storage in Common Software Environment

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional programming environments for data storage devices are often static, non-expandable, and lack a common interface for integrating software components, making it difficult to create flexible and platform-independent software solutions that can handle varying hardware and software platforms effectively.

Innovation Solution

A common software environment (CSE) is introduced that leverages existing platform capabilities and technologies to provide a scalable, unified architecture for managing network-attached storage (NAS) and object and storage block services, enabling openness, application awareness, and ease of use through modular building blocks and well-defined interfaces, facilitating the integration of software components across different platforms.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a common software environment with modular building blocks is introduced, then adaptability and ease of integration are improved, but device complexity increases

Engineering Contradiction:
ImproveadaptabilityVSAvoidcomplexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The software environment is divided into distinct modular building blocks including thread creation interfaces, data area management components, and code layer abstractions. Each module performs a specific function and can be independently configured, allowing the system to adapt to different platforms while maintaining manageable complexity through clear separation of concerns.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The common software environment provides universal interfaces and data structures that can operate across multiple hardware and software platforms. The thread creation mechanism and data area management are designed to be platform-agnostic, enabling the same software components to function universally across different storage devices and operating systems.

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

2Reliability

If thread-specific context information is created and initialized at each code layer, then reliability and proper code execution are improved, but memory usage and processing overhead increase

Engineering Contradiction:
ImprovereliabilityVSAvoidmemory
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

Thread-specific context information is organized in a nested hierarchical structure where each code layer maintains its own data area that contains or references information needed by subordinate layers. This nesting allows comprehensive thread context management while avoiding duplication of information across all layers, as each layer only stores the specific data it requires.

Inventive Principle:
Principle #7Nested doll (Nesting)

3Reliability

If a callback call chain traversing code layers in reverse order is implemented, then proper resource cleanup and thread execution are improved, but processing time increases

Engineering Contradiction:
ImprovereliabilityVSAvoidtime
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The callback call chain is pre-configured during thread creation, with each code layer registering its cleanup and execution callbacks in advance. When thread execution begins, the pre-established callback chain enables systematic resource cleanup and proper execution flow without requiring complex runtime decision-making, reducing the time overhead compared to ad-hoc resource management approaches.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9459920B1Providing hierarchical thread storage
Publication Date: 2016.10.04 EMC IP HLDG CO LLC
  • US9459920B1 patent drawing
  • US9459920B1 patent drawing
  • US9459920B1 patent drawing

AI summary

Described are techniques for creating a thread. A first plurality of calls are issued to create the thread. The first plurality of calls are executed in the context of an executing first thread and form a call chain traversing a plurality of code layers in a first order. A data area including thread-specific context information is created and initialized at each of the plurality of code layers when code of each code layer is invoked in accordance with the interface of each code layer to create the thread. Each of the plurality of code layers is included in a registered set. Executing the thread includes issuing a second plurality of calls traversing said plurality of code layers in an order that is a reverse of the first order. The second plurality of calls result in transferring control to a first body of code for the thread.