IP Library Patent Application 12752563
Patent Application
App. No. 12/752,563

MEMORY POOLING IN SEGMENTED MEMORY ARCHITECTURE

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 None
App. No.
12/752,563
Abstract

Methods and computing systems for managing memory are disclosed. One computing system implementing a memory management scheme includes a plurality of memory pools formed in a segment-addressable memory, each of the memory pools including one or more pool areas having a common size and a size class, wherein the size class defines a maximum amount of memory able to be allocated from the memory pool. The computing system includes a memory management system interfaced to the segment-addressable memory, the memory management system including one or more memory pool tracking lists configured to track usage of the plurality of memory pools.

Claims (40)

1 . A computing system implementing a memory management scheme, the computing system comprising:

a plurality of memory pools formed in a segment-addressable memory, each of the memory pools including one or more pool areas having a common size and a size class, wherein the size class defines a maximum amount of memory able to be allocated from the memory pool area;

a memory pool management system interfaced to the segment-addressable memory, the memory pool management system including one or more memory pool tracking lists configured to track usage of the plurality of memory pools.

2 . The computing system of claim 1 , wherein the plurality of memory pools includes at least one size pool and at least one structure pool.

3 . The computing system of claim 1 , wherein the size class differs between memory pools.

4 . The computing system of claim 1 , wherein each pool area includes pool area control data and a plurality of pool objects.

5 . The computing system of claim 4 , wherein each of the plurality of pool objects has a fixed size.

6 . The computing system of claim 1 , wherein the one or more memory pool tracking lists includes a full area list, a partial area list, and an empty area list.

7 . A method of managing memory in a computing system having a segment addressable memory, the method comprising:

allocating memory in a computing system, wherein allocating memory includes:

identifying a memory pool in which memory is to be allocated, the memory pool including at least one memory pool area and selected from among a plurality of memory pools having a common size and a size class, wherein the size class defines a maximum amount of memory able to be allocated from the memory pool;

locking the memory pool;

locating a memory pool area within the memory pool having an available entry;

updating an availability of the memory pool;

updating a status of the memory pool area; and

unlocking the memory pool area.

8 . The method of claim 7 , wherein updating a status of the memory pool area includes decrementing a count of available pool area objects.

9 . The method of claim 8 , wherein updating an availability of the memory pool includes removing a pool object from a list of the available pool objects.

10 . The method of claim 7 , wherein updating a status of the memory pool area includes updating one or more of a plurality of memory pool tracking lists, the memory pool tracking lists including a full area list, a partial area list, and an empty area list.

11 . The method of claim 7 , wherein locating a memory pool area within the memory pool comprises:

allocating from a partially full memory pool area within the memory pool; and

upon determining that no partially full memory pool area exists, allocating from an empty memory pool area.

12 . The method of claim 7 , wherein locking the memory pool causes a lock of the at least one memory pool area associated with the memory pool without locking memory external to the at least one memory pool area.

13 . The method of claim 7 , further comprising:

deallocating memory in the computing system, wherein deallocating memory includes:

determining if an object stored in memory is in a memory pool;

If the object is stored in a pool object of a memory pool, determining a memory pool area in which the object is stored;

locking the memory pool including the memory pool area in which the object is stored;

updating an availability of the memory pool;

updating a status of the memory pool area; and

unlocking the memory pool.

14 . The method of claim 13 , wherein updating an availability of the memory pool includes incrementing a count of available pool area objects.

15 . The method of claim 13 , wherein updating a status of the memory pool area includes updating one or more of a plurality of memory pool tracking lists, the memory pool tracking lists including a full area list, a partial area list, and an empty area list.

16 . The method of claim 13 , wherein updating an availability of the memory pool includes linking the pool object to a list of available pool objects associated with the memory pool.

17 . The method of claim 7 , further comprising compacting the memory pool areas, wherein compacting includes consolidating data stored in two or more partially filled memory pool areas within a memory pool.

18 . The method of claim 7 , further comprising, while the memory pool is locked, allocating memory in a different memory pool selected from among the plurality of memory pools.

19 . The method of claim 7 , further comprising periodically assessing a number of empty memory pool areas, and, upon determining that an excess number of empty memory pool areas exist within a memory pool, eliminating one or more of the empty memory pool areas.

20 . A computing system implementing a memory management scheme, the computing system comprising:

a plurality of memory pools formed in a segment-addressable memory, each of the memory pools including one or more memory pool areas including pool area control data and a plurality of pool objects, each of the memory pool areas having a common size and a size class, wherein the size class defines a size of each of the plurality of pool objects in that memory pool area;

a memory pool management system interfaced to the segment-addressable memory, the memory pool management system including a plurality of memory pool tracking lists including a full area list, a partial area list, and an empty area list, the memory pool tracking lists configured to track usage of the plurality of memory pools, the memory pool management system configured to, in response to a memory allocation request, select a memory pool, memory pool area, and pool object from which memory can be allocated.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Nov 9, 2017
From: WELLS FARGO BANK, NATIONAL ASSOCIATION (SUCCESSOR TO GENERAL ELECTRIC CAPITAL CORPORATION)
To: UNISYS CORPORATION
Reel/Frame 044416/0358 →
RELEASE OF SECURITY INTEREST Recorded Mar 26, 2013
From: DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL TRUSTEE
To: UNISYS CORPORATION
Reel/Frame 030082/0545 →
RELEASE OF SECURITY INTEREST Recorded Mar 15, 2013
From: DEUTSCHE BANK TRUST COMPANY
To: UNISYS CORPORATION
Reel/Frame 030004/0619 →
SECURITY AGREEMENT Recorded Jun 27, 2011
From: UNISYS CORPORATION
To: GENERAL ELECTRIC CAPITAL CORPORATION, AS AGENT
Reel/Frame 026509/0001 →