Structure and method for managing available memory resources
AssigneeEmulex Design & Manufacturing Corporation
InventorsGlenn Dearth, Carl J. Lindeborg, Robin L. Brown, James A. Duda, Sudhir Srinivasan
Life of this patent
Estimating the term…
Abstract
In a digital data processing system having a memory component, a structure and method for managing available memory resources. Free pointers to respective free memory blocks are stored in memory blocks maintained as a linked list. In a system having a hierarchically-organized memory component, a small number of the free pointers are maintained at a relatively higher performance level of the memory and the balance of the free pointers are maintained at a relatively lower performance level of the memory.
Claims27
In a digital data processing system having a memory component, a method for managing available resources in said memory, comprising:
- partitioning a first portion of said memory into n blocks;
- allocating m of said blocks as pointer blocks, each adapted to store at most s pointers, where (n>m), (n>s) and ((m*s)≧(n−m));
- for each of said (n−m) blocks, creating a pointer which points to said block;
- storing s of said pointers in each of the first (m−1) of said pointer blocks;
- and
- storing the remaining ((n−m)-(m−1)*s)) of said pointers in the last of said pointer blocks;
- wherein the pointers stored in said pointer blocks comprise a free pointer list.
In a digital data processing system having a memory component, a method for managing available resources in said memory, comprising:
- partitioning a first portion said memory into at least first and second blocks;
- allocating said first block as a first pointer block;
- creating a first pointer which points to said second block;
- and
- storing said first pointer in said first pointer block;
- wherein the pointers stored in said pointer blocks comprise a free pointer list.
In a digital data processing system having a memory component, a method for managing available resources in said memory, comprising:
- partitioning a first portion of said memory into blocks;
- creating a free pointer list comprised of pointers, each of which points to a respective one of said blocks;
- as blocks are allocated, removing the respective pointers from said free pointer list;
- and
- as blocks are deallocated, adding respective pointers to said free pointer list.
A method for managing, in a digital data processing system having a memory component, available resources in said memory, comprising:
- partitioning a first portion of said memory into a set of free blocks;
- maintaining as a free pointer list a linked list of a first set of said free blocks, each storing an ordered set of free pointers to each of the free blocks in a second set of said free blocks;
- in response to a first request from said system:
- allocating the block in said set of free blocks pointed to by the free pointer at the head of said free pointer list;
- and
- removing from said free pointer list said pointer at the head thereof;
- and
- in response to a second request from said system:
- returning an allocated block to said set of free blocks;
- and
- adding to said free pointer list at the head thereof a free pointer to said returned block.
In a digital data processing system having a memory component, a method for managing available resources in said memory, comprising:
- partitioning a first portion of said memory into at least n+1 free blocks;
- allocating as a free pointer block a first one of said free blocks, said first free block being sized to store at least n free pointers each at a respective slot within said block;
- initializing a head pointer to point to a first one of said slots in said free pointer block;
- for each of said n other free blocks:
- storing into the slot in said free pointer block pointed to by said head pointer a free pointer to a respective one of said n free blocks;
- and
- advancing said head pointer to point to a next succeeding slot in said free pointer block;
- in response to a first request from said system:
- retrieving from said free pointer block the one of said free pointers stored therein pointed to by said head pointer;
- allocating the free block pointed to by said retrieved free pointer;
- and
- retracting said head pointer to point to a next preceding slot in said free pointer block;
- and
- in response to a second request from said system:
- advancing said head pointer to point to a next succeeding slot in said free pointer block;
- returning an allocated block to said set of free blocks;
- and
- storing into the slot in said free pointer block pointed to by said head pointer a free pointer to said returned free block.
Dependencies are inferred from the claim text.