slob

slob被計劃在時間成熟時將其移除,slub對內存有限的微型設備已經足夠瞭。

slob overview

盡管slob和slab/slub放在一起管理,但是它的實現理念與後兩者完全不同。slob的是基於傳統的K&R堆內存管理器實現的,算法時間復雜度為O(n)。每次要遍歷內存塊鏈表,查找合適大小的內存塊並從free鏈表中移除。

工欲善其事,必先利其器。在我們閱讀代碼之前,先瞭解其算法思想是極其重要的,否則會一頭霧水,不知所雲。

K&R

先瞭解一下K&R的3個組成要素:

  • 鏈表的首地址,用於鏈接可分配內存塊
  • 每個內存塊的長度
  • 下一個可分配內存塊地址

所以每個內存塊內部有管理數據,分別是內存塊本身的尺寸和下一個可分配內存塊的地址,這樣組成一個單鏈表。內存塊結構如圖所示:

K&R空閑內存塊結構 參考[1]

所有空閑內存塊組成單鏈表形式,如下圖所示:

8eab75a34c7186faf5c8e020a2907064空閑內存塊單鏈表 參考[1]

瞭解瞭K&R內存分配器的結構,也就理解瞭slob中空閑內存塊的組織形式。因為它們的算法是一樣的。

slob中的內存塊管理

slob內存塊結構

f2c5001796679fba68c876af2fcf9857slob內存對象佈局 參考 [2]

當payload尺寸大於1個單元(假設每個單元2字節,slob中是按內存單元計數的),則第一個存儲單元用來存儲當前內存塊的實際可提供單元數,第二個存儲單元用來存儲下一個空閑內存塊的頁內偏移。如果payload的尺寸是1個單元,則該單元隻用來存儲下一個空閑內存塊的頁內偏移,即不需要存儲size值,因為我們知道它隻占1個單元的空間,即2個字節。空閑內存塊組成的單向鏈表如圖所示:

slob中的三個鏈表

slob中的空閑塊所在的slab是由3個雙向循環鏈表所管理的,當申請的內存塊小於256字節時在free_slob_small鏈表中查找,當申請的內存塊小於1024字節大於256字節時在free_slob_medium鏈表中分配內存塊,否則在free_slob_large鏈表中申請內存塊。

做成slab的樣子

與slab/slub一樣,slob也是用struct kmem_cache來表示,它的結構看起來很簡單,僅僅用若幹成員表示一些屬性,並沒有per cpu和per node相關的管理數據。具體參考下面代碼:

struct kmem_cache {
/* 對象大小 */
unsigned int object_size;/* The original size of the object */
/* 對象+對齊/填充的大小 */
unsigned int size; /* The aligned/padded/added on size */
/* 對象對齊的字節數 */
unsigned int align; /* Alignment as calculated */
slab_flags_t flags; /* Active flags on the slab */
unsigned int useroffset;/* Usercopy region offset */
unsigned int usersize; /* Usercopy region size */
/* slab的名稱 */
const char *name; /* Slab name for sysfs */
int refcount; /* Use counter */
void (*ctor)(void *); /* Called on object slot creation */
/* 用於鏈接到slab_caches鏈表上 */
struct list_head list; /* List of all slab caches on the system */
};

发表回复

相关推荐

精蟲上腦,被裸聊敲詐瞭,擔心裸聊被發出去後第二天身敗名裂怎麼辦?

1 QQ美女主動要求裸聊,男人上鉤是生理決定,上鉤概率高達99%男人上鉤裸聊詐騙,有以下幾個原因:1.1 男人好色,是本性,美好...

· 11分钟前

沖鋒衣透氣性原理分析

​在戶外運動中,炎熱的天氣或劇烈的運動往往會讓人出汗,尤其是在緊張激烈的環境中,對透氣性的需求尤為迫切。為瞭保證戶外運...

· 38分钟前

广州国际学校|华附国际部(HFI)2023招生政策及全方位解读!

华附国际部(HFI) 华附国际部全称为华南师范大学附属中学国际部,成立于2004年,系由广东省教育厅批准成立的华师附中国际基 ...

· 1小时前

张充和:“十分冷淡存知己,一曲微茫度此生。”

更精彩的合集文章请点击下面链接 淘宝店铺:二闲堂 民国闺秀、“最后的才女”张充和当地时间6月17日下午一时(北京时间6月18 ...

· 2小时前

小学必背古诗75首全文电子版本 可免费下载打印(附译文及注释)‍‍

小学生必背古诗75首(附译文及注释)‍‍ 因篇幅过长,部分展示,原文见: 小学生必背古诗75首(附译文及注释) 1、江南 【汉乐府 ...

· 2小时前

Copyright 2015-2025 www.icpchaxun.com ©All Rights Reserved.