跳到內容

Minix 3/記憶體管理

來自華夏公益教科書,開放的書籍,為開放的世界

Minix2 被認為有一個“簡單”的記憶體管理器,因為 a) 它旨在為單個使用者使用,並且 b) 它被認為在 8088 上執行,不支援虛擬記憶體。記憶體管理器具有 posix 記憶體介面 - 也就是說,它在呼叫 fork() 或 exec() 函式時使用。

以下是一些關於記憶體管理器中的一些術語的討論。

1. 最佳匹配演算法,記憶體管理器分配記憶體,最基本的引數是請求的大小。記憶體管理器可以搜尋非分配記憶體塊的列表,直到找到一個比請求大小更大的連續未分配記憶體塊,將其拆分為一個用於請求大小的塊和一個更小的未使用的塊,它是該塊的剩餘部分。然後返回請求大小的塊以供使用。

“最佳匹配”演算法搜尋未使用的塊列表,直到找到最近的更大或相等大小的塊並將其返回,但此演算法的問題是返回到空閒列表的塊的未使用部分往往很小並且無用。

任何空閒記憶體分配演算法的一個重要方面是,一旦使用的塊被返回,它必須與相鄰塊進行比較以檢視它們是否也未被使用,並與前後塊合併以使空閒塊大小盡可能大。如果這樣做,空閒塊大小很快就會變得太小而無法滿足某些請求。

此要求使“快速匹配”演算法比簡單的“最佳匹配”更復雜:快速匹配是指根據大小範圍儲存空閒塊列表,但當返回塊時,這些列表對於查詢可能在不同大小範圍中列出的相鄰空閒塊沒有用。

還有“最差匹配”,始終選擇最大的空閒塊。

前三種演算法在 D.E. Knuth 的《計算機程式設計藝術》第一卷中有所描述。

華夏公益教科書