IP Library Granted Patent US 7,757,034
Granted Patent B1
US 7,757,034 · App. 11/558,498 · Granted Jul 13, 2010

Expansion of virtualized physical memory of virtual machine

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 7,757,034
App. No.
11/558,498
Granted
Jul 13, 2010
Kind
B1
Abstract

A system, method and computer program product for virtualizing a processor and its memory, including a host operating system (OS); and virtualization software that maintains a virtualization environment for running a Virtual Machine (VM) without system level privileges and having a guest operating system running within the Virtual Machine. A plurality of processes are running within the host OS, each process having its own virtual memory, wherein the virtualization software is one of the processes. An image file is stored in persistent storage and maintained by the host operating system. The image file represents virtualized physical memory of the VM. A plurality of memory pages are aggregated into blocks, the blocks being stored in the image file and addressable in block form. The virtualization software manages the blocks so that blocks can be mapped to the virtualization software process virtual memory and released when the blocks are no longer necessary. The host OS swaps the blocks between the image file and physical memory when a block that is not in physical memory is accessed by the VM. The image file size is not subject to limitation on virtual process memory size. A user of the VM can access a larger virtual process memory than the host OS permits.

Claims (53)

1. A virtualization system comprising:

a host operating system (OS);

virtualization software that maintains a virtualization environment for running a Virtual Machine (VM) without system level privileges;

a plurality of processes running within the host OS, each process having its own virtual memory, wherein the virtualization software is one of the processes;

at least one image file stored in persistent storage and maintained by the host OS, wherein the image file represents virtualized physical memory of the VM; and

a plurality of memory pages of the VM aggregated into blocks, the blocks being stored in the image file and addressable in block form,

wherein the virtualization software manages the blocks so that blocks can be mapped to the virtualization software process virtual memory and released when the blocks are no longer necessary,

wherein the host OS swaps the blocks between the image file and physical memory using memory mapped file mechanism of the host OS, when a block that is not in physical memory is accessed by the VM,

wherein the VM physical memory size corresponds to image file size and is not subject to limitation on virtual process memory size set by the host OS.

2. The system of claim 1 , wherein the virtualization software comprises:

a Virtual Machine Monitor (VMM) that manages VM's behavior and has system level privileges; and

a host OS driver for interfacing to underlying hardware.

3. The system of claim 2 , wherein the VMM maps, in the VMM and VM address spaces, pages of virtualized physical memory by using real physical pages; and wherein corresponding blocks are locked in the physical memory.

4. The system of claim 1 , wherein a counter is associated with each block, such that when the block is accessed, the counter is incremented, when the block is not accessed in the predetermined period of time, the counter is decremented, and when the counter becomes a predetermined value, the block is designated as a free block.

5. The system of claim 4 , wherein the free block remains as a mapped element, but the free block not used by the Virtual Machine.

6. The system of claim 5 , wherein, when Virtual Machine attempts to access a block that is not in the virtual process memory, a new block is allocated from free virtual process memory region, and is pushed to the hash table.

7. The system of claim 6 , wherein, if all of the virtual memory allocated to the Virtual Machine has been used up, then the free block is swapped out to the image file.

8. The system of claim 7 , wherein a new block that the Virtual Machine is trying to access is brought into the physical memory.

9. The system of claim 1 , wherein a block comprises multiple memory pages.

10. The system of claim 1 , wherein different blocks share at least one guest physical page.

11. The system of claim 1 , wherein the blocks are of different size.

12. The system of claim 1 , further comprising a direct access hash table for addressing blocks.

13. The system of claim 12 , wherein the direct access hash table includes a plurality of hash keys, each hash key based on a portion of a guest physical address of its corresponding block.

14. The system of claim 13 , wherein overlapping blocks have the same hash key.

15. A method for managing memory in a virtualization system comprising:

initiating a host operating system (OS);

starting virtualization software that maintains a virtualization environment for running a Virtual Machine (VM) without system level privileges and having a guest operating system running within the Virtual Machine;

starting a plurality of processes running within the host OS, each process having its own virtual memory, wherein the virtualization software is at least one of the processes;

allocating at least one image file in persistent storage, the image file maintained by the host OS and representing virtualized physical memory of the VM; and

aggregating a plurality of memory pages into blocks, the blocks being stored in the image file and addressable in block form,

wherein the virtualization software manages the blocks so that blocks can be mapped to the virtualization software process virtual memory and released when the blocks are no longer necessary,

wherein the host OS swaps the blocks between the image file and physical memory when a block that is not in physical memory is accessed by the VM,

wherein the image file size is not subject to limitation on virtual process memory size, and

wherein a user of the VM can access a larger virtual process memory than the host OS permits.

16. The method of claim 15 , wherein the VMM maps, in the VMM and VM address spaces, pages of virtualized physical memory by using real physical pages; and wherein corresponding blocks are locked in the physical memory.

17. The method of claim 15 , wherein a counter is associated with each block, such that when the block is accessed, the counter is incremented, when the block is not accessed in the predetermined period of time, the counter is decremented, and when the counter becomes a predetermined value, the block is designated as a free block.

18. The method of claim 17 , wherein the free block remains as a mapped element, but the free block not used by the Virtual Machine.

19. The method of claim 18 , wherein, when Virtual Machine attempts to access a block that is not in the virtual process memory, a new block is allocated from free virtual process memory region, and is pushed to the hash table.

20. The method of claim 19 , wherein, if all of the virtual memory allocated to the Virtual Machine has been used up, then the free block is swapped out to the image file.

21. The method of claim 15 , wherein different blocks share at least one guest physical page.

22. The method of claim 15 , further comprising a direct access hash table for addressing blocks.

23. The method of claim 22 , wherein the direct access hash table includes a plurality of hash keys, each hash key based on a portion of a guest physical address of its corresponding block.

24. The method of claim 23 , wherein overlapping blocks have the same hash key.

25. A computer useable software medium having computer program logic stored thereon for executing on a processor for managing a process virtual memory, the computer program logic comprising:

computer program code means for initiating a host operating system (OS);

computer program code means for starting virtualization software that maintains a virtualization environment for running a Virtual Machine (VM) without system level privileges and having a guest operating system running within the Virtual Machine;

computer program code means for starting a plurality of processes running within the host OS, each process having its own virtual memory, wherein the virtualization software is at least one of the processes;

computer program code means for allocating at least one image file in persistent storage, the image file maintained by the host OS and representing virtualized physical memory of the VM; and

computer program code means for aggregating a plurality of memory pages into blocks, the blocks being stored in the image file and addressable in block form,

wherein the virtualization software manages the blocks so that blocks can be mapped to the virtualization software process virtual memory and released when the blocks are no longer necessary,

wherein the host OS swaps the blocks between the image file and physical memory when a block that is not in physical memory is accessed by the VM,

wherein the image file size is not subject to limitation on virtual process memory size, and

wherein a user of the VM can access a larger virtual process memory than the host OS permits.

Assignments (12)
RELEASE OF SECURITY INTEREST Recorded Jul 18, 2019
From: UBS AG, STAMFORD BRANCH, AS ADMINISTRATIVE AND COLLATERAL AGENT
To: COREL CORPORATION; CLEARSLIDE, INC.; PARALLELS INTERNATIONAL GMBH
Reel/Frame 049787/0073 →
RELEASE OF SECURITY INTEREST RECORDED AT : REEL 047973 FRAME 0797 Recorded Jul 17, 2019
From: UBS AG, STAMFORD BRANCH
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 049773/0590 →
SECURITY INTEREST Recorded Dec 21, 2018
From: PARALLELS INTERNATIONAL GMBH
To: UBS AG, STAMFORD BRANCH
Reel/Frame 047973/0797 →
MERGER Recorded Mar 6, 2018
From: PARALLELS IP HOLDINGS GMBH
To: PARALLELS INTERNATIONAL GMBH
Reel/Frame 045122/0592 →
RELEASE OF SECURITY INTEREST Recorded Dec 14, 2015
From: SILICON VALLEY BANK
To: PARALLELS SOFTWARE INTERNATIONAL, INC.
Reel/Frame 037287/0638 →
RELEASE OF SECURITY INTEREST Recorded Dec 14, 2015
From: SILICON VALLEY BANK
To: PARALLELS HOLDINGS LTD. (F/K/A SWSOFT HOLDINGS LTD.)
Reel/Frame 037289/0685 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2012
From: PARALLELS HOLDINGS, LTD.
To: PARALLELS IP HOLDINGS GMBH
Reel/Frame 027595/0187 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2011
From: PARALLELS SOFTWARE INTERNATIONAL, INC.
To: PARALLELS HOLDINGS, LTD.
Reel/Frame 027467/0328 →
SECURITY AGREEMENT Recorded Jun 23, 2011
From: PARALLELS HOLDINGS LTD. (F/K/A SWSOFT HOLDINGS LTD.)
To: SILICON VALLEY BANK
Reel/Frame 026480/0957 →
SECURITY AGREEMENT Recorded Apr 3, 2010
From: PARALLELS HOLDINGS, LTD.
To: SILICON VALLEY BANK
Reel/Frame 024182/0685 →
SECURITY AGREEMENT Recorded Nov 26, 2007
From: PARALLELS SOFTWARE INTERNATIONAL, INC.
To: SILICON VALLEY BANK
Reel/Frame 020154/0915 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 10, 2006
From: DOBROVOLSKIY, NIKOLAY N.; OMELYANCHUK, ANDREY A.; KORYAKIN, ALEXEY B.; VOROBYOVA, ANNA L.; BELOUSSOV, SERGUEI M.; TORMASOV, ALEXANDER G.
To: PARALLELS SOFTWARE INTERNATIONAL, INC.
Reel/Frame 018504/0606 →