1. 程式人生 > 其它 >儲存器管理——頁面置換演算法

儲存器管理——頁面置換演算法


有哪些頁面置換演算法:1.最佳置換演算法(OPT)2.先進先出置換演算法(FIFO)3.最近最久未使用置換演算法(LRU)4.時鐘置換演算法(CLOCK)5.改進型的時鐘置換演算法

好的頁面置換演算法應該追求什麼?原因是什麼?:更少的缺頁率。頁面的換入、換出需要磁碟IO,會有較大的開銷

最佳置換演算法(OPT):每次選擇淘汰的頁面將是以後永不使用,或者在最長時間內不再被訪問的頁面,這樣可以保證最低的缺頁率。

缺頁與頁面置換的關係:缺頁時未必發生頁面置換。若還有可用的空閒記憶體塊,就不用進行頁面置換。

最佳置換演算法的優缺點:
優點。缺頁率最小。缺點。無法實現,作業系統無法提前預判頁面訪問序列。只有在程序執行的過程中才能知道接下來會訪問到的是哪個頁面。

先進先出置換演算法(FIFO):每次選擇最早進入記憶體的頁面淘汰

先進先出置換演算法的實現方法:把調入記憶體的頁面根據調入的先後順序排成一個佇列,需要換出頁面時選擇隊頭頁面即可。

先進先出置換演算法的佇列的最大長度取決於:系統為程序分配了多少個記憶體塊。

先進先出置換演算法的優缺點:優點。實現簡單。缺點。演算法效能差(該演算法與程序實際執行時的規律不適應,因為先進入的頁面也有可能最經常被訪問)。產生Belady異常

Belady異常:當為程序分配的物理塊數增大時,缺頁次數不減反增的異常現象。

唯獨哪種頁面置換演算法會產生Belady異常:先進先出置換演算法

最近最久未使用置換演算法(LRU):每次淘汰最近最久未使用的頁面
最近最久未使用置換演算法的實現方法:賦予每個頁面對應的頁表項中,用訪問欄位記錄該頁面自上次被訪問以來所經歷的時間t。當需要淘汰一個頁面時,選擇現有頁面中t值最大的,即最近最久未使用的頁面。

最近最久未使用置換演算法的優缺點:優點。演算法效能好。缺點。實現困難,開銷大

時鐘置換演算法是一種效能和開銷較均衡的演算法,又稱CLOCK演算法,或最近未用演算法(NRU)

簡單的時鐘置換演算法實現方法:為每個頁面設定一個訪問位,再將記憶體中的頁面都通過連結指標連結成一個迴圈佇列。當某頁被訪問時,其訪問位置為1。當需要淘汰一個頁面時,只需檢查頁的訪問位。如果是0,就選擇該頁換出;如果是1,則將它置為0,暫不換出,繼續檢查下一個頁面,若第一輪掃
描中所有頁面都是1,則將這些頁面的訪問位依次置為0後,再進行第二輪掃描

簡單的時鐘置換演算法選擇一個淘汰頁面最多會掃描幾輪:兩輪

簡單的時鐘置換演算法的優缺點:優點。實現簡單,演算法開銷小。缺點。未考慮頁面是否被修改過

改進型的時鐘置換演算法的思想:其他條件都相同時,優先淘汰沒有修改過的頁面,避免操作。

修改位=0,表示頁面沒有被修改過:修改位=1,表示頁面被修改過。為方便討論,

如何表示各頁面狀態:(訪問位,修改位)。0表示頁面沒有被訪問/修改。1表示頁面有被訪問/修改

改進型的時鐘置換演算法的演算法規則:將所有可能被置換的頁面排成一個迴圈佇列

改進型的時鐘置換演算法選擇一個淘汰頁面最多會進行幾輪掃描:四輪

改進型的時鐘置換演算法選擇一個淘汰頁面的優先順序:
第一優先順序:最近沒訪問,且沒修改的頁面
第二優先順序:最近沒訪問,但修改過的頁曲
第三優先順序:最近訪問過,但沒修改的頁面
第四優先順序:最近訪問過,且修改過的頁曲

改進型的時鐘置換演算法的優點:演算法開銷小,效能好

最佳置換演算法效能最好,但無法實現;先進先出置換演算法實現簡單,但演算法效能差;最近最久未使用置換演算法效能好,是最接近最佳置換演算法效能的,但是實現起來需要專門的硬體支援,演算法開銷大。