四:vmalloc

vmalloc

前面两种都是物理上连续的分配方式,但实际中在分配一大块内存时,可能竭尽全力也无法找到连续的内存块。针对这种情况内核提供了一种申请一片连续的虚拟地址空间,但不保证物理空间连续,也就是vmalloc接口。

vmalloc会先按照申请内存大小分配不保证连续的若干物理页,在将其一一映射到连续的虚拟地址空间中,

kmalloc会根据申请的大小来选择基于slub分配器或者基于Buddy System来申请连续的物理内存

当申请的内存大于2页(PAGE_SIZE*2,大部分情况下是8k)时,kmalloc走的实际上buddy算法,即通过alloc_pages()申请内存。小于2页的内存走的是slub。

你可能感兴趣的:(Linux子系统-内存管理,arm,嵌入式硬件,系统架构,面试)