【发布时间】:2015-11-04 03:09:42
【问题描述】:
假设使用kmem_cache_create 和kmem_cache_alloc 创建和分配的内存板是连续的,我是否正确?
【问题讨论】:
标签: caching memory-management linux-kernel
假设使用kmem_cache_create 和kmem_cache_alloc 创建和分配的内存板是连续的,我是否正确?
【问题讨论】:
标签: caching memory-management linux-kernel
因此,当您调用kmem_cache_alloc 时,它会在一个slab 中为您返回一块内存,该内存由1 个或多个连续页面组成。
但是如果你调用kmem_cache_alloc两次,你得到的2条内存可能不连续。
而kmem_cache_create 只为 kmem_cache 创建和初始化数据结构,并不分配内存。
【讨论】:
AFAIK、kmalloc() 和 kmem_cache_*() API 正在返回连续内存 - 由 slab 分配器处理......
vmalloc() 可用于请求大块内存,它会返回“虚拟连续”内存(表示连续的虚拟地址区域)。
【讨论】: