Everything about Buddy memory allocation
Computer algorithm
The buddy memory allocation technique is a memory allocation algorithm that divides memory into partitions to try to satisfy a memory request as suitably as possible. This system makes use of splitting memory into halves to try to give a best fit. According to Donald Knuth, the buddy system was invented in 1963 by Harry Markowitz, and was first described by Kenneth C. Knowlton. The Buddy memory allocation is relatively easy to implement. It supports limited but efficient splitting and coalescing of memory blocks. Wikipedia →
🧭 Start here: a 6-step reading path
- Read the overview: Buddy memory allocationA 5-minute orientation
- Pick up a classic book: An introduction to data structures with applicationsThe most-reprinted book on the subject
- Read the landmark paper: Memory fragmentation in buddy methods for dynamic storage allocationCited 18 times
- Go sideways: Memory managementA closely related topic
- Go sideways: Fragmentation (computing)A closely related topic
📖 Definitions
Noun A form of memory allocation that divides memory into partitions to try to satisfy a memory request as suitably as possible.
🗂️ The subject at a glance
🏆 Landmark papers (most cited)
Memory fragmentation in buddy methods for dynamic storage allocation
A Simple Hardware Buddy System Memory Allocator
Block Level TLB Coalescing for Buddy Memory Allocator
iBuddy: Inverse Buddy for Enhancing Memory Allocation/Deallocation Performanceon Multi-Core Systems
Wear-leveling-aware buddy-like memory allocator for persistent memory file systems
K-Level with Buddy Memory Allocation (BMA) Approach for Parallel Workload Scheduling
📚 Books worth reading
An introduction to data structures with applicationsJean-Paul Tremblay, Paul Gordon Sorenson · 1976
Data structures using C and C++Yedidyah Langsam · 2000
Data structures using Cand C[plus plus]Yedidyah Langsam · 1996
Ranked by number of editions on Open Library, a rough measure of how lasting a book is.
🔗 Related topics
- Memory management Memory management (also dynamic memory management, dynamic storage allocation, or dynamic memory allocation) is a form of resource management applied to…
- Fragmentation (computing) In computer storage, fragmentation is a phenomenon in the computer system which involves the distribution of data into smaller pieces so that storage space…
- C dynamic memory allocation C dynamic memory allocation refers to performing manual memory management for dynamic memory allocation in the C programming language via a group of functions…
- New and delete (C++) In the C++ programming language, new and delete are a pair of language constructs that perform dynamic memory allocation, object construction and object…
- Memory management unit A memory management unit (MMU), sometimes called paged memory management unit (PMMU), is a computer hardware unit that examines all references to memory…
- Slab allocation Slab allocation is a memory management mechanism intended for the efficient memory allocation of objects. In comparison with earlier mechanisms, it reduces…
- Page (computer memory) A page, memory page, or virtual page is a fixed-length contiguous block of virtual memory, described by a single entry in a page table. It is the smallest…
- Memory paging In computer operating systems, memory paging is a memory management scheme that introduces a level of indirection between physical and logical addresses…