IP Library Granted Patent US 6,848,106
Granted Patent B1
US 6,848,106 · App. 09/680,847 · Granted Jan 25, 2005

Snapshot restore of application chains and applications

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 6,848,106
App. No.
09/680,847
Granted
Jan 25, 2005
Kind
B1
Abstract

The present invention saves all process state, memory, and dependencies related to a software application to a snapshot image. Interprocess communication (IPC) mechanisms such as shared memory and semaphores must be preserved in the snapshot image as well. IPC mechanisms include any resource that is shared between two process or any communication mechanism or channel that allow two processes to communicate or interoperate is a form of IPC. Between snapshots, memory deltas are flushed to the snapshot image, so that only the modified-pages need be updated. Software modules are included to track usage of resources and their corresponding handles. At snapshot time, state is saved by querying the operating system kernel, the application snapshot/restore framework components, and the process management subsystem that allows applications to retrieve internal process-specific information not available through existing system calls. At restore time, the reverse sequence of steps for the snapshot procedure is followed and state is restored by making requests to the kernel, the application snapshot/restore framework, and the process management subsystem.

Claims (51)

1. In a computer system, a method for saving a running software application for execution at a later time, the application being associated with a process having a state and an environment, comprising:

associating a unique identifier with the running software application to be saved;

virtualizing the process environment associated with said running software application;

recording process events that change the state of the process, wherein the recording comprises intercepting at least some of the process events generated by the process prior to the process events reaching an operating system on which the application is running;

saving process state in the form of a snapshot image, wherein the process state includes state updated by the process events that were intercepted; and

saving shared resource state relevant to said snapshot image with said snapshot image.

2. The method of claim 1 , further comprising saving modified memory pages relevant to said snapshot image with said snapshot image.

3. The method of claim 1 , further comprising saving states associated multiple threads relevant to said snapshot image.

4. A computer program product, which, when executed by a computer, saves a running software application for execution at a later time, the application being associated with a process having a state and an environment, by:

associating a unique identifier with the running software application to be saved;

virtualizing the process environment associated with said running software application;

recording process events that change the state of the process, wherein the recording comprises intercepting at least some of the process events generated by the process prior to the process events reaching an operating system on which the application is running;

saving process state in the form of a snapshot image, wherein the process state includes state updated by the process events that were intercepted; and

saving shared resource state relevant to said snapshot image with said snapshot image.

5. A method comprising:

recording process events that change one or more states of one or more processes associated with a running software application, wherein the recording comprises intercepting at least some of the process events generated by the one or more processes prior to the process events reaching an operating system on which the running software application is running;

saving one or more snapshot images, the one or more snapshot images comprising said one or more process states of said one or more processes, the one or more process states including state updated by the process events that were intercepted; and

saving shared resource state used by the application with said snapshot images.

6. The method of claim 5 , further comprising associating a unique identifier with said running software application.

7. The method of claim 5 , further comprising virtualizing one or more process environments associated with said one or more processes.

8. The method of claim 5 , wherein saving said one or more snapshot images comprises saving the difference between the current process state and a prior snapshot.

9. The method of claim 5 , further comprising suspending said one or more processes.

10. The method of claim 5 further comprising restoring said software application, wherein said restoring comprises:

restoring said shared resource state; and

restoring each of the one or more processes associated with said one or more snapshot images.

11. The method of claim 10 wherein said saving said one or more process states and said saving shared resource state occurs on a first computer system, and wherein said restoring said software application occurs on a second computer system.

12. A system comprising:

an application framework operable to record process events that change one or more states of one or more processes associated with a running software application, wherein the application framework is operable to intercept at least some of the process events generated by the one or more processes prior to the process events reaching an operating system on which the running software application is running, and

a snapshot driver operable to:

save one or more snapshot images including said one or more process states of said one or more processes, the one or more process states including state updated by the process events that were intercepted by the application framework; and

save shared resource state used by the application with said snapshot images.

13. The system of claim 12 , wherein said snapshot driver is further operable to associate a unique identifier with said running software application.

14. The system of claim 12 , wherein said snapshot driver is further operable to virtualize one or more process environments associated with said one or more processes.

15. The system of claim 12 , wherein said snapshot driver is further operable to save the difference between the current process state and a prior snapshot.

16. The system of claim 12 , wherein said snapshot driver is further operable to suspend said one or more processes.

17. The system of claim 12 further comprising a restore driver operable to restore said software application, wherein said restoring comprises:

restoring said shared resource state; and

restoring each of the one or more processes associated with said one or more snapshot images.

18. The system of claim 17 wherein said snapshot driver operates on a first computer system, and wherein said restore driver operates on a second computer system.

19. A computer readable medium including program instructions executable to implement a method comprising:

recording process events that change one or more states of one or more processes associated with a running software application, wherein the recording comprises intercepting at least some of the process events generated by the one or more processes prior to the process events reaching an operating system on which the running software application is running;

saving one or more snapshot images, the one or more snapshot images comprising said one or more process states of said one or more processes, the one or more process states including state updated by the process events that were intercepted; and

saving shared resource state used by the application with said snapshot images.

20. The computer readable medium of claim 19 , wherein the method further comprises associating a unique identifier with said running software application.

21. The computer readable medium of claim 19 , wherein the method further comprises virtualizing one or more process environments associated with said one or more processes.

22. The computer readable medium of claim 19 , wherein saving said snapshot images comprises saving the difference between the current process state and a prior snapshot.

23. The computer readable medium of claim 19 , wherein the method further comprises suspending said one or more processes.

24. The computer readable medium of claim 19 wherein the method further comprises restoring said software application, wherein said restoring comprises:

restoring said shared resource state; and

restoring each of the one or more processes associated with said one or more snapshot images.

25. The computer readable medium of claim 19 wherein said saving said one or more process states and said saving shared resource state occurs on a first computer system, and wherein said restoring said software application occurs on a second computer system.

Assignments (15)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 019872 FRAME 979. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNEE IS SYMANTEC OPERATING CORPORATION. Recorded Mar 5, 2012
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 027819/0462 →
CHANGE OF NAME Recorded Sep 26, 2007
From: VERITAS OPERATING CORPORATION
To: SYMANTEC CORPORATION
Reel/Frame 019872/0979 →
AGREEMENT AND PLAN OF MERGER Recorded Apr 10, 2006
From: EJASENT, INC.
To: VERITAS OPERATING CORPORATION
Reel/Frame 017766/0303 →
SECURITY INTEREST Recorded Jan 22, 2002
From: EJASENT, INC.
To: GATX VENTURES, INC.; SILICON VALLEY BANK
Reel/Frame 012493/0729 →