1. 程式人生 > >記憶體管理之程序分配記憶體的策略和分配演算法涉及的問題

記憶體管理之程序分配記憶體的策略和分配演算法涉及的問題

在為多個程序分配記憶體空間時,由於記憶體的大小固定,所以如何分?分多少?量不夠?等問題都會影響到記憶體的利用效率

涉及三個問題:

1)最小物理塊的確定,一個程序有多個頁組成,在記憶體中完全儲存有可能需要很多個塊,但是在CPU中一次執行一條指令,所以停留在記憶體中的很多頁面都不是必要的,只需要在記憶體中保留最必要的幾個頁的內容就可以了,所以會出現最小物理塊確定的問題。

最小物理塊的確定是指能保證程序正常執行所需的最小物理塊數,當系統為程序分配的物理塊數少於此值時,程序無法執行。程序應該獲得最小物理塊數與計算機的硬體結構有關,取決於指令的格式、功能和定址方式。單地址指令且直接定址的話,最少物理塊為2.一個用於儲存指令,一個用來儲存資料

2)物理塊的分配策略

2.1 固定分配區域性置換

      基於程序的型別,或根據程式設計師、程式管理員的建議,為每個程序分配一定數目的物理塊,在整個執行期間都不再改變

      如果程序在執行中發現缺頁,則只能從該程序的n個頁面中選出一個頁換出,然後再調入一頁,以保證分配給該程序的記憶體空間不變

      困難在於應該為每個程序分配多少個物理塊難以確定,若太少,會頻繁地出現缺頁中斷,降低了系統的吞吐量,若太多,又必然使記憶體中駐留的程序數目減少,進而造成CPU      空閒或其他資源空閒的情況,而且在實際對換中,會花費更多的時間

2.2 可變分配全域性置換

      先為系統中的每個程序分配一定數目的物理塊,而OS本身也保持一個空閒物理塊佇列

      當某程序發現缺頁時,由系統從空閒物理塊佇列中取出一個物理塊分配給該程序,這樣凡產生缺頁終端的過程,都將獲得新的物理塊。僅當空閒物理塊佇列用完時,OS才能從記憶體中選擇一頁調出,該頁可能是系統中的任意程序的頁

2.3 可變分配區域性置換

       基於程序的型別或根據程式設計師的要求,為每個程序分配一定數目的物理塊,但當某程序發現缺頁時,只允許從該程序在記憶體的頁面中選出一頁換出,這樣就不會影響其他程序

       如果程序在執行中頻繁發生缺頁中斷,則系統需再為該程序分配若干附加的物理塊,直至該程序的缺頁率減少到適當的程度為止

       反之,若一個程序在執行過程中的缺頁率特別低,則此時可適當減少分配給程序的物理塊數,但不引起缺頁率的明顯增加

3)物理塊的分配演算法

    平均分配演算法

    按比例分配演算法

   按優先順序分配演算法