摘要: 本文目的在于分析Linux内存管理机制的slab分配器。内核版本为2.6.31。1. SLAB分配器内核需要经常分配内存,我们在内核中最常用的分配内存的方式就是kmalloc了。前面讲过的伙伴系统只支持按页分配内存,但这个单位太大了,有时候我们并不需要这么大的内存,比如我想申请128字节的空间,如果 阅读全文
posted @ 2019-04-22 12:12 kissrule 阅读(1883) 评论(0) 推荐(1) 编辑
摘要: 本文目的在于分析Linux内存管理机制中的伙伴系统。内核版本为2.6.31。1. 伙伴系统的概念在系统运行过程中,经常需要分配一组连续的页,而频繁的申请和释放内存页会导致内存中散布着许多不连续的页,这样,当某一时刻要申请一块较大的连续内存时,虽然系统内存余量足够,即很多页是空闲的,但找不到一大块连续 阅读全文
posted @ 2019-04-22 12:10 kissrule 阅读(2677) 评论(0) 推荐(2) 编辑
摘要: 1. 使用buddy系统管理ZONE我的这两篇文章buddy系统和slab分配器已经分析过buddy和slab的原理和源码,因此一些细节不再赘述。所有zone都是通过buddy系统管理的,buddy system由Harry Markowitz在1963年提出。buddy的工作方式我就不说了,简单来 阅读全文
posted @ 2019-04-22 12:08 kissrule 阅读(2959) 评论(0) 推荐(1) 编辑