Memory management is a specialist subject, meaning there aren't a lot of links to memory management sites and it is hard to find information, even with Google. Because of this, some links to interesting memory management information have been gathered on this page. If you find information that should be here, please don't hesitate to create yourself an account and edit this page. == Memory management hardware == [http://www.systemlogic.net/articles/00/10/cache/ The Fundamentals Of Cache] A nice read on the memory hierarchy and CPU caches. == Kernel space memory management == Bonwick's classical paper on the [http://www.usenix.org/publications/library/proceedings/bos94/bonwick.html Slab Allocator] Design overview of the SunOS 5.4 Object-Caching Kernel Memory Allocator. Linux uses a modified version of this, as you can see: [http://lxr.linux.no/source/mm/slab.c mm/slab.c]. Proceedings of the [http://www.usenix.org/publications/library/proceedings/als2000/ 2000 Atlanta Linux Showcase & Conference], including: * [http://www.usenix.org/publications/library/proceedings/als2000/sears.html The Elements of Cache Programming Style] * [http://www.usenix.org/publications/library/proceedings/als2000/jeon.html Dynamic Buffer Cache Management Scheme based on Simple and Aggressive Prefetching] * [http://www.usenix.org/publications/library/proceedings/als2000/lever.html Linux Kernel Hash Table Behavior: Analysis and Improvements] Matt Dillon's excellent [http://www.daemonnews.org/200001/freebsd_vm.html Design Elements of the FreeBSD VM System] tells you everything you want to know about FreeBSD's VM subsystem. == User space memory management == [http://gee.cs.oswego.edu/dl/html/malloc.html DLmalloc] is a malloc library that uses mmap() for memory allocations above the 1GB mark, that way your program can use up to 3 GB of malloc()ed memory, even though the kernel only supports brk() up to 910 MB. Update: note that glibc has this functionality built-in for quite a few years now. (RikvanRiel, dec 2004)