5 頁面置換演算法

2022-09-21 15:27:08 字數 3657 閱讀 2267

目錄全域性頁面置換演算法

功能:當缺頁中斷發生,需要調入新的頁面而記憶體已滿時,選擇記憶體當中哪個物理頁面被置換

目標:盡可能減少頁面換入換出次數(即缺頁中斷次數)。具體來說,把未來不再使用或短期內較少使用的頁面換出,通常只能在區域性性原理指導下依據過往統計資料**

頁面鎖定(frame locking):對於必須常駐記憶體的作業系統關鍵部分或時間關鍵(time critical)的應用程序(定時執行的程式?),使其不參與頁面置換。實現方法:通過在頁表中增加鎖定標誌位(lock bit)

演算法評估方法:模擬乙個頁面置換的行為,記錄出現缺頁中斷的次數(不需要考慮頁偏移,只需考慮頁號)

僅針對乙個程序、乙個應用程式

前提:程式區域性性

最優置換演算法(opt,optimal)

缺點:這只是一種理想狀況,實際情況下,作業系統無法預知頁面在再次被訪問前,所需要等待的時間

可用作其他演算法效能的評價依據(在乙個模擬器上執行某個程式,第一遍訪問時記錄每個頁面的訪問情況,第二遍執行時即可使用最優置換演算法)

示例:(缺頁2次)

先進先出演算法(fifo)

基本思路:發生缺頁中斷時,將記憶體中停留時間最長(最早進入記憶體)的頁面置換出去。作業系統維護著乙個鍊錶,記錄記憶體中的邏輯頁面,鏈首駐留時間最長,鏈尾駐留時間最短。缺頁中斷時,將鏈首的頁面置換出去。

優點:實現簡單

缺點:效能較差,被換出的頁面可能是需要經常訪問的頁面,並且有belady現象,因此fifo較少單獨使用

示例:(缺頁5次)

最近最久未使用演算法(least recently used, lru)

基本思路:發生缺頁中斷時,置換最久未被使用的頁面

依據:對最優適用演算法的近似。依據程式區域性性原理,最近被訪問的指令和資料很有可能再次被訪問,反之,如果某個頁面長時間未被訪問,則很大概率將來長時間內不會再被訪問。

優點:效果比較好,發生缺頁中斷的次數比較少

缺點:需要記錄和查詢每個頁面最近使用的情況,時間開銷比較大。

示例:(缺頁3次)

查詢置換頁面的演算法:

時鐘演算法(clock)

lru演算法的近似,fifo演算法的改進

基本原理:示例:(缺頁4次)

效能:實際效能接近lru演算法(略遜)

二次機會法(enhanced clock algorithm)

基本原理:如果記憶體中的頁幀進行過寫操作,則頁面置換時需將該頁寫回外存,時間開銷較大。因此可同時利用頁表中的訪問位(used bit)和修改位(dirty bit)指導置換,改進clock演算法,使修改位為1的頁面在指標掃瞄時多一次保留的機會。

效能:效果較好,效能接近 lru 演算法

示例:(缺頁3次)

最不常用演算法(least frequently used,lfu)

基本原理:發生缺頁中斷時,將訪問次數最少的頁面置換出去

缺陷:

belady現象

含義:採用fifo演算法時,有時會出現分配的物理記憶體越大,發生缺頁中斷的次數反而增加的現象

原因:fifo演算法未考慮程序訪問記憶體頁面的動態特徵,與置換演算法的目標不一致(替換較少使用的頁面),因此被替換出去的頁面未必是程序不會訪問的

lru演算法不會出現belady現象的原因:lru符合棧演算法的特點,fifo不符合這種特點

示例:

fifo、lru、clock演算法比較

fifo和lru都是依據先進先出的思路,只是lru會根據頁面最近訪問時間對頁面順序進行動態調整,而fifo則依據頁面進入記憶體的時間排序,時間固定。

clock演算法是對lru演算法的近似,利用硬體提供的訪問位和修改位模擬lru中的最近訪問時間,減小系統開銷。

當程式本身不存在區域性性時,lru、clock可能會退化為fifo演算法

區域性頁面置換演算法的問題

區域性頁面置換演算法只考慮乙個程序、乙個應用程式的記憶體使用情況

程式在不同時間段對物理頁幀的需求是動態變化的,但區域性頁面置換演算法分配給每個應用程式的物理記憶體大小是固定的,限制了置換演算法的靈活性

工作集模型(working set)

用於衡量程式的區域性性

工作集:乙個程式當前正在使用的邏輯頁面集合,用w(t, δ)表示

常駐集:當前時刻,程序實際駐留在記憶體中的頁面集合

兩個全域性置換演算法

工作集頁面置換演算法

缺頁率頁面置換演算法

缺頁率 = 缺頁中斷次數 / 記憶體訪問次數,影響因素:

抖動現象

含義:當分配給乙個程序的物理頁面過小,無法容納乙個工作集,即常駐集⊂工作集時,程序會出現很多缺頁中斷,需要頻繁地在內外存間換入換出,從而使程序速度變慢

原因:隨著同時執行的程序數量的增加,分配給每個程序的物理頁面隨之減少,缺頁率不斷上公升

解決方法:os需要選擇合適的程序數和程序需要的物理幀數,以便在併發水平和缺頁率之間獲得平衡

3 2 3頁面置換演算法

程序執行時,若其訪問的頁面不在記憶體而徐將其調入,但記憶體已無空閒時間時,就需要從記憶體中調出一頁程式或資料,送入磁碟的對換區。而選擇調入頁面的演算法就稱為頁面置換演算法。好的頁面置換演算法應有較低的頁面更換頻率,也就是說,應將以後不會再訪問或者較長時間不會再訪問的頁面先調出。1.最佳置換演算法 o...

記憶體管理筆記八 頁面置換演算法

引言 在第七篇記憶體管理筆記,有介紹到分頁的記憶體管理。其克服了外部碎片 程式不能大於物理記憶體等缺點。本篇筆記將簡單介紹常見的頁面更換演算法思想。一 頁面需更換的原因 在交換系統下,乙個程式作為乙個整體載入到記憶體。因此,在執行時,無需從磁碟上載入任何東西。而分頁系統下,乙個程式的所有頁面並不一定...

問三 頁面置換演算法有哪些?

概述 在程式執行過程中,如果要訪問的頁面不在記憶體中,就發生缺頁中斷從而將該頁調入記憶體中。此時如果記憶體已無空閒空間,系統必須從記憶體中調出乙個頁面到磁碟對換區中來騰出空間。頁面置換演算法和快取淘汰策略類似,可以將記憶體看成磁碟的快取。在快取系統中,快取的大小有限,當有新的快取到達時,需要淘汰一部...