Caching kmem_cache_*是否创建连续内存?

Caching kmem_cache_*是否创建连续内存?,caching,memory-management,linux-kernel,Caching,Memory Management,Linux Kernel,我假设使用kmem\u cache\u create和kmem\u cache\u alloc创建和分配的内存板是连续的,对吗?AFAIK、kmalloc()和kmem\u cache\u*()API返回的是连续内存,这是由slab分配器处理的 vmalloc()可用于请求大块内存,它将返回“虚拟连续”内存(表示连续虚拟地址区域)。 kmem_缓存由1个或多个板组成 板由1个或多个连续页面组成 因此,当您调用kmem\u cache\u alloc时,它会返回包含1个或多个连续页面的一块内存

我假设使用
kmem\u cache\u create
kmem\u cache\u alloc
创建和分配的内存板是连续的,对吗?

AFAIK、kmalloc()和kmem\u cache\u*()API返回的是连续内存,这是由slab分配器处理的

vmalloc()可用于请求大块内存,它将返回“虚拟连续”内存(表示连续虚拟地址区域)。

  • kmem_缓存由1个或多个板组成
  • 板由1个或多个连续页面组成
因此,当您调用
kmem\u cache\u alloc
时,它会返回包含1个或多个连续页面的一块内存

但是如果您调用
kmem\u cache\u alloc
两次,您得到的两块内存可能不连续

kmem\u cache\u create
仅创建和初始化kmem\u缓存的数据结构,而不分配内存