IP Library Granted Patent US 7,673,105
Granted Patent B2
US 7,673,105 · App. 11/169,246 · Granted Mar 2, 2010

Managing memory pages

Assignee: Ab Inition Technology LLC
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,673,105
App. No.
11/169,246
Granted
Mar 2, 2010
Kind
B2
Abstract

A method, and corresponding software and system, is described for paging memory used for one or more sequentially-accessed data structure. The method includes providing a data structure representing an order in which memory pages are to be reused; and maintaining the data structure according to a history of access to a memory page associated with one of the sequentially-accessed data structures. A position of the memory page in the order depends on a transition of sequential access off of the memory page.

Claims (60)

1. A method for paging memory used for one or more queues, including:

providing a recycle list data structure that identifies memory pages including at least some memory pages that store at least a portion of at least one of the queues, and that represents an order in which the identified memory pages are to be reused;

maintaining the recycle list data structure according to a history of access to a memory page that stores at least a portion of at least one of the queues, whereby a position of the memory page in the order depends on whether a completed access of the memory page includes a write pointer transitioning off of the memory page; and

reusing a memory page that was added to a first end of the recycle list data structure according to a most-recently used approach in a first case in which a completed access of the memory page includes a write pointer transitioning off of the memory page, and reusing a memory page that was added to a second end of the recycle list data structure according to a least-recently used approach in a second case in which a completed access of the memory page includes at least one of an access entity closing the queue associated with the memory page and a read pointer transitioning off of the memory page.

2. The method of claim 1 , further including:

providing a free list data structure that identifies memory pages on a free list that are unallocated;

providing a volatile memory store;

providing a non-volatile memory store; and

reusing a first memory page identified by the recycle list in response to the free list being empty after writing the contents of the first memory page from the volatile memory store to the non-volatile memory store.

3. The method of claim 2 , wherein the transition of sequential access off of the memory page corresponds to a pointer transitioning off of the memory page.

4. The method of claim 2 , wherein the position of the memory page in the order depends on whether the transition of a sequential access corresponds to transition of write access off of the memory page.

5. The method of claim 2 , wherein maintaining the recycle list data structure according to a history of access to a memory page associated with one of the sequentially-accessed data structures includes:

placing an identifier for the memory page at a first end of the recycle list data structure in response to a transition of write access off of the memory page; and

placing an identifier for the memory page at a second end of the recycle list data structure in response to the sequentially-accessed data structure associated with the memory page being closed.

6. The method of claim 5 , further including reusing a memory page from the first end of the recycle list data structure.

7. The method of claim 6 , further including reusing the memory page from the first end of the recycle list data structure after determining that a list of free memory pages is empty.

8. The method of claim 6 , wherein reusing the memory page includes writing current contents of the memory page to the non-volatile memory store.

9. The method of claim 8 , wherein reusing the memory page further includes writing a memory page from the non-volatile memory store to the memory page.

10. A system for paging memory used for one or more queues, including:

means for providing a recycle list data structure that identifies memory pages including at least some memory pages that store at least a portion of at least one of the queues, and that represents an order in which the identified memory pages are to be reused;

means for maintaining the recycle list data structure according to a history of access to a memory page that stores a portion of one of the queues, whereby a position of the memory page in the order depends on whether a completed access of the memory page includes a write pointer transitioning off of the memory page; and

means for reusing a memory page that was added to a first end of the recycle list structure according to a most-recently used approach in a first case in which a completed access of the memory page includes a write pointer transitioning off of the memory page, and reusing a memory page that was added to a second end of the recycle list data structure according to a least-recently used approach in a second case in which a completed access of the memory page includes at least one of an access entity closing the queue associated with the memory page and a read pointer transitioning off of the memory page.

11. Software stored on a computer-readable storage medium for paging memory used for one or more queues including instructions for causing a computer system to:

provide a recycle list data structure that identifies memory pages including at least some memory pages that store at least a portion of at least one of the queues, and that represents an order in which the identified memory pages are to be reused;

maintain the recycle list data structure according to a history of access to a memory page that stores at least a portion of at least one of the queues, whereby a position of the memory page in the order depends on whether a completed access of the memory page includes a write pointer transitioning off of the memory page; and

reuse a memory page that was added to a first end of the recycle list data structure according to a most-recently used approach in a first case in which a completed access of the memory page includes a write pointer transitioning off of the memory page, and reuse a memory page that was added to a second end of the recycle list data structure according to a least-recently used approach in a second case in which a completed access of the memory page includes at least one of an access entity closing the queue associated with the memory page and a read pointer transitioning off of the memory page.

12. The method of claim 2 , further including reusing a memory page identified by the recycle list data structure to store a portion of one of the queues.

13. The method of claim 12 , wherein the reused memory page identified by the recycle list data structure stored a different portion of one of the queues before being reused.

14. The method of claim 12 , wherein the portion of one of the queues being stored to the reused memory page includes a queue message being written to a queue.

15. The method of claim 2 , wherein the memory pages that store the queues store queue messages and records relating to managing the queue messages.

16. The method of claim 1 , wherein, in the first case, the memory page stores a first portion of a queue and is reused to store a second portion of the queue.

17. The method of claim 16 , wherein a writer access entity writes the second portion to the memory page at a write pointer and a reader access entity reads data from the queue at a read pointer that lags the write pointer.

18. The method of claim 17 , wherein the memory page is repeatedly reused by the writer access entity to write to the queue before using any other memory page, leaving one or more least-recently used memory pages available for the reader access entity.

19. The method of claim 1 , wherein, in the second case, the memory page stores a portion of a first queue and is reused to store a portion of a second queue.

20. The method of claim 19 , wherein the portion of the second queue is stored to the memory page after the first queue is closed by an access entity.

21. The method of claim 1 , wherein, in the second case, the memory page stores a first portion of a queue and is reused to store a second portion of the queue.

22. The method of claim 21 , wherein a writer access entity writes the second portion to the memory page after a read pointer of a reader access entity reading the first portion transitions off of the memory page.

23. The method of claim 2 where logically ordered elements stored in the queues include multiple sequential queue messages.

24. The method of claim 23 , where the logically ordered elements include at least one record related to the sequential queue messages.

25. The method of claim 2 where logically ordered elements stored in the queues are written by a write access entity and read by at least one read access entity.

26. The method of claim 25 where the write access entity and the read access entity are different.

27. The method of claim 2 , further including:

opening a first queue in response to a request from a first access entity including storing a portion of the first queue in the first memory page after writing the contents of first memory page from the volatile memory store to the non-volatile memory store; and

providing a write pointer for the first queue to the first access entity.

28. The method of claim 27 , further including providing one or more read pointers for the first queue to one or more additional access entities.

29. The method of claim 28 , further including moving a second memory page storing a portion of the first queue to the recycle list after determining that none of the write pointer or read pointers are pointing to the second memory page.

30. The method of claim 11 , wherein, in the first case, the memory page stores a first portion of a queue and is reused to store a second portion of the queue.

31. The method of claim 30 , wherein a writer access entity writes the second portion to the memory page at a write pointer and a reader access entity reads data from the queue at a read pointer that lags the write pointer.

32. The method of claim 31 , wherein the memory page is repeatedly reused by the writer access entity to write to the queue before using any other memory page, leaving one or more least-recently used memory pages available for the reader access entity.

33. The method of claim 11 , wherein, in the second case, the memory page stores a portion of a first queue and is reused to store a portion of a second queue.

34. The method of claim 33 , wherein the portion of the second queue is stored to the memory page after the first queue is closed by an access entity.

35. The method of claim 11 , wherein, in the second case, the memory page stores a first portion of a queue and is reused to store a second portion of the queue.

36. The method of claim 35 , wherein a writer access entity writes the second portion to the memory page after a read pointer of a reader access entity reading the first portion transitions off of the memory page.

37. The method of claim 10 , wherein, in the first case, the memory page stores a first portion of a queue and is reused to store a second portion of the queue.

38. The method of claim 37 , wherein a writer access entity writes the second portion to the memory page at a write pointer and a reader access entity reads data from the queue at a read pointer that lags the write pointer.

39. The method of claim 38 , wherein the memory page is repeatedly reused by the writer access entity to write to the queue before using any other memory page, leaving one or more least-recently used memory pages available for the reader access entity.

40. The method of claim 10 , wherein, in the second case, the memory page stores a portion of a first queue and is reused to store a portion of a second queue.

41. The method of claim 40 , wherein the portion of the second queue is stored to the memory page after the first queue is closed by an access entity.

42. The method of claim 10 , wherein, in the second case, the memory page stores a first portion of a queue and is reused to store a second portion of the queue.

43. The method of claim 42 , wherein a writer access entity writes the second portion to the memory page after a read pointer of a reader access entity reading the first portion transitions off of the memory page.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2009
From: AB INITIO SOFTWARE LLC
To: ARCHITECTURE LLC
Reel/Frame 022460/0496 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2009
From: ARCHITECTURE LLC
To: AB INITIO TECHNOLOGY LLC
Reel/Frame 022460/0546 →
CHANGE OF NAME Recorded Feb 23, 2009
From: AB INITIO SOFTWARE CORPORATION
To: AB INITIO SOFTWARE LLC
Reel/Frame 022288/0828 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 14, 2005
From: STANFILL, CRAIG W.
To: AB INITIO SOFTWARE CORPORATION
Reel/Frame 016803/0933 →
Continuity (1)
Related Publication 20060294330A1 · Dec 28, 2006