kmem_cache_ *会创建连续的内存吗?

时间:2015-08-11 18:33:50

标签: caching memory-management linux-kernel

我是否正确地假设使用kmem_cache_createkmem_cache_alloc创建并分配的内存块是连续的?

2 个答案:

答案 0 :(得分:1)

AFAIK,kmalloc()和kmem_cache _ *()API正在返回连续内存 - 由slab分配器处理....

vmalloc()可用于询问大块内存,它将返回"几乎连续的"内存(表示连续的虚拟地址区域)。

答案 1 :(得分:1)

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

因此,当您调用kmem_cache_alloc时,它会返回一块内存,其中包含一个或多个连续页面。

但如果你两次打电话给kmem_cache_alloc,那么你获得的2块内存可能不会连续。

并且kmem_cache_create仅为kmem_cache创建并初始化数据结构,并且不分配内存。