頁面置換演算法

2021-10-05 02:27:26 字數 2160 閱讀 3634

以下內容全部來自作業系統原理

功能目標:

頁面置換演算法的目標主要是減少頁面置換次數

最優頁面置換演算法

基本思路:當乙個缺頁中斷發生時,對於儲存在記憶體當中的每乙個邏輯頁面,計算在它的下一次訪問之前,還需等待多長時間,從中選擇等待時間最長的那個,作為被置換的頁面。這只是一種理想情況,在實際系統中是無法實現的,因為作業系統無從知道每乙個頁面要等待多長時間以後才會再次被訪問。可用作其他演算法的效能評價的依據(在乙個模擬器上執行某個程式,並記錄每一次的頁面訪問情況,在第二 遍執行時即可使用最優演算法)

基本思路:選擇在記憶體中駐留時間最長的頁面並淘汰,其實就是誰最先進來,誰就最先被淘汰.

實現機制:所有在記憶體的頁面按照進入時間的順序用鍊錶鏈結起來.當有新的頁面加進來的時候,只需要修改鍊錶頭上的頁面,新加進來的頁面放在鍊錶的末端.

優點:簡單以實現.

lru置換演算法是選擇最近最久未使用的頁面予以淘汰。該演算法賦予每個頁面乙個訪問字段,用來記錄乙個頁面自上次被訪問以來所經歷的時間t。當需要淘汰乙個頁面時,選擇現有也麵中t值最大的,即最近最久未使用的頁面予以淘汰。
**下面內容來自[頁面置換演算法之clock演算法](

時鐘置換演算法可以認為是一種最近未使用演算法,即逐出的頁面都是最近沒有使用的那個。我們給每乙個頁面設定乙個標記位u,u=1表示最近有使用u=0則表示該頁面最近沒有被使用,應該被逐出。

按照1-2-3-4的順序訪問頁面,則緩衝池會以這樣的一種順序被填滿:

注意中間的指標,就像是時鐘的指標一樣在移動,這樣的訪問結束後,緩衝池裡現在已經被填滿了,此時如果要按照1-5的順序訪問,那麼在訪問1的時候是可以直接命中快取返回的,但是訪問5的時候,因為緩衝池已經滿了,所以要進行一次逐出操作,其操作示意圖如下:

最初要經過一輪遍歷,每次遍歷到乙個節點發現u=1的,將該標記位置為0,然後遍歷下乙個頁面,一輪遍歷完後,發現沒有可以被逐出的頁面,則進行下一輪遍歷,這次遍歷之後發現原先1號頁面的標記位u=0,則將該頁面逐出,置換為頁面5,並將指標指向下乙個頁面。

假設我們接下來會訪問2號頁面,那麼可以直接命中指標指向的頁面,並將這個頁面的標記為u置為1。

但是考慮乙個問題,資料庫裡逐出的頁面是要寫回磁碟的,這是乙個很昂貴的操作,因此我們應該優先考慮逐出那些沒有被修改的頁面,這樣可以降低io。

因此在時鐘置換演算法的基礎上可以做乙個改進,就是增加乙個標記為m,修改過標記為1,沒有修改過則標記為0。那麼u和m組成了乙個元組,有四種可能,其被逐出的優先順序也不一樣:

(u=0, m=0) 沒有使用也沒有修改,被逐出的優先順序最高;

(u=1, m=0) 使用過,但是沒有修改過,優先順序第二;

(u=0, m=1) 沒有使用過,但是修改過,優先順序第三;

(u=1, m=1) 使用過也修改過,優先順序第四。

第二次機會演算法的基本思想是與fifo相同的,但是有所改進,避免把經常使用的頁面置換出去。當選擇置換頁面時,依然和fifo一樣,選擇最早置入記憶體的頁面。但是二次機會法還設定了乙個訪問狀態位。所以還要檢查頁面的的訪問位。如果是0,就淘汰這頁;如果訪問位是1,就給它第二次機會,並選擇下乙個fifo頁面。當乙個頁面得到第二次機會時,它的訪問位就清為0,它的到達時間就置為當前時間。如果該頁在此期間被訪問過,則訪問位置為1。這樣給了第二次機會的頁面將不被淘汰,直至所有其他頁面被淘汰過(或者也給了第二次機會)。因此,如果乙個頁面經常使用,它的訪問位總保持為1,它就從來不會被淘汰出去。
第二次機會演算法可視為乙個環形佇列。用乙個指標指示哪一頁是下面要淘汰的。當需要乙個儲存塊時,指標就前進,直至找到訪問位是0的頁。隨著指標的前進,把訪問位就清為0。在最壞的情況下,所有的訪問位都是1,指標要通過整個佇列一周,每個頁都給第二次機會。這時就退化成fifo演算法了。

全域性頁置換演算法:

在區域性演算法裡面並沒有考慮各個程序之間的訪存差異,全域性置換演算法為程序分配可變數目的物理頁面。常駐集是指程序在執行時,當前時刻實際駐留在記憶體當中的頁面集合。而工作集是程序在執行過程所固有的特徵。置換演算法的工作就是在程序的工作集的前提下,確定常駐集的大小以及相應頁面。

頁面置換演算法

常用的頁面置換演算法有三種 先進先出演算法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 理想置換演算法 這是一種理想情況下的頁...