1. The kernel requests memory for data structures of varying sizes, some of which are less than a page in size.
As a result, the kernel must use memory conservatively and attempt to minimize waste due to fragmentation.
This is especially important because many operating systems do not subject kernel code or data to the paging system.
2. Pages allocated to user-mode processes do not necessarily have to be in contiguous physical memory.
However, certain hardware devices interact directly with physical memory—without the benefit of a virtual memory interface—and consequently may require memory residing in physically contiguous pages.
In the following sections, we examine two strategies for managing free memory that is assigned to kernel processes: the “buddy system” and slab allocation.