IP Library Granted Patent US 9,092,318
Granted Patent B2
US 9,092,318 · App. 13/760,837 · Granted Jul 28, 2015

Method of allocating referenced memory pages from a free list

Inventors: Irfan Ahmad (Mountain View, CA); Gabriel Tarasuk-Levin (Palo Alto, CA); Ali Mashtizadeh (Palo Alto, CA); Philip Peter Moltmann (Palo Alto, CA)
Assignee: VMware, Inc.
G06F12/023G06F9/5016G06F12/0284G06F2212/152
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,092,318
App. No.
13/760,837
Granted
Jul 28, 2015
Kind
B2
Abstract

Memory pages that are allocated to a memory consumer and continue to be accessed by the memory consumer are included in a free list, so that they may be immediately allocated to another memory consumer as needed during the course of normal operation without preserving the original contents of the memory page. When a memory page in the free list is accessed to perform a read, a generation number associated with the memory page is compared with a stored copy. If the two match, the read is performed on the memory page. If the two do not match, the read is not performed on the memory page.

Claims (42)

1. A method of managing memory using a free list of memory pages, said method comprising:

receiving a memory allocation request from a memory consumer;

selecting a memory page from the free list; and

allocating the memory page to the memory consumer,

wherein the free list, after said allocating, includes the allocated memory page, and the memory consumer retains a reference to the allocated memory page in the free list.

2. The method of claim 1 , wherein the free list includes a head and a tail and memory pages closer to the head are allocated prior to memory pages closer to the tail.

3. The method of claim 2 , wherein the memory page is selected from the head of the free list to be allocated to the memory consumer.

4. The method of claim 3 , wherein said allocating includes:

removing the allocated memory page from the free list; and

adding the allocated memory page to the free list at the tail of the free list.

5. The method of claim 1 , wherein said allocating includes:

incrementing a generation number for the memory page; and

returning a pointer to the memory page and a generation number for the memory page to the memory consumer,

wherein the generation number is incremented each time the memory page is allocated.

6. The method of claim 1 , further comprising:

adding a memory page that is not referenced by any memory consumer to the head of the free list.

7. The method of claim 1 , wherein the free list of memory pages includes memory pages that are not referenced by any memory consumer and memory pages that are referenced by one or more memory consumers.

8. The method of claim 7 , wherein the unreferenced memory pages are positioned nearer to head of the free list than the referenced memory pages.

9. The method of claim 1 , further comprising:

receiving a memory allocation request from another memory consumer;

selecting a memory page from the free list; and

removing the selected memory page from the free list and then allocating the selected memory page to said another memory consumer.

10. The method of claim 9 , wherein said allocating in each instance increments a generation number for the selected memory page that has been allocated.

11. A non-transitory computer-readable medium having stored therein instructions for causing a processing unit to carry out the step of ordering a list of free memory pages such that free memory pages that are currently unreferenced by a memory consumer are allocated prior to free memory pages that are currently referenced by a memory consumer.

12. The non-transitory computer-readable medium of claim 11 , further having stored therein counters for each of the memory pages in the free list.

13. The non-transitory computer-readable medium of claim 12 , wherein the instructions cause the processing unit to carry out the step of incrementing a counter when a memory page in the free list corresponding thereto is allocated to a memory consumer.

14. The non-transitory computer-readable medium of claim 11 , wherein said ordering includes repositioning a free memory page to a tail of the list each time the free memory page is read without being removed from the list of free memory pages.

15. The non-transitory computer-readable medium of claim 11 , wherein said ordering includes positioning a newly released free memory page to a head of the list when the newly released free memory page is added to the list of free memory pages.

16. A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to execute a method comprising:

receiving a memory allocation request from a memory consumer;

selecting a memory page from the free list; and

allocating the memory page to the memory consumer,

wherein the free list, after said allocating, includes the allocated memory page, and the memory consumer retains a reference to the allocated memory page in the free list.

17. The non-transitory computer-readable medium of claim 16 , wherein:

the free list includes a head and a tail and memory pages closer to the head are allocated prior to memory pages closer to the tail.

18. The non-transitory computer-readable medium of claim 16 , wherein said allocating includes:

incrementing a generation number for the memory page; and

returning a pointer to the memory page and a generation number for the memory page to the memory consumer,

wherein the generation number is incremented each time the memory page is allocated.

19. The non-transitory computer-readable medium of claim 16 , wherein the free list of memory pages includes memory pages that are not referenced by any memory consumer and memory pages that are referenced by one or more memory consumers.

20. The non-transitory computer-readable medium of claim 16 , wherein:

the unreferenced memory pages are positioned nearer to a head of the free list than the referenced memory pages.

Assignments (1)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
Continuity (2)
Provisional Application 61595518 · Feb 6, 2012
Related Publication 20130205113A1 · Aug 8, 2013