Results 1 
7 of
7
Dynamic storage allocation: A survey and critical review
, 1995
"... Dynamic memory allocation has been a fundamental part of most computer systems since roughly 1960, and memory allocation is widely considered to be either a solved problem or an insoluble one. In this survey, we describe a variety of memory allocator designs and point out issues relevant to their de ..."
Abstract

Cited by 206 (6 self)
 Add to MetaCart
Dynamic memory allocation has been a fundamental part of most computer systems since roughly 1960, and memory allocation is widely considered to be either a solved problem or an insoluble one. In this survey, we describe a variety of memory allocator designs and point out issues relevant to their design and evaluation. We then chronologically survey most of the literature on allocators between 1961 and 1995. (Scores of papers are discussed, in varying detail, and over 150 references are given.) We argue that allocator designs have been unduly restricted by an emphasis on mechanism, rather than policy, while the latter is more important; higherlevel strategic issues are still more important, but have not been given much attention. Most theoretical analyses and empirical allocator evaluations to date have relied on very strong assumptions of randomness and independence, but real program behavior exhibits important regularities that must be exploited if allocators are to perform well in practice.
Buddy Systems
 Communications of the ACM
, 1974
"... Two algorithms are presented for implementing any of a class of buddy systems for dynamic storage allocation. Each buddy system corresponds to a set of recurrence relations which relate the block sizes provided to each other. Analyses of the internal fragmentation of the binary buddysystem, the ..."
Abstract

Cited by 37 (0 self)
 Add to MetaCart
Two algorithms are presented for implementing any of a class of buddy systems for dynamic storage allocation. Each buddy system corresponds to a set of recurrence relations which relate the block sizes provided to each other. Analyses of the internal fragmentation of the binary buddysystem, the Fibonai buddy system, and the weighted buddy system are given. Comparative simulation results are also presented for internal, external and total fragmentation.
Fast Allocation and Deallocation with an Improved Buddy System
 IN PROCEEDINGS OF THE 19TH CONFERENCE ON THE FOUNDATIONS OF SOFTWARE TECHNOLOGY AND THEORETICAL COMPUTER SCIENCE (FST & TCS'99), LECTURE NOTES IN COMPUTER SCIENCE
, 1999
"... We propose several modifications to the binary buddy system for managing dynamic allocation of memory blocks whose sizes are powers of two. The standard buddy system allocates and deallocates blocks in \Theta(lg n) time in the worst case (and on an amortized basis), where n is the size of the me ..."
Abstract

Cited by 6 (2 self)
 Add to MetaCart
We propose several modifications to the binary buddy system for managing dynamic allocation of memory blocks whose sizes are powers of two. The standard buddy system allocates and deallocates blocks in \Theta(lg n) time in the worst case (and on an amortized basis), where n is the size of the memory. We present two schemes that improve the running time to O(1) time, where the time bound for deallocation is amortized. The first scheme uses one word of extra storage compared to the standard buddy system, but may fragment memory more than necessary. The second scheme has essentially the same fragmentation as the standard buddy system, and uses O(2 (1+ p lg n) lg lg n ) bits of auxiliary storage, which is !(lg k n) but o(n " ) for all k 1 and " ? 0. Finally, we present simulation results estimating the effect of the excess fragmentation in the first scheme.
Fast Allocation and Deallocation with an Improved Buddy System
, 2003
"... We propose several modifications to the binary buddy system for managing dynamic allocation of memory blocks whose sizes are powers of two. The standard buddy system allocates and deallocates blocks in Θ(lg n) time in the worst case (and on an amortized basis), where n is the size of the memory. We ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
We propose several modifications to the binary buddy system for managing dynamic allocation of memory blocks whose sizes are powers of two. The standard buddy system allocates and deallocates blocks in Θ(lg n) time in the worst case (and on an amortized basis), where n is the size of the memory. We present three schemes that improve the running time to O(1) time, where the time bound for deallocation is amortized for the first two schemes. The first scheme uses just one more word of memory than the standard buddy system, but may result in greater fragmentation than necessary. The second and third schemes have essentially the same fragmentation as the standard buddy system, and use O(2 (1+ √ lg n) lg lg n) bits of auxiliary storage, which is ω(lg k n) but o(n ε) for all k ≥ 1 and ε> 0. Finally, we present simulation results estimating the effect of the excess fragmentation in the first scheme.
An Empirical Evaluation of Extendible Arrays
"... Abstract. We study the performance of several alternatives for implementing extendible arrays, which allow random access to elements stored in them, whilst allowing the arrays to be grown and shrunk. The study not only looks at the basic operations of grow/shrink and accessing data, but also the eff ..."
Abstract
 Add to MetaCart
Abstract. We study the performance of several alternatives for implementing extendible arrays, which allow random access to elements stored in them, whilst allowing the arrays to be grown and shrunk. The study not only looks at the basic operations of grow/shrink and accessing data, but also the effects of memory fragmentation on performance. 1
unknown title
"... The method, the tools and rationales for assessing dynamic memory efficiency in embedded realtime systems in practice ..."
Abstract
 Add to MetaCart
The method, the tools and rationales for assessing dynamic memory efficiency in embedded realtime systems in practice
Memory Allocation Algorithms
, 1972
"... identify all the kinds of storage which the supervisor implements. This class of channels will not be considered further. The following simple principle is sufficient to block all legitimate and covert channels. Masking: A program to be confined must allow its caller to determine all its inputs into ..."
Abstract
 Add to MetaCart
identify all the kinds of storage which the supervisor implements. This class of channels will not be considered further. The following simple principle is sufficient to block all legitimate and covert channels. Masking: A program to be confined must allow its caller to determine all its inputs into legitimate and covert channels. We say that the channels are masked by the caller. At first sight it seems absurd to allow the customer to determine the bill, but since the service has the right to reject the call, this scheme is an exact model of the purchase order system used for industrial procurement. Normally the vendor of the service will publish specifications from which the customer can compute the bill, and this computation might even be done automatically from an algorithmic specification by a trusted intermediary. In the case of the covert channels one further point must be made. Enforcement: The supervisor must ensure that a confined program's input to covert channels conforms to the caller's specifications. This may require slowing the program down, generating spurious disk references, or whatever, but it is conceptually straightforward. The cost of enforcement may be high. A cheaper alternative (if the customer is willing to accept some amount of leakage) is to bound the capacity of the covert channels.