October 2017
Intermediate to advanced
354 pages
9h 28m
English
Page and slab allocators both allocate physically contiguous blocks of memory, mapped to contiguous kernel address space. Most of the time, kernel services and subsystems prefer to allocate physically contiguous blocks for exploiting caching, address translation, and other performance-related benefits. Nonetheless, allocation requests for very large blocks might fail due to fragmentation of physical memory, and there are few situations that necessitate allocation of large blocks, such as support for dynamically loadable modules, swap management operations, large file caches and so on.
As a solution, the kernel provides vmalloc, a fragmented memory allocator that attempts to allocate memory, by joining physically scattered memory regions ...