
1. kmalloc和vmalloc对比 以ARM64为例,不考虑高端内存。 1.1. 实现原理 kmalloc和vmalloc底层函数都是__alloc_pages。 kmalloc会根据申请大小是否大于KMALLOC_MAX_CACHE_SIZE来决定使用slab还是__alloc_pages,而slab最终也是调用__alloc_pages。 1.2. 初始化 默认情况下,kmalloc和vmalloc都不会对申请的内存做初始。 可以通过kzalloc或vzalloc申请内存并初始化为0。 1.3. 对齐 kmalloc按块分配,通常为2^n对齐,每次分配的大小也是2^n。根据实现,可能也支持96或者192字节。...