Book review: “Memory management: Algorithms and Implementation in C/C++” by Bill Blunden
December 21st, 2009 at 6:33 pmMemory allocation is a fascinating area, ripe in trade-offs and cutting-edge research. In this book, Bill Blunden manages to provide a pretty-good overview of the topic.
It begins with an introduction of the lowest levels – the hardware, namely the CPU memory management unit. Then it goes on to explain how operating systems manage memory – segmentation, paging, virtual memory and what’s between them. Next, memory is examined on the programming-language level – compiler-level and heap allocation mechanisms in Fortran, COBOL, Pascal, C and finally Java.
The second part of the book is the practice: the author implements several manual memory management schemes (own implementations of malloc/free) in C++, and compares them in terms of performance and other characteristics (like memory fragmentation). Finally, he implements a couple of simple garbage collectors (reference-counting, and mark-sweep), and in the last chapter of the book also briefly mentions the important topic of sub-allocators (also known as “pools” or “arenas”).
Overall, I enjoyed the book. But I do have a few points of (constructive) criticism. First of all, the book is a bit too conversational for such a technical work. It feels like a collection of blog posts, and thus also lacks in depth. For example, the section on memory management of Windows is quite disappointing. As much as I can admire the author’s attempt to show his exploration process armed by various tracing and monitoring tools, much of this information is well known and has been described. Instead, I would expect a more thorough presentation of the topic.
The other problem is the C++ code. C++ code in books is a pet peeve of mine – for some reason it tends to be exceptionally bad in most of them, and this book is no exception. I won’t go into examples because there are simply too many, so just a word of advice: if you intend to follow through this book actually implementing the code (always a good idea!) read about the algorithms the author describes, but write your own implementation. There’s nothing good to learn from the C++ code in this book, so you might as well get some more practice on your own.
Related posts:
- memmgr – a fixed-pool memory allocator
- Book review: “The 25 Best Time Management Tools & Techniques” by P. Dodd and D. Sundheim
- Book review: “TCP/IP Illustrated, Volume 1: The Protocols” by W. Richard Stevens
- Book review: “A short history of nearly everything ” by Bill Bryson
- Book review: “In a sunburned country” by Bill Bryson

December 21st, 2009 at 19:17
I have just received this book. Good to know that there is nothing horribly wrong with it
I’m hoping the conversational tone will be an advantage for a beginner such as I.
January 3rd, 2010 at 08:58
yes, this book is one of the few computer books I have read from cover to cover – code listings are easy to scan/skip, and the book itself is not huge (however the cost seems fairly high for the size).