slab分配器一直處於核心記憶體管理的核心地位,儘管如此,它還是擁有自身的缺點,最明顯的兩點就是複雜性和過多的管理資料造成的記憶體上的開銷。針對這些問題,linux引入了slub分配器,slub分配器保留了slab分配器的所有介面,實際上slub分配器的模型和slab分配的模型是基本一致的,只不過在一些地方進行了精簡,這也使得slub分配器工作起來更為游刃有餘。兩者主要的區別如下:
下面來看slub分配器涉及到的主要資料結構
快取描述結構:
struct kmem_cache ;
節點的slab資訊描述結構:
struct kmem_cache_node ;
本地cpu的slab資訊描述結構:
struct kmem_cache_cpu ;
用下圖可以描述這些slub分配器的核心資料結構之間的關係
至此已大概介紹了slub分配器的一些概念和涉及到的核心資料結構,具體的實現細節和原理在後面分析各個部分的**時再做交代!
Linux Slab分配器 一 概述
slab分配器是linux記憶體管理中非常重要和複雜的一部分,其工作是針對一些經常分配並釋放的物件,如程序描述符等,這些物件的大小一般比較小,如果直接採用夥伴系統來進行分配和釋放,不僅會造成大量的內碎片,而且處理速度也太慢。而slab分配器是基於物件進行管理的,相同型別的物件歸為一類 如程序描述符就...
Linux Slab分配器(一)概述
slab分配器是linux記憶體管理中非常重要和複雜的一部分,其工作是針對一些經常分配並釋放的物件,如程序描述符等,這些物件的大小一般比較小,如果直接採用夥伴系統來進行分配和釋放,不僅會造成大量的內碎片,而且處理速度也太慢。而slab分配器是基於物件進行管理的,相同型別的物件歸為一類 如程序描述符就...
Linux SLUB 分配器詳解
多年以來,linux 核心使用一種稱為 slab 的核心物件緩衝區分配器。但是,隨著系統規模的不斷增大,slab 逐漸暴露出自身的諸多不足。slub 是 linux 核心 2.6.22 版本中引入的一種新型分配器,它具有設計簡單 精簡 額外記憶體佔用率小 擴充套件性高,效能優秀 方便除錯等特點。本文...