Common Software Environment for Platform-Independent Storage APIs
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional programming environments for data storage devices lack flexibility and platform independence, leading to static and non-expandable programming models that hinder software development and integration, particularly due to varying hardware and software platforms with different interface protocols and management systems.
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/block services, enabling flexible and platform-independent programming across different storage systems by using APIs to insulate code from underlying platform dependencies and allowing execution in both user and kernel modes.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If conventional programming environments are used for data storage devices, then platform-specific implementation is achieved, but flexibility and platform independence deteriorate
Solution Approach 1:
The patent introduces an intermediary layer (common software environment and abstraction layer) between the hardware platform and the programming model. This intermediary provides unified interfaces and translation mechanisms that enable platform-independent code execution while handling platform-specific variations, thus resolving the contradiction between platform independence and programming complexity.
Solution Approach 2:
The patent segments the programming environment into distinct layers: a platform-independent common software environment layer and platform-specific implementation layers. This segmentation allows the upper layers to remain flexible and portable while the lower layers handle platform-specific complexities, resolving the contradiction between adaptability and device complexity.
2Adaptability or versatility
If static programming models are used, then implementation simplicity is maintained, but expandability and flexibility deteriorate
Solution Approach 1:
The patent implements a dynamic programming model where the common software environment can be extended and configured at runtime. The system supports dynamic loading of modules, runtime configuration of storage services, and flexible composition of software components, enabling expandability while maintaining implementation simplicity through standardized interfaces.
Solution Approach 2:
The patent creates a universal programming model in the common software environment that can perform multiple functions across different storage platforms. The unified architecture supports various storage services, protocols, and operations through a single extensible framework, providing both expandability and implementation simplicity.
3Productivity
If platform-specific code is written, then hardware optimization is achieved, but code portability and duplication efforts deteriorate
Solution Approach 1:
The patent uses copying mechanisms where a single master copy of the software runs in the common software environment and can be replicated or instantiated multiple times across different platforms. This eliminates the need to write and maintain separate codebases for each platform, significantly reducing development time and effort while maintaining platform-specific optimizations through configuration rather than code duplication.
Data Source
AI summary
Described are techniques for performing remote procedure calls (RPCs). An RPC API is described which provides for using an optimized technique and an unoptimized technique for performing RPCs. The optimized technique includes a client container performing a call to obtain RPC configuration information which is then stored by the client container and may be used by the client container in connection with multiple RPC invocations. Techniques are also described for communicating parameter information between containers executing in different address spaces by forming parameter information on the client side using embedded lists, encoding the parameter information on the client side prior to transmission to the server, and transmitting the encoded parameter information to the server which determines output parameters and returns the output parameters to the client.


