- 论坛徽章:
- 0
|
分区页框分配器
(伙伴系统)
__alloc_pages
(保留的页框池)
|
bffered_rmqueue (if one page, get from
per-cpu页框高速缓存,else
below)
|
__rmqueue (从管理区对应的free_area中分配页框)
Slab分配器
创建调整缓存
(专用kmem_cache_create for kernel, 普通包含13个几何分布的内存区,for
slab分配器).
cache_grow()分配slab,
kmem_getpages()从分区页框分配器得到页框,then
alloc_slabmgmt() alloc slab description.
分配slab对象,kmem_cache_alloc
→ get from slab per_cpu本地高速缓存,
if not → cache_alloc_refill填充高速缓存.
Kmalloc是入口,
先从普通高速缓存开始分配, then invoke
kemem_cache_alloc.
内存池:different
from 保留的页框池(用于中断),是动态内存的储备,只能用于池的拥有者,mempool_alloc()
→ kmalloc(), if fails, use pool....
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/79570/showart_1977244.html |
|