2、頁面置換演算法
阿新 • • 發佈:2019-02-19
置換的東西是頁,當頁的空間不夠時,我們需要將一些記憶體中的頁置換到外存中但是到底如何選擇,需要使用演算法實現
一、區域性置換演算法
置換頁面的選擇範圍只侷限於當前程序佔用的物理頁。
1、最優頁面置換演算法(OPT)
把最後要使用的頁置換出來。
評價:
- 無法實現,因為無法預知未來。但是可以用來評估其他演算法的效率
2、先入先出演算法(FIFO)
連結串列記錄每一頁,鏈首記錄的頁在實體記憶體中呆的時間最長,鏈尾最短。把鏈首元素置換出去,新加的頁加在鏈尾
評價:
- 實現簡單
- 效能較差,置換出去的可能是使用最多的頁
3、最近最久未使用演算法(LRU)
選擇最長時間沒有被引用的頁面的頁面
缺頁時計算記憶體每個頁面最近一次的使用的時間,使用連結串列或棧的壓入抽出,連結串列首最近的
評價:
- 使用棧和連結串列維護開銷很大(在抽出棧和連結串列中的元素的時候需要遍歷棧和連結串列)
- 很像最優置換演算法
- 無法實現
以上演算法基本無法實現
1、時鐘置換演算法(Clock)
對頁面訪問情況進行大致訪問
在頁表項增加訪問位
頁面組織成環形
- 頁面裝入記憶體,訪問位初始為0
- 訪問記憶體(讀/寫)時,訪問位置1
- 缺頁時,從指標當前位置順序檢查環形連結串列,訪問位為0,置換該頁,新裝入的頁的訪問位置1;訪問位為1,置訪問位為0,指標移動到下一頁,直到找到可置換的頁面
2、改進後的時鐘置換演算法
新增一個修改位,當修改位和訪問位都為0的時候置換,其他與原來的時間置換演算法相同,這個以後再看看
3、最不常用演算法(LFU)
使用次數最少的頁被置換
Belady現象:
採用FIFO等演算法時,可能出現分配的物理頁面增加,缺頁次數反而升高的異常現象
原因:
FIFO演算法的置換特徵與
LRU演算法沒有Belady想想
總結
LRU & FIFO & Clock