Intermodule Communication via Shared Memory and FIFO Buffers
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current programming environments for data storage devices are often static, non-expandable, and lack a common interface for integrating software components, making it difficult to develop flexible and platform-independent software solutions that can efficiently communicate between code modules.
Innovation Solution
A method and architecture for intermodule communication using shared memory with FIFO structures and application programming interfaces (APIs) that allow code modules to execute in user or kernel space, enabling flexible and platform-independent communication across different operating systems and hardware platforms.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If code modules execute in user space with shared memory and FIFO structures, then communication flexibility and platform independence are improved, but system complexity and synchronization overhead increase
Solution Approach 1:
The communication system is segmented into distinct functional components: shared memory for data storage, FIFO structures for ordered message passing, and API boundaries for module isolation. This segmentation allows each component to be optimized independently while maintaining overall system flexibility and reducing complexity through modular design.
Solution Approach 2:
The patent introduces FIFO structures as intermediary buffers between code modules, allowing asynchronous communication without direct synchronization. The FIFO acts as a mediator that decouples sender and receiver, reducing system complexity by eliminating the need for complex inter-process synchronization mechanisms while maintaining communication flexibility.
2Productivity
If shared memory is used for intermodule communication, then communication speed and efficiency are improved, but memory management complexity and access control difficulties increase
Solution Approach 1:
The system performs preliminary actions by pre-establishing shared memory segments with defined structures and FIFO buffers before communication begins. Memory allocation, structure definition, and access permission setup are completed in advance, allowing fast communication without real-time memory management complexity during actual data exchange operations.
3Ease of manufacture
If platform-independent APIs are implemented, then software portability and ease of development are improved, but API overhead and abstraction layer complexity increase
Solution Approach 1:
The API is designed with universal functionality that handles multiple communication scenarios (synchronous, asynchronous, buffered, unbuffered) through a unified interface. This multi-functionality allows the same API layer to serve different platform requirements without increasing complexity, as the abstraction handles diverse operations through consistent mechanisms rather than requiring separate platform-specific implementations.
Data Source
AI summary
Described are techniques for intermodule communication between a first code module and a second code module each executing in user space. A shared memory portion includes storage for one or more commands and is accessible to the first and the second code modules. A first first-in-first-out (FIFO) structure is used for sending a location in the shared memory portion from the first code module to the second code module. A second FIFO structure is used for sending a location in the shared memory portion from the second code module to the first code module. The first code module stores command data for a command at a first location in the shared memory portion. A command is issued from the first code module to the second code module by sending the first location from the first code module to the second code module using the first FIFO structure.


