Patent ID: 7330956
Filing Date: 2008-02-12
Classification: G06F

Abstract:
1. A method of managing memory, comprising: subdividing a first volatile memory into at least a first linked list of blocks corresponding to a first size and at least a second linked list of blocks corresponding to a second size that is greater than said first size, wherein data stored by each linked list of blocks is provided entirely in the first volatile memory, and wherein each of the at least first and second linked lists of blocks are linked lists of blocks wherein each block has a pointer to a different block of memory in which user data is stored; providing, in a second volatile memory different from said first memory, a table that includes pointers that point directly to a first block of each of said linked lists, wherein the second volatile memory does not contain any linked lists of blocks provided in the first volatile memory; in response to a request for an amount of memory that is less than or equal to the first size, providing a pointer to said first block of said first linked list of blocks and modifying said table to point to a remaining portion of said first linked list of blocks that does not include said first block; in response to a request for an amount of memory that is greater than the first size and less than or equal to the second size, providing a pointer to said first block of said second linked list of blocks and modifying said table to point to a remaining portion of said second linked list of blocks that does not include said first block of said second linked list of blocks; and in response to a request for an amount of memory corresponding to a particular linked list of blocks for which there are no unused blocks, requesting a first block of memory from a first heap for the particular one of the linked list of blocks and requesting a second block of memory from a second heap for a corresponding one of the different blocks of memory in which user data is stored.