1. 问题
What is the difference between vmalloc and kmalloc?
2. 大致观点
- 涉及到DMA的话,需要物理上连续的内存;
- 内核之所以偏好分配物理上连续内存,并不是必须的,
而主要是考虑性能:- kmalloc()比vmalloc()效率高,想也知道,vmalloc()需要逐页把离散的物理空间重新映射到连续的虚拟空间上;
- kmalloc()对TLB更友好;
- 内核的页不会被swapped,而是常驻内存中,无论kmalloc()分配还是vmalloc()分配;