linux内存管理 之 slab分配器
来源:互联网 发布:linux测试网络通不通 编辑:程序博客网 时间:2024/05/12 00:17
1、页面分配器是页面级的内存分配工具,能分配2的order次幂的连续物理内存。
linux在页面级内存分配的基础上,开发了小内存分配方案--slab、slob、slub。
后两者分別针对大型系统和嵌入式系统。
2、slab分配器的思想
先利用页面分配器分配出单个或者一组连续的物理页面,然后在此基础上将整块页面分割成多个相等的小内存单元,以满足小内存空间分配的需要。
3、slab的数据结构
struct kmem_cache
struct slab
malloc_sizes[]
他们的结构关系如下图:
4、kmalloc kzalloc
void *kmalloc(size_t size, gfp_t flags)
代码流程:现利用size参数在malloc_sizes数组中找到大于等于size的值,通过它找到一个对应的slab分配器的kmem_cache,然后在它上面分配内存。
不会分配ZONE_HIGHMEM区域的内存。
static inline void *kzalloc(size_t size, gfp_t flags)
把分配出来的内存清零
5、kcalloc
static inline void *kcalloc(size_t n, size_t size, gfp_t flags)
6、kfree
void kfree (const void *objp)
代码流程:根据要释放的内存指针objp调用virt_to_page来获得objp所在页面对象的指针*page
调用_cache_free来释放内存。
- Linux内存管理之slab分配器分析
- linux内存管理 之 slab分配器
- Linux内存管理之slab分配器分析
- Linux内存管理之slab分配器
- Linux内存管理Slab分配器
- Linux内存管理 Slab分配器
- Linux内存管理 Slab分配器
- Linux内存管理slab分配器
- Linux内存管理slab分配器
- 内存管理之slab分配器
- 内存管理之slab分配器
- Linux内存管理之slab分配器分析(续一)
- Linux内存管理之slab分配器分析(续二)
- Linux内存管理之slab分配器分析(续三)
- Linux内存管理之slab分配器分析(续五)
- Linux内存管理之slab分配器分析(续四)
- linux内存管理之三——slab分配器
- linux内核内存管理学习之三(slab分配器)
- 我是如何吃素,我来谈谈吃素
- Oracle 11G R2.0 ORA-00600
- Solr学习-Tomcat配置
- 消失的故乡
- sh,bash,csh,tcsh等shell的区别
- linux内存管理 之 slab分配器
- java的int、char、long、float、double对byte的转换,在通信的时候会用到
- windbg几个强大常用的命令
- 调用exec()后进程在何处终止
- 数据失窃:企业数据安全之道
- 查看某目录占用空间命令
- goodyes
- 流形学习 manifold learning--自学小结(1)
- Apache Prefork和Worker模式的性能比较测试