頁面置換演算法

2021-08-25 14:38:42 字數 1940 閱讀 3437

先進先出(fifo)頁面置換演算法

這是最早出現的置換演算法。該演算法總是淘汰最先進入記憶體的頁面,即選擇在記憶體中駐留時間最久的頁面予以淘汰。該演算法實現簡單,只需把乙個程序已調入記憶體的頁面,按先後次序鏈結成乙個佇列,並設定乙個指標,稱為替換指標,使它總是指向最老的頁面。但該演算法與程序實際執行的規律不相適應,因為在程序中,有些頁面經常被訪問,比如,含有全域性變數、常用函式、例程等的頁面,fifo 演算法並不能保證這些頁面不被淘汰。

這裡,我們仍用上面的例子,但採用 fifo 演算法進行頁面置換(圖 4-27)。當程序第一次訪問頁面 2 時,將把第 7 頁換出,因為它是最先被調入記憶體的;在第一次訪問頁面 3 時,又將把第 0 頁換出, 因為它在現有的 2, 0, 1  三個頁面中是最老的頁。 由圖 4-27  可以看出,利用 fifo 演算法時進行了 12 次頁面置換,比最佳置換演算法正好多一倍。

最佳(optimal)置換演算法

最佳置換演算法是由 belady 於 1966 年提出的一種理論上的演算法。 其所選擇的被淘汰頁面,將是以後永不使用的,或許是在最長(未來)時間內不再被訪問的頁面。採用最佳置換演算法,通常可保證獲得最低的缺頁率。但由於人們目前還無法預知乙個程序在記憶體的若干個頁面中,哪乙個頁面是未來最長時間內不再被訪問的,因而該演算法是無法實現的,但可以利用該演算法去評價其它演算法。現舉例說明如下。

假定系統為某程序分配了三個物理塊,並考慮有以下的頁面號引用串:

7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1

程序執行時,先將 7,0,1 三個頁面裝入記憶體。以後,當程序要訪問頁面 2 時,將會產生缺頁中斷。 此時 os 根據最佳置換演算法, 將選擇頁面 7 予以淘汰。 這是因為頁面 0 將作為第 5 個被訪問的頁面,頁面 1 是第 14 個被訪問的頁面,而頁面 7 則要在第 18 次頁面訪問時才需調入。 下次訪問頁面 0 時, 因它已在記憶體而不必產生缺頁中斷。當程序訪問頁面 3時,又將引起頁面 1 被淘汰;因為,它在現有的 1,2,0 三個頁面中,將是以後最晚才被訪問的。圖 4-26 示出了採用最佳置換演算法時的置換圖。由圖可看出,採用最佳置換演算法發生了 6 次頁面置換。

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

fifo 置換演算法效能之所以較差,是因為它所依據的條件是各個頁面調入記憶體的時間,而頁面調入的先後並不能反映頁面的使用情況。最近最久未使用(lru)的頁面置換演算法,是根據頁面調入記憶體後的使用情況進行決策的。由於無法**各頁面將來的使用情況,只能利用「最近的過去」作為「最近的將來」的近似,因此,lru 置換演算法是選擇最近最久未使用的頁面予以淘汰。該演算法賦予每個頁面乙個訪問字段,用來記錄乙個頁面自上次被訪問以來所經歷的時間 t,當須淘汰乙個頁面時,選擇現有頁面中其 t 值最大的,即最近最久未使用的頁面予以淘汰。

利用 lru 演算法對上例進行頁面置換的結果如圖 4-28  所示。當程序第一次對頁面 2 進行訪問時,由於頁面 7 是最近最久未被訪問的,故將它置換出去。當程序第一次對頁面 3進行訪問時,第 1 頁成為最近最久未使用的頁,將它換出。由圖可以看出,前 5 個時間的影象與最佳置換演算法時的相同,但這並非是必然的結果。因為,最佳置換演算法是從「向後看」的觀點出發的,即它是依據以後各頁的使用情況;而 lru 演算法則是「向前看」的,即根據各頁以前的使用情況來判斷,而頁面過去和未來的走向之間並無必然的聯絡。

頁面置換演算法

常用的頁面置換演算法有三種 先進先出演算法fifo first in first out 該演算法的基本思想是首先淘汰那些駐留在主存時間最長的頁面。最近最久未用演算法 lru 該演算法的基本思想是 如果某一頁被訪問了,那麼它很可能馬上又被訪問 反之,如果某一頁很久沒被訪問,那麼最近也不會再訪問。lr...

頁面置換演算法

include using namespace std int process 100 頁面佇列 int memory 3 塊數 int optqueue 100 opt演算法的佇列 int fifoqueue 100 fifo演算法佇列 int lruqueue 100 lru演算法佇列 int ...

頁面置換演算法

位址對映過程中,若在頁面中發現所要訪問的頁面不再記憶體中,則產生缺頁中斷。當發生缺頁中斷時作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法。常見的置換演算法有 1 最佳置換演算法 opt 理想置換演算法 這是一種理想情況下的頁...