Systems And Methods Of Memory And Access Management
First Claim
1. A memory and access management system for reducing both memory access errors and memory management errors for a language with features comprising synchronization-free, atomic pointers comprising atomic dereferencing of a pointer to scalar, the language furthermore featuring manual memory management, automatic memory management, or both, such that pointer metadata tracking by the system for reducing the errors is necessary, the language supporting dynamically allocating, moving or de-allocating memory to one or more objects of an application program, an object having a data part containing one or more values and a pointer part containing one or more pointers, the system comprising:
- a heap memory pool containing a memory space to be assigned to an object of the application program;
a processor configured for reading the pointer part of the object and checking access to the object; and
an interface coupled with the processor for dynamically allocating, moving or de-allocating the data part of the object to defragment, manage or optimize the heap memory pool and, updating the address location of the data part contained in one or more pointers in the pointer part upon moving the data part, thereby eliminating all errors comprising inter-object spatial memory access violations, temporal memory access violations, pointers invulnerability violations, and memory management errors for the object.
0 Assignments
0 Petitions
Accused Products
Abstract
A memory and access management system for reducing memory access errors or management errors or runtime errors while dynamically allocating, moving or de-allocating memory to one or more objects of an application program is disclosed. The object may have a data part containing one or more values and a pointer part containing one or more pointers. The system may include a heap memory pool containing memory space to be assigned to the object and a processor for reading the pointer part. An interface coupled with the processor may be provided for dynamically allocating, moving or de-allocating the data part of the object to defragment, manage or optimize the heap memory pool and updating the address location of the data part contained in one or more pointers upon moving the data part, thereby reducing memory access errors, management errors or runtime errors while allocating, moving or de-allocating memory to the object.
65 Citations
70 Claims
-
1. A memory and access management system for reducing both memory access errors and memory management errors for a language with features comprising synchronization-free, atomic pointers comprising atomic dereferencing of a pointer to scalar, the language furthermore featuring manual memory management, automatic memory management, or both, such that pointer metadata tracking by the system for reducing the errors is necessary, the language supporting dynamically allocating, moving or de-allocating memory to one or more objects of an application program, an object having a data part containing one or more values and a pointer part containing one or more pointers, the system comprising:
-
a heap memory pool containing a memory space to be assigned to an object of the application program; a processor configured for reading the pointer part of the object and checking access to the object; and an interface coupled with the processor for dynamically allocating, moving or de-allocating the data part of the object to defragment, manage or optimize the heap memory pool and, updating the address location of the data part contained in one or more pointers in the pointer part upon moving the data part, thereby eliminating all errors comprising inter-object spatial memory access violations, temporal memory access violations, pointers invulnerability violations, and memory management errors for the object. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
-
29. An invulnerable pointer for identifying an object in a heap memory pool and supporting pointer-to-pointer cast or pointer arithmetic such that the pointer cannot be overwritten by a non-pointer value or read as a non-pointer value.
-
30. A deferred free operation over an object for manual memory management, the operation comprising the steps of:
-
saving the object in a cache of objects; and freeing the cached objects later as a group using barrier synchronization. - View Dependent Claims (31)
-
- 32. A read-only memory layout for a static type comprising bitwise representation of pointer-sized or pointer-aligned entities including pointer and non-pointer data, with one bit value representing a pointer datum and the other bit value representing non-pointer data.
-
44. A method of shielding a vulnerable resource in the heap memory pool, the method comprises the steps of:
-
storing the vulnerable resource in an object in the heap memory pool; and representing the vulnerable resource by an invulnerable pointer to the object. - View Dependent Claims (45)
-
-
46. A method for encoding an un-encoded pointer comprising the steps of:
-
identifying an object for the un-encoded pointer by searching through a cache of previously decoded pointers'"'"' objects or using the object of a hinted encoded pointer or deferring the identification till a hash table of objects is dynamically constructed; and using the address location or version of the object to build the encoded pointer.
-
-
47. An extended gap structure comprising at least four fields stored at one end of an unused memory block of a heap memory pool comprising:
-
a first field pointing to the other end of the memory block; a second field pointing to a list of gaps; a third and fourth field maintaining a doubly-linked list of gaps according to location-wise sorted order among gaps representing the entire set of unused memory blocks in the heap memory pool. - View Dependent Claims (48)
-
-
49. A probabilistically-applicable deterministic, precise garbage collector comprising:
a precise garbage collector with object moving functionality having a lightweight screening mechanism for determining applicability that decides whether collected putative pointers are also precise pointers. - View Dependent Claims (50)
-
51. A method for reducing both memory access errors and memory management errors for a language with features comprising synchronization-free, atomic pointers comprising atomic dereferencing of a pointer to scalar, the language furthermore featuring manual memory management, automatic memory management, or both, such that pointer metadata tracking by the system for reducing the errors is necessary, the language supporting dynamically allocating, moving or de-allocating memory to one or more objects of an application program, an object having a data part containing one or more values and a pointer part containing one or more pointers, the method comprising the steps of:
-
assigning a memory space contained in a heap memory pool to an object of the application program, reading the pointer part of the object and checking access to the object; dynamically allocating, moving or de-allocating the data part of the object to defragment, manage or optimize the heap memory pool; and updating the address location of the object'"'"'s data part contained in one or more pointers in the object'"'"'s pointer part upon moving the data part, thereby eliminating all errors comprising inter-object spatial memory access violations, temporal memory access violations, pointer invulnerability violations, and memory management errors for the object.
-
-
52. A mark method for a conservative garbage collector, such that the method identifies memory reachable from a root set of an application program, the root set comprising a stack, globals and static data section, and registers for the application program, the mark method comprising the steps of:
-
identifying putative encoded pointers in the root set; recognizing a putative encoded pointer as a discovered encoded pointer only if a live or free object in the heap memory pool exists for the putative encoded pointer; marking a live object pointed by a live putative encoded pointer as reachable memory; adding marked live objects to the root set; and repeating the above steps again till the root set stops changing. - View Dependent Claims (53, 54)
-
-
55. A recursive formulation of a mark method of a garbage collector, comprising the steps of:
-
marking an object with a deferred-marking tag for deferring the recursive marking of the object when the recursion depth has exceeded a user-specified bound; and executing the mark method on the deferred-marking tagged objects. - View Dependent Claims (56)
-
-
57. A method for re-cycling object version in a memory and access management system, the method comprises the steps of:
-
enumerating locally optimized last version candidates; and choosing the best last version candidate among locally optimized last version candidates by selecting the candidate with maximum total version space for objects. - View Dependent Claims (58, 59, 60)
-
-
61. A try block for backward compatibility, such that the try block runs in a scope where free variables comprising pointers consist only of decoded pointers.
-
62. A mark method for precise garbage collectors (GC), such that the method identifies memory reachable from a root set of an application program, the root set comprising a stack, global and static data section, and registers for the application program, the mark method comprising the steps of:
-
a. identifying invulnerable, encoded pointers in the root set; b. marking a live object pointed by a live encoded pointer as reachable memory; c. adding marked live objects to the root set; and d. repeating the above steps again till the root set stops changing. - View Dependent Claims (63, 64)
-
-
65. (canceled)
-
66. A manual memory management system operable in a computing environment comprising a means for deferred freeing of an object, comprising:
-
a means for saving the object in a cache of objects; and a means for freeing the cached objects later as a group using barrier synchronization.
-
-
67. A conservative garbage collector operable in a computing environment comprising a mark means for identifying memory reachable from a root set of an application program, the root set comprising a stack, globals and static data section, and registers for an application program, the mark means comprising:
-
a means for identifying putative encoded pointers in the root set; a means for recognizing a putative encoded pointer as a discovered encoded pointer only if a live or free object in a heap memory pool exists for the putative encoded pointer; a means for marking a live object pointed by a live discovered encoded pointer as reachable memory; a means for adding marked live objects to the root set; and a means for repeatedly applying the above means till the root set stops changing.
-
-
68. A garbage collector operable in a computing environment with a recursive marking means comprising:
-
a means for marking an object with a deferred-marking tag for deferring the recursive marking of the object when the recursion depth exceeds a user-specified bound; and a means for executing the recursive marking means on the deferred-marking tagged objects.
-
-
69. A precise garbage collector operable in a computing environment comprising a mark means for identifying memory reachable from a root set of an application program, the root set comprising a stack, global and static data section, and registers for the application program, the mark means comprising:
-
a means for identifying invulnerable, encoded pointers in the root set; a means for marking a live object pointed by a live encoded pointer as reachable memory; a means for adding marked live objects to the root set; and a means for repeatedly applying the above means till the root set stops changing.
-
-
70. A memory and access management system, for reducing both memory access errors and memory management errors for a language with features comprising synchronization-free, atomic pointers comprising atomic dereferencing of a pointer to scalar, the language furthermore featuring manual memory management, automatic memory management, or both, the language allowing expression of one or more programs containing one or more reducible errors, the language supporting dynamically allocating, moving or de-allocating memory to one or more objects of an application program, an object having a data part containing one or more values and a pointer part containing one or more pointers, the system comprising:
-
a heap memory pool containing a memory space to be assigned to an object of the application program; a processor configured for reading the pointer part of the object and checking access to the object; and an interface coupled with the processor for dynamically allocating, moving or de-allocating the data part of the object to defragment, manage or optimize the heap memory pool and, updating the address location of the data part contained in one or more pointers in the pointer part upon moving the data part, thereby eliminating all errors comprising inter-object spatial memory access violations, temporal memory access violations, pointer invulnerability violations, and memory management errors for the object.
-
Specification