genalloc — 用于内存分配的功能
发布时间
阅读量:
阅读量
Linux 核心内核提供了名为 genalloc 的通用内存划分方案,默认配置下会将所有未被核心内核占用的空间进行统一规划管理。该方案专门针对非核心独立内存空间提供资源划分功能,并基于首次适应原则设计,在实际应用中得到了广泛使用。其中,在Android最新版本中使用的 **ION 管理器针对 ION_HEAP_TYPE_CARVEOUT 类型内存采用了该内存划分方案。
1、基础数据结构
首先了解分配器所涉及的一些数据结构,在这里我们关注的是struct gen_pool这一概念:它被用来描述一个内存池。
struct gen_pool {
rwlock_t lock; /* 链表读写锁 */
struct list_head chunks; /* 内存池中内存块的链表 */
int min_alloc_order; /* 内存池最小分配单元的阶数,大小为 2^min_alloc_order */
};
在使用过程中必须向内存池注入内存块。一个内存块等同于一大块连续的物理内存,并通过 struct gen_pool_chunk 进行描述。
struct gen_pool_chunk {
spin
全部评论 (0)
还没有任何评论哟~
