On Sat, 20 Jun 2020 14:18:21 +0800, 孙世龙 sunshilong said:
Unfortunately for kernel developers, allocating memory in the kernel is not as simple as allocating memory in userspace. A number of factors contribute to the complication, among them: The kernel is limited to about 1GB of virtual and physical memory. **The kernel's memory is not pageable.**
If a module needs to allocate big chunks of memory, it is usually better to use a page-oriented technique.
Due to memory fragmentation, if a module needs (say) 2M of memory for an I/O buffer, it's more likely to be able to allocate 512 4K pages scattered through the 1GB of memory than it is to get 1 contiguous chunk of memory. The fact it's not pageable doesn't mean that pages aren't relevant as the unit of allocation.