kmem_cache_* 创建连续内存?

kmem_cache_* creates contiguous memory?

我假设使用 kmem_cache_createkmem_cache_alloc 创建和分配的内存块是连续的吗?

AFAIK、kmalloc() 和 kmem_cache_*() API 是 returning 连续内存 - 由 slab 分配器处理....

vmalloc() 可用于请求大块内存,它将 return "virtually contiguous" 内存(表示连续的虚拟地址区域)。

  • 一个kmem_cache由1个或多个slab组成。
  • 一个 slab 由 1 个或多个连续的页面组成。

因此,当您调用 kmem_cache_alloc 时,它 returns 您是 slab 中的一块内存,它由 1 个或多个连续的页面组成。

但是如果你调用kmem_cache_alloc两次,你得到的2块内存可能不连续。

kmem_cache_create只创建和初始化一个kmem_cache的数据结构,不分配内存。