US6199203B1
Expired / Lapsed
US
⏱️ 0.0 years remaining
Memory management techniques for on-line replaceable software
Assignee: Hewlett Packard Enterprise Development LP
•
Filing: 1998-07-21
•
Granted: 2001-03-06
•
Expires: 2018-07-21
Abstract
Abstract A system for managing the memory of a software component, such as a software library, such that the state of the software component is preserved after an update to the software component. There are two special types of memory allocated within the software component: transient memory and enduring memory. Memory needed to be preserved between two calls of the library is allocated as enduring memory. Transient memory persists until it is freed or when the software component is deleted, whichever comes first. Upon updating to a new version of a software component, the transient memory is released, while the enduring memory is preserved for use by the new version.
Inventors
- 👤 Michael L. Saboff
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-11-03 23:19
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/60; G06F8/65; G06F8/656
Claims Analysis
Total Claims: 25
Claim 1
Independent Claim
121 words
A computer program stored in a machine-readable form for managing memory in a digital computer to support the replacing of a software component, the program comprising: a means for allocating a block of memory as enduring memory for use by a software component; a means for deallocating a block of memory previously allocated as enduring memory; and an enduring memory data structure comprising zero or more enduring memory entries, each enduring memory entry indicating enduring memory allocated by the allocating means and not yet deallocated by the deallocating means, the enduring memory data structure accessible by the software component after the replacement of the software component, so as to allow the software component access to enduring memory allocated before the replacement.
Claim 2
Dependent Claim
121 words
A computer program stored in a machine-readable form for managing memory in a digital computer to support the replacing of a software component, the program comprising: a means for allocating a block of memory as enduring memory for use by a software component; a means for deallocating a block of memory previously allocated as enduring memory; and an enduring memory data structure comprising zero or more enduring memory entries, each enduring memory entry indicating enduring memory allocated by the allocating means and not yet deallocated by the deallocating means, the enduring memory data structure accessible by the software component after the replacement of the software component, so as to allow the software component access to enduring memory allocated before the replacement.
Claim 3
Dependent Claim
29 words
A program according to claim 1 , further comprising a means for re-establishing after the replacement of the software component a connection to enduring memory allocated before the replacement.
Claim 4
Dependent Claim
98 words
A program according to claim 1 , further comprising: a second allocating means for allocating a block of memory as transient memory for use by a software component; a second deallocating means for deallocating a block of memory previously allocated as transient memory; a transient memory data structure indicating transient memory allocated by the second allocating means and not yet deallocated by the second deallocating means; and a means for cleaning up all transient memory by deallocating using the second deallocating means all transient memory indicated by the transient memory data structure upon replacement of the software component.
Claim 5
Dependent Claim
17 words
A program according to claim 2 , wherein the enduring memory data structure is a linked list.
Claim 6
Dependent Claim
17 words
A program according to claim 3 , wherein the transient memory data structure is a linked list.
Claim 7
Dependent Claim
37 words
A program according to claim 1 , wherein each enduring memory entry includes an allocation identifier for marking an enduring memory entry, so that the enduring memory entry can be discovered by the software component after replacement.
Claim 8
Dependent Claim
15 words
A program according to claim 1 , where the software component comprises a software library.
Claim 9
Dependent Claim
15 words
A program according to claim 1 , where the software component comprises an executable program.
Claim 10
Dependent Claim
17 words
A program according to claim 1 , where the software component comprises a dynamically linked kernel module.
Claim 11
Dependent Claim
162 words
A software system for managing the memory of a replaceable software component, the system comprising: a digital computer with memory; a means for allocating the memory of the digital computer; a means for deallocating memory previously allocated by the allocating means; a software component; and a means for managing memory for the replaceable software component, the means comprising: a second allocating means for allocating a block of memory as enduring memory by use of the first allocating means for use by the software component, a second deallocating means for deallocating a block of memory previously allocated as enduring memory by use of the second allocating means; and an enduring memory data structure indicating enduring memory allocated by the second allocating means and not yet deallocated by the second deallocating means, the enduring memory data structure accessible by the software component after the replacement of the software component, so as to allow the software component access to enduring memory allocated before the replacement.
Claim 12
Dependent Claim
162 words
A software system for managing the memory of a replaceable software component, the system comprising: a digital computer with memory; a means for allocating the memory of the digital computer; a means for deallocating memory previously allocated by the allocating means; a software component; and a means for managing memory for the replaceable software component, the means comprising: a second allocating means for allocating a block of memory as enduring memory by use of the first allocating means for use by the software component, a second deallocating means for deallocating a block of memory previously allocated as enduring memory by use of the second allocating means; and an enduring memory data structure indicating enduring memory allocated by the second allocating means and not yet deallocated by the second deallocating means, the enduring memory data structure accessible by the software component after the replacement of the software component, so as to allow the software component access to enduring memory allocated before the replacement.
Claim 13
Dependent Claim
93 words
A memory management method for preserving the state of a software component between updates of the software component, the software component available in a first and a second version, the method comprising the steps of: allocating enduring memory in the first version of the software component; upgrading to the second version of the software component without freeing the enduring memory and without retaining the first version of the software component; and accessing the enduring memory allocated in the first version of the software component when executing the second version of the software component.
Claim 14
Dependent Claim
93 words
A memory management method for preserving the state of a software component between updates of the software component, the software component available in a first and a second version, the method comprising the steps of: allocating enduring memory in the first version of the software component; upgrading to the second version of the software component without freeing the enduring memory and without retaining the first version of the software component; and accessing the enduring memory allocated in the first version of the software component when executing the second version of the software component.
Claim 15
Dependent Claim
29 words
A memory management method according to claim 11 , wherein the step of allocating enduring memory includes maintaining an enduring memory data structure to manage the allocated enduring memory.
Claim 16
Dependent Claim
150 words
A memory management method for preserving the state of a software component between updates of the software component, the software component available in a first and a second version, the method comprising the steps of: allocating enduring memory in the first version of the software component; maintaining an enduring memory data structure to manage the allocated enduring memory; replacing the first version of the software component with the second version of the software component without freeing the enduring memory; re-establishing a connection between the second version of the software component and the enduring memory by iterating through the enduring memory data structure, so as to make the enduring memory allocated by the first version of the software component available to the second version of the software component; and accessing the enduring memory allocated in the first version of the software component when executing the second version of the software component.
Claim 17
Dependent Claim
150 words
A memory management method for preserving the state of a software component between updates of the software component, the software component available in a first and a second version, the method comprising the steps of: allocating enduring memory in the first version of the software component; maintaining an enduring memory data structure to manage the allocated enduring memory; replacing the first version of the software component with the second version of the software component without freeing the enduring memory; re-establishing a connection between the second version of the software component and the enduring memory by iterating through the enduring memory data structure, so as to make the enduring memory allocated by the first version of the software component available to the second version of the software component; and accessing the enduring memory allocated in the first version of the software component when executing the second version of the software component.
Claim 18
Dependent Claim
31 words
A memory management method according to claim 13 , wherein the step of using the enduring memory includes locating the enduring memory by using the connection established in the re-establishing step.
Claim 19
Dependent Claim
108 words
A memory management method for preserving the state of a software component between updates of the software component, the software component available in a first and a second version, the method comprising the steps of: allocating enduring memory in the first version of the software component; allocating transient memory in the first version of the software component; upgrading to the second version of the software component without freeing the enduring memory; deallocating all of the transient memory in the first version of the software component; and accessing the enduring memory allocated in the first version of the software component when executing the second version of the software component.
Claim 20
Dependent Claim
108 words
A memory management method for preserving the state of a software component between updates of the software component, the software component available in a first and a second version, the method comprising the steps of: allocating enduring memory in the first version of the software component; allocating transient memory in the first version of the software component; upgrading to the second version of the software component without freeing the enduring memory; deallocating all of the transient memory in the first version of the software component; and accessing the enduring memory allocated in the first version of the software component when executing the second version of the software component.
Claim 21
Dependent Claim
65 words
A memory management method according to claim 15 , wherein: the step of allocating transient memory in the first version of the software component includes maintaining the transient memory in a data structure; and the step of deallocating the transient memory in the first version of the software component includes iterating through the transient memory data structure to locate all transient memory to be deallocated.
Claim 22
Dependent Claim
154 words
A memory management method for preserving the state of a software component between updates of the software component, the software component available in a first and a second version, the method comprising the steps of: making a first request to allocate enduring memory in the first version of the software component, the first request including an allocation identifier; allocating an enduring memory block marked with the allocation identifier of the first request; upgrading to the second version of the software component; making a second request to allocate enduring memory in the second version of the software component, the second request including an allocation identifier and an indication of a preference for reuse; and if any enduring memory block is marked with an allocation identifier that matches the allocation identifier of the second request, returning the matching enduring memory block, otherwise allocating an enduring memory block marked with the allocation identifier of the second request.
Claim 23
Dependent Claim
154 words
A memory management method for preserving the state of a software component between updates of the software component, the software component available in a first and a second version, the method comprising the steps of: making a first request to allocate enduring memory in the first version of the software component, the first request including an allocation identifier; allocating an enduring memory block marked with the allocation identifier of the first request; upgrading to the second version of the software component; making a second request to allocate enduring memory in the second version of the software component, the second request including an allocation identifier and an indication of a preference for reuse; and if any enduring memory block is marked with an allocation identifier that matches the allocation identifier of the second request, returning the matching enduring memory block, otherwise allocating an enduring memory block marked with the allocation identifier of the second request.
Claim 24
Dependent Claim
145 words
A utility to manage the replacement of an implementation library embodied in a computer, the implementation library including one or more state variables, each state variable having a respective value, and the values of the state variables together defining a state of the implementation library, the utility comprising: a software means for managing the memory allocation of the implementation library so that the state of the implementation library can be restored upon update of the implementation library; a software means for managing the loading and unloading of implementation libraries while maintaining program correctness; and a service registry including at least one entry for mapping a user application of the implementation library to the implementation library, so that the implementation library can be modified while the user application is executing, thereby enabling the implementation library to be modified while maintaining the state of the implementation library.
Claim 25
Dependent Claim
145 words
A utility to manage the replacement of an implementation library embodied in a computer, the implementation library including one or more state variables, each state variable having a respective value, and the values of the state variables together defining a state of the implementation library, the utility comprising: a software means for managing the memory allocation of the implementation library so that the state of the implementation library can be restored upon update of the implementation library; a software means for managing the loading and unloading of implementation libraries while maintaining program correctness; and a service registry including at least one entry for mapping a user application of the implementation library to the implementation library, so that the implementation library can be modified while the user application is executing, thereby enabling the implementation library to be modified while maintaining the state of the implementation library.
References Cited (Backward Citations)
US5854937A
Cited
US6014725A
Cited
US5903753A
Cited
US5838981A
Cited
US5960445A
Cited
US5933646A
Cited
US5937198A
Cited
US5922072A
Cited
US5930515A
Cited
US5991544A
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 2004-03-05 | 2004-09-04 | 2005-03-06 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2008-03-05 | 2008-09-04 | 2009-03-06 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2012-03-05 | 2012-09-04 | 2013-03-06 | $7700.00 | Window Closed / Lapsed |