很久很久以前:一個叫做Mark Hemment的哥兒們寫了Slab。在接下來的一些年裡,其他人對Slab進行了完善。一年半以前,SLOB問世了。SLOB的目標是針對嵌入式系統的,主要是適用於那些內存非常有限的系統,比如32MB以下的內存,它不太注重large smp系統,雖然最近在這方面有一些小的改進。幾個月之前,SLUB閃亮登場。它基本上屬於對Slab的重設計(redesign),但是代碼更少,並且能更好的適應large NUMA系統。SLUB被很認為是Slab和Slob的取代者,大概在2.6.24/2.6.25將會被同志們拋棄。而SLUB將是未來Linux Kernel中的首選。
Linux內核真是變化太快了,內存管理這塊就是一個好例子。
簡單的說:Slab是基礎,是最早從Sun OS那引進的;Slub是在Slab上進行的改進,在大型機上表現出色(不知道在普通PC上如何),據說還被IA-64作為默認;而Slob是針對小型系統設計的,當然了,主要是嵌入式。相關文章如下:
Linux slab 分配器剖析 http://www.linuxidc.com/Linux/2011-06/37150.htm
The SLUB allocator http://www.linuxidc.com/Linux/2011-07/38558p2.htm
The SLOB allocator http://www.linuxidc.com/Linux/2011-07/38558p3.htm
這也正好體現了一個Linux內核開發一貫的思想:提供一種機制,而不是一種策略(Provide mechanism not policy)。