🚩 核心目標

今天的任務是在昨天建立的虛擬內存管理(VMM)之上,構建一個 1MB 大小的內核堆疊 (Kernel Heap)。透過實作 kmallockfree,內核現在具備了動態申請與釋放任意大小內存塊的能力,這標誌著 SmallOS 擁有了靈活管理資源的「大腦」。


1. 基礎理論:堆疊分配器的鏈表模型

在內核中,我們不能直接使用頁級分配(4KB)來處理細微的數據結構。我們需要一個分配器來管理一塊連續的虛擬空間(本階段為 1MB)。

數據結構:內存塊描述符

我們使用雙向鏈表來追蹤堆疊中的每一塊內存。每一塊內存都有一個頭部(Header),記錄了:


2. 代碼實作:kmalloc 與 kfree

2.1 分配策略 (Allocation)

當調用 kmalloc 時,分配器會遍歷鏈表尋找足夠大的空閒塊。

2.2 釋放與合併策略 (Free & Merge)

kfree 的核心挑戰在於防止記憶體碎片化(Fragmentation)。