????????在linux內核中,下面這張圖說明了系統中存在一個可以滿足各種內存請求的分配機制。根據你需要內存的用途,你可以選擇最接近你目標的分配方式。最底層、最基礎的分配器是 頁分配器(page allocator),它以頁為單位分配內存(頁是它能提供的最小內存單位)。然后是 slab 分配器(slab allocator),它建立在頁分配器之上,從頁分配器獲取內存頁,并將這些頁劃分成更小的內存單元(通過 slab 和緩存機制)。kmalloc
API 就是基于這個分配器實現的。以及還可以不走slab分配器,直接在內核中分配虛擬內存 vmalloc。
????????