SLUB知识点记录


1. Linux内核释放内存以后,可能会把其值设置为0x6b

#definePOISON_INUSE 0x5a/* for use-uninitialised poisoning */

#define POISON_FREE 0x6b/* for use-after-free poisoning */

#define POISON_END0xa5 /* end-byte of poisoning */


2. slab的frozen标志作用

    2.1 slab刚分配时,percpu->freelist指向object内存,percpu->page->freelist==NULL

 2.2 slab刚分配时,slab处于frozen状态. 

   2.3 slab 的percpu->freelist和percpu->page->freelist都为NULL时,slab被unfrozen .

         slab处于node->partial链表时,也是处于unfrozen状态.

        slab处于percpu->partial时,处于frozen状态.


3.当node->nr_partial大于等于cache->min_partial 时会直接释放空闲的slab到伙伴系统

4. percpu->cpu_partial 如果没有打开SLAB DEBUG且定义了CONFIG_SLUB_CPU_PARTIAL宏,则有此链表

3. slab的inuse标志

 只有当slab的objects在percpu->freelist时,才计算到inuse,其余情况(percpu->page->freelist, percpu->parttial, node->parttial)都处于unuse状态.

 

  

猜你喜欢

转载自blog.csdn.net/bin_linux96/article/details/49384145