- NetBSD Manual Pages
MEMORYALLOCATORS(9) NetBSD Kernel Developer's Manual MEMORYALLOCATORS(9)
Powered by man-cgi (2021-06-01).
Maintained for NetBSD
by Kimmo Suominen.
Based on man-cgi by Panagiotis Christias.
memoryallocators -- introduction to kernel memory allocators
The NetBSD kernel provides several memory allocators, each with different
characteristics and purpose. This document summarizes the main differ-
ences between them.
The Kmem Allocator
The kmem allocator is modelled after an interface of similar name imple-
mented in Solaris. This is main general purpose allocator in the kernel.
It is implemented on-top of the vmem(9) resource allocator (beyond the
scope of this document), meaning it will be using pool_cache(9) inter-
nally to speed-up common (small) sized allocations.
It requires no setup, but cannot be used from interrupt context.
See kmem(9) for more details.
The Pool Allocator
The pool(9) allocator is a fixed-size memory allocator. It requires set-
up (to initialize a memory pool) and is interrupt-safe.
See pool(9) for more details.
The Pool Cache Allocator
The pool cache allocator works on-top of the pool(9) allocator, also
allowing fixed-size allocation only, requires setup, and is interrupt-
The pool cache allocator is expected to be faster than other allocators,
including the ``normal'' pool allocator.
In the future this allocator is expected to have a per-CPU cache.
See pool_cache(9) for more details.
The UVM Kernel Memory Allocator
This is a low-level memory allocator interface. It allows variable-sized
allocations in multiples of PAGE_SIZE, and can be used to allocate both
wired and pageable kernel memory.
See uvm(9) for more details.
intro(9), kmem(9), pool(9), pool_cache(9), uvm(9), vmem(9)
Elad Efrat <elad@NetBSD.org>
YAMAMOTO Takashi <yamt@NetBSD.org>
NetBSD 8.0 August 3, 2009 NetBSD 8.0