Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MEMORYALLOCATORS(9)	 BSD Kernel Developer's	Manual	   MEMORYALLOCATORS(9)

NAME
     memoryallocators -- introduction to kernel	memory allocators

DESCRIPTION
     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
     setup (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 al-
     lowing fixed-size allocation only,	requires setup,	and is interrupt-safe.

     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.

SEE ALSO
     intro(9), kmem(9),	pool(9), pool_cache(9),	uvm(9),	vmem(9)

AUTHORS
     Elad Efrat	<elad@NetBSD.org>
     YAMAMOTO Takashi <yamt@NetBSD.org>

BSD				August 3, 2009				   BSD

NAME | DESCRIPTION | SEE ALSO | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=memoryallocators&sektion=9&manpath=NetBSD+6.0>

home | help