【问题标题】:kmem_cache_* creates contiguous memory?kmem_cache_* 创建连续内存?
【发布时间】:2015-11-04 03:09:42
【问题描述】:

假设使用kmem_cache_createkmem_cache_alloc 创建和分配的内存板是连续的,我是否正确?

【问题讨论】:

    标签: caching memory-management linux-kernel


    【解决方案1】:
    • 一个 kmem_cache 由 1 个或多个 slab 组成。
    • slab 由 1 个或多个连续页面组成。

    因此,当您调用kmem_cache_alloc 时,它会在一个slab 中为您返回一块内存,该内存由1 个或多个连续页面组成。

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-28
        • 2017-01-19
        • 1970-01-01
        • 1970-01-01
        • 2019-08-22
        相关资源
        最近更新 更多