kmalloc
kmalloc会根据申请的内存大小来决定来决定使用块分配器(slab/slub/slob)或页分配器进行内存分配(buddy),只能分配几个固定大小的内存,申请值不在这些固定值之内时,会按向上对齐的原则,分配最接近申请值的内存块。
static __always_inline void *kmalloc(size_t size, gfp_t flags)
flags 可以指定从哪个物理内存区域申请内存,不指定就是低端内存,也可以指定高端内存等
kmalloc最大可分配内存大小:等于伙伴系统最大能申请的单块最大内存
kmalloc申请的物理地址是连续的
kmalloc如果申请高端物理内存,使用的虚拟地址是 PKMAP_BASE ~ PAGE_OFFSET-1
vmalloc
vmalloc申请的物理地址不一定是连续的,所以可以申请非常大的物理内存
标签:kmalloc,申请,---,物理地址,内存,分配器,linux,vmalloc From: https://www.cnblogs.com/god-of-death/p/17566958.html