IP Library Granted Patent US 9,213,513
Granted Patent B2
US 9,213,513 · App. 11/689,190 · Granted Dec 15, 2015

Maintaining synchronization of virtual machine image differences across server and host computers

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 9,213,513
App. No.
11/689,190
Granted
Dec 15, 2015
Kind
B2
Abstract

A virtual printer driver or proxy printer driver executed by a virtual machine communicates with a real printer driver executed by a host computer to enable application programs executed by the virtual machine to print data on printers that are accessible by the host computer.

Claims (75)

1. A method for execution of a virtual machine (VM), the method comprising:

suspending execution of the VM in response to determining to suspend execution of the VM, the VM being executed for a first user;

after suspending execution of the VM, determining a difference between the VM and a generic VM image,

wherein the difference between the VM and the generic VM image includes portions of the VM image that are different from the generic VM image;

storing, in a file server and in a host computer, one or more indications of the differences between the VM and the generic VM image that lacks information specific to the first user or a second user;

maintaining synchronization of the one or more stored indications of the differences that are stored in the server and the host computer;

in response to receiving an indication to resume execution of the VM, based on the synchronized stored indications of the differences that are stored in the server, combining the difference between a current state of the VM and the generic VM image to produce a combined VM, and executing the combined VM on the host computer; and

in response to receiving an indication to resume execution of a second VM for a second user, based on the synchronized stored indications of the differences that are stored in the host computer, combining a difference between the second VM and the generic VM image to produce a second combined VM, and executing the second combined VM on the host computer.

2. The method of claim 1 , wherein storing the indications of the differences between the VM and a generic VM image comprises:

storing the indications on a first computer;

wherein combining the difference between the VM and the generic VM image comprises:

combining the difference between the VM and the generic VM image on a second computer; and

wherein executing the combined VM comprises:

executing the combined VM on the second computer.

3. The method of claim 1 , wherein suspending execution of the VM comprises:

suspending execution of the VM on a first computer; and

wherein storing the indications of the difference between the VM and a generic VM image comprises:

storing the indications on a second computer.

4. The method of claim 3 , wherein suspending execution of the VM comprises:

suspending execution of the virtual machine in response to a user command issued locally on the first computer.

5. The method of claim 3 , wherein suspending execution of the virtual machine comprises:

suspending execution of the virtual machine in response to an indication received by the first computer and from the second computer.

6. The method of claim 3 , wherein suspending execution of the virtual machine comprises:

suspending execution of the virtual machine in response receiving a remote procedure call at the first computer.

7. The method of claim 3 , further comprising:

loading information about the difference between the VM and the generic VM image from the second computer onto a third computer, different than the first computer; and

executing the combined VM on the third computer.

8. The method of claim 3 , further comprising:

executing the combined VM on the second computer.

9. A computer-readable storage device for executing a virtual machine (VM), bearing computer-executable instructions, that when executed, cause operations comprising:

suspending execution of the VM in response to determining to suspend execution of the VM, the VM being executed for a first user;

after suspending execution of the VM, determining a difference between the VM and a generic VM image,

wherein the difference between the VM and the generic VM image includes portions of the VM image that are different from the generic VM image;

storing, in a file server and in a host computer, one or more indications of the differences between the VM and the generic VM image;

maintaining synchronization of the one or more stored indications of the differences that are stored in the server and the host computer;

in response to receiving an indication to resume execution of the VM, based on the synchronized stored indications of the differences that are stored in the server, combining the difference between a current state of the VM and the generic VM image to produce a combined VM, and executing the combined VM; and

in response to receiving an indication to resume execution of a second VM, based on the synchronized stored indications of the differences that are stored in the host computer, combining a difference between the second VM and the generic VM image to produce a second combined VM, and executing the second combined VM on the host computer.

10. The computer-readable storage device of claim 9 , wherein storing the indications of the differences between the VM and a generic VM image comprises:

storing the indications on a first computer;

wherein combining the difference between the VM and the generic VM image comprises:

combining the difference between the VM and the generic VM image on a second computer; and

wherein executing the combined VM comprises:

executing the combined VM on the second computer.

11. The computer-readable storage device of claim 9 , wherein suspending execution of the VM comprises:

suspending execution of the VM on a first computer; and

wherein storing the indications of the difference between the VM and a generic VM image comprises:

storing the indications on a second computer.

12. The computer-readable storage device of claim 11 , wherein suspending execution of the VM comprises:

suspending execution of the virtual machine in response to a user command issued locally on the first computer.

13. The computer-readable storage device of claim 11 , wherein suspending execution of the virtual machine comprises:

suspending execution of the virtual machine in response to an indication received by the first computer and from the second computer.

14. The computer-readable storage device of claim 11 , wherein suspending execution of the virtual machine comprises:

suspending execution of the virtual machine in response receiving a remote procedure call at the first computer.

15. The computer-readable storage device of claim 11 , further bearing computer-executable instructions that, when executed, cause operations comprising:

loading information about the difference between the VM and the generic VM image from the second computer onto a third computer, different than the first computer; and

executing the combined VM on the third computer.

16. The computer-readable storage device of claim 11 , further bearing computer-executable instructions that, when executed, cause operations comprising:

executing the combined VM on the second computer.

17. A system for executing a virtual machine (VM), comprising:

a processor; and

a memory communicatively coupled to the processor when the system is operational, the memory bearing processor-executable instructions that, when executed on the processor, cause the system at least to:

suspend execution of the VM in response to determining to suspend execution of the VM, the VM being executed for a first user;

after suspending execution of the VM, determine a difference between the VM and a generic VM image,

wherein the difference between the VM and the generic VM image includes portions of the VM image that are different from the generic VM image;

store, in a file server and in a host computer, one or more indications of the differences between the VM and the generic VM image;

maintain synchronization of the one or more indications of the differences that are stored in the server and the host computer;

in response to receiving an indication to resume execution of the VM, based on the synchronized stored indications of the differences that are stored in the server and the host computer, combine the difference between a current state of the VM and the generic VM image to produce a combined VM, and executing the combined VM; and

in response to receiving an indication to resume execution of a second VM, based on the synchronized stored indications of the differences that are stored in the server and the host computer, combine a difference between the second VM and the generic VM image to produce a second combined VM, and executing the second combined VM.

18. The system of claim 17 , wherein the instructions that, when executed on the processor, cause the system at least to suspend execution of the VM further cause the system at least to:

suspend execution of the virtual machine in response to a user command issued locally on a first computer.

19. The system of claim 18 , wherein the instructions that, when executed on the processor, cause the system at least to suspend execution of the VM further cause the system at least to:

suspend execution of the virtual machine in response to an indication received by the first computer and from a second computer, or in response receiving a remote procedure call at the first computer.

20. The system of claim 18 , wherein the instructions that, when executed on the processor, cause the system at least to:

load information about the difference between the VM and the generic VM image from a second computer onto a third computer, different than the first computer; and

execute the combined VM on the third computer.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
MERGER Recorded Jun 17, 2014
From: SENTILLION, INC.
To: MICROSOFT CORPORATION
Reel/Frame 033117/0870 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 13, 2007
From: HARTZ, GEORGE; FONTANA, ERIC; FUSARI, DAVID
To: SENTILLION, INC.
Reel/Frame 019423/0368 →