Fast allocation and deallocation with an improved buddy system

  • Authors:
  • Stølting Brodal;D. Demaine;Ian Munro

  • Affiliations:
  • University of Aarhus, BRICS, Department of Computer Science, IT-Parken, Åbogade 34, 8200, Århus N, Denmark;MIT Computer Science and Artificial Intelligence Laboratory, BRICS, Department of Computer Science, 32 Vassar Street, MA 02139, Cambridge, USA;University of Waterloo, School of Computer Science, 32 Vassar Street, N2L 3G1, Waterloo, Ontario, Canada

  • Venue:
  • Acta Informatica
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

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 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 + \sqrt{\lg n}) \lg \lg n})$ bits of auxiliary storage, which is $\omega(\lg^k n)$ but $o(n^\varepsilon)$ for all $k \geq 1$ and $\varepsilon 0$. Finally, we present simulation results estimating the effect of the excess fragmentation in the first scheme.