Immutable Data Memory Allocation for Constrained Devices
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Memory-constrained devices, such as mobile phones, face challenges in running applications with large data sets due to limited memory and lack of secondary storage for swapping rarely-used data, leading to modifications and limitations in executing programs.
Innovation Solution
A system that allocates a memory region for immutable data, allowing for dynamic loading and unloading of blocks, regenerating data as needed, and using statistical attributes to evict less-used blocks, while maintaining language semantics and reducing memory usage.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If the entire application and data set are loaded into memory, then the application can execute without swapping, but the memory consumption exceeds the available memory on constrained devices
Solution Approach 1:
The patent segments the application's data set into immutable blocks that can be independently managed. Each block is identified as immutable at compile time and can be loaded, unloaded, and regenerated independently, allowing the system to manage large data sets in chunks rather than requiring the entire data set to reside in memory simultaneously.
Solution Approach 2:
The patent changes the state parameter of immutable blocks from 'always loaded' to 'loaded on demand'. By tracking which blocks are currently loaded in memory and loading them only when needed, the system transforms the memory management approach from static allocation to dynamic allocation, reducing peak memory consumption while maintaining execution reliability.
2Quantity of substance
If rarely-used data is swapped to secondary storage, then memory availability increases, but devices without secondary storage cannot utilize this approach
Solution Approach 1:
The patent extracts the swapping mechanism from the traditional secondary storage dependency and replaces it with a regeneration-based approach. Instead of swapping data to external storage and back, the system extracts only the necessary data blocks into memory, generates them on-demand from their immutable definitions, and discards them when no longer needed, eliminating the need for secondary storage infrastructure.
Solution Approach 2:
The patent implements self-service by enabling the system to regenerate immutable data blocks from their source definitions whenever they are needed. Rather than relying on persistent secondary storage to retain data between sessions, the system serves its own data needs by regenerating blocks from immutable definitions, making the approach compatible with devices that have limited or no secondary storage capacity.
3Quantity of substance
If immutable blocks are unloaded and regenerated, then memory usage is reduced, but computational overhead increases
Solution Approach 1:
The patent applies partial action by loading only the specific immutable blocks that are currently needed for execution, rather than loading entire data sets or application components. This selective loading approach ensures that memory resources are dedicated only to actively used data blocks, minimizing both memory usage and the computational overhead associated with data transformation and loading operations.
Data Source
AI summary
A system that allocates memory for immutable data on a computing device. The system allocates a memory region on the computing device to store immutable data for an executing application. This memory region is smaller than the immutable data for the application. When the system subsequently receives a request to access a block of immutable data for the application, the system allocates space in this memory region for the block, and proceeds to load the block into the memory region. If at a later time the space occupied by this first block is needed for another block, the system unloads and discards the first block. If a subsequent operation needs to use information in the first block, the system regenerates the block by transforming raw data associated with the block into a form that can be directly accessed by the application, and then reloads the block into the memory region.


