虛擬記憶體與需求分頁

頁框配置(frame allocation)

想像在一個房間裡,把固定數量的椅子分給好幾個工作小組。給一個小組太少椅子,它的成員就不斷起立又坐下、浪費時間;把幾乎全部椅子給某一組,其他組就停擺。總得有人決定每組分到幾張椅子,既公平又合理。頁框配置就是作業系統為實體記憶體所做的這個決定:每個行程一次被允許保有多少頁框(存放頁的那些固定大小的格子)。

具體來說,實體 RAM 容納固定數量的頁框,而它們必須在所有爭奪記憶體的行程之間分配。一個頁框配置策略決定每個行程的份額。最簡單的是平均配置:把頁框平均分。較合理的是比例配置:依每個行程的大小或工作集需求,按比例給予頁框數量,於是大程式分得比小程式多。配置與分頁置換密切互動:在區域置換下,一個行程發生錯誤時只能從自己的集合中奪取頁框,所以它的配置實際上是固定的;在全域置換下,發生錯誤的行程可以從任何行程奪取頁框,於是配置動態浮動。一個行程通常有一個最少頁框數——要足以容納單一道指令一次可能觸碰的所有頁,否則它永遠無法有進展。

為什麼重要:頁框配置是設定每個行程分頁錯誤率的旋鈕,也是對輾轉現象的直接槓桿。若一個行程被給予少於其工作集所需的頁框,無論置換策略多聰明,它都會不斷發生錯誤;給它足夠的,錯誤就變得罕見。工作集模型把這一點化為具體目標:給每個行程大約相當於其工作集的頁框數,並且只在行程的工作集仍放得下時才允許新行程進入。誠實的張力是:頁框稀少且共用,因此對一個行程的慷慨就是另一個行程的匱乏——頁框配置從根本上就是在平衡彼此競爭的需求,好讓整個系統、而不只是單一程式,都能良好運作。

一個系統有 100 個空閒頁框與 4 個行程。平均配置給每個 25 個。依大小的比例配置,可能給一個 200 頁的行程約 67 個頁框、給一個 100 頁的行程約 33 個——更接近每個行程實際的需要。

頁框少於一個行程工作集所需,就意味著無止盡的錯誤。

每個行程都需要一個由架構決定的最少頁框數——足以容納單一道指令一次能參考的所有頁(包括例如一道間接的記憶體對記憶體搬移的運算元);低於那個最少數,它連一道指令都無法完成,於是錯誤永遠無法解決。

又稱
frame allocation policy分配頁框頁框分配