Application State Synchronization via Segmented Memory Capture
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current solutions lack the ability to synchronize the state of software applications across multiple computing devices, failing to recreate the application state from one device on another, especially between cloud-based and local environments, and do not support bi-directional application movement or opening files in alternate applications.
Innovation Solution
A system that captures and transmits application state information using a synchronization file, allowing seamless synchronization of application states between computing environments, including cloud-based and local devices, and enabling the use of alternate applications if the default is not available, by locking the application, scanning memory, intercepting render commands, and writing state information to a data structure for transmission.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If application state information is captured and transmitted across computing environments, then application state synchronization is achieved, but system complexity increases
Solution Approach 1:
The application state is segmented into distinct components: memory state information from runtime and persistent memory, and execution state information from intercepted render commands. This segmentation allows selective capture and transmission of only necessary state data, achieving synchronization without requiring complete system state replication, thus managing complexity.
Solution Approach 2:
A synchronization file acts as an intermediary data structure that stores application state information. This mediator enables state transfer between computing environments without direct application-to-application communication, simplifying the synchronization mechanism while maintaining reliability.
2Loss of information
If memory scanning is performed to identify application state information, then complete state capture is achieved, but processing time increases
Solution Approach 1:
The system performs preliminary scanning of runtime and persistent memory to identify and capture application state information before application execution context is lost or changed. This preliminary action ensures complete state capture while allowing the scanning process to be optimized and performed efficiently during designated synchronization windows.
Solution Approach 2:
The system scans only the portions of memory that contain application-specific state information rather than performing exhaustive memory analysis. By focusing on relevant memory regions (runtime memory and persistent memory associated with the application), the system achieves complete state capture without unnecessary processing overhead.
3Stability of the object's composition
If the application is locked to prevent user inputs and new instances, then state consistency is maintained, but user productivity decreases
Solution Approach 1:
The application locking mechanism is dynamic rather than static. The application is locked only during the brief synchronization window when state information is being captured, and immediately unlocked afterward. This dynamic approach maintains state consistency during the critical capture period while minimizing impact on user productivity during normal operation.
Solution Approach 2:
The locking action occurs periodically during scheduled synchronization events rather than continuously. The application is locked only during these periodic synchronization windows to capture state information, then unlocked to allow normal user interaction, thus balancing state consistency with user productivity.
Data Source
AI summary
Methods, systems, apparatuses, and computer-readable storage mediums are described herein for software application state synchronization across computing environments. A user working in an application at a first state may change computing environments and open the application in a second computing environment at the same state. The first instance of the software application executing on the first computing environment is locked and application specific state information including memory state information scanned from runtime memory or persistent memory, and execution state information from render commands intercepted by an operating system filter, are written to a synchronization file that is stored in the memory system. Application agnostic information is also written to the synchronization file. The file is transmitted to the second computing environment where the application specific and agnostic state information is applied to a second instance of the software application for execution in the second computing environment.


