複習一下頁面置換演算法和快取置換演算法。
理想 (最佳、最優)置換演算法( opt, optimal,最優的)
設計思想:置換以後不再需要的或最遠的將來才會用到的頁面
僅供評價,benchmark, 永遠無法實現。
最近最久未使用(least recently used,lru)演算法。
它假設如下:現在不怎麼使用的頁面,以後可能也不會用到,所以可以被優先替換。理論應該是時間區域性性。
lru效能較好,但需要暫存器和棧的硬體支援,lru是堆疊類的演算法,理論上可以證明,堆疊類演算法不可能出現belady異常。
軟體**具體實現可以使用雜湊鍊錶法,具體參考 [程式設計師小灰的雜湊鍊錶]。
首先,如果硬體有乙個64位的計數器,每條指令執行完後自動加1。在每個頁表項裡新增乙個域,用於存放計數器的值。程序執行,每次訪問頁面的時候,都把計數器的值儲存在被訪問頁面的頁表項中。一旦發生缺頁,作業系統檢查頁表中所有的計數器的值以找出最小的乙個,那這一頁就是最久未使用的頁面,調出即可。
其次,另外乙個矩陣演算法:在乙個有n個頁框的機器中,lru硬體可以維持乙個n*n的矩陣,開始時所有位都是0。訪問到第k頁時,硬體把k行的位全設為1,之後再把k列的位置設為0。容易證明,在任意時候,二進位制值最小的行即為最久未使用的頁面,當調換頁面時,將其調出(涉及矩陣乘法,大佬自行證明,菜雞記住就可以了)。
以上的兩種演算法,無疑都要比純粹的軟體演算法方便且快捷。每次頁面訪問之後的操作——儲存計數器值和設定k行k列的值,時間複雜度都是o(1)量級,與純軟體演算法不可同日而語。
最不常用(lfu,least frequently used)演算法
基於如果乙個資料在最近一段時間內使用次數很少,那麼在將來一段時間內被使用的可能性也很小的思路。
這種演算法選擇最近時期使用次數最少的頁作為淘汰頁。為每個頁面配置乙個計數器,一旦某頁被訪問,則將其計數器的值加1,在需要選擇一頁置換時,則將選擇其計數器值最小的頁面,即記憶體中訪問次數最少的頁面進行淘汰。
這種演算法可能存在的問題是:有些也在程序開始時被訪問的次數很多,但以後這些頁可能不再被訪問,這樣的頁不該長時間停留在記憶體中。解決這個問題的方法之一是定期的將計時器右移,以形成指數衰減的平均使用次數。
not recently used
選擇在最近一段時間內未使用過的一頁並置換
實現:設定頁表表項的兩位
訪問位( r), 修改位( m)
啟動乙個程序時, r、 m位置0
r位被定期清零(復位)
發生缺頁中斷時,作業系統檢查 r, m:
第0類:無訪問,無修改
第1類:無訪問,有修改
第2類:有訪問,無修改
第3類:有訪問,有修改
演算法思想:
***隨機***從***編號最小的非空類***中選擇一頁置換
(摘錄自陳老師ppt)
nru的時鐘演算法實現
1.從指標的當前位置開始,掃瞄頁框緩衝區,選擇遇到的第乙個頁框( r=0; m=0)用於置換(本掃瞄過程中,對訪問位不做任何修改)
2.如果第1步失敗,則重新掃瞄,選擇第乙個( r=0; m=1)的頁框(本次掃瞄過程中,對每個跳過的頁框,將其訪問位設定成0),注意,如果使用者設定了儲存按鈕等,需要將修改了的頁表寫回硬碟
3.如果第2步失敗,指標將回到它的最初位置,並且集合中所有頁框的訪問位均為0。
重複第1步,並且,如果有必要,重複第2步。這樣將可以找到供置換的頁框
最不經常使用演算法(nfu)
not frequently used
選擇訪問次數最少的頁面置換
lru的一種軟體解決方案,並不是一種新的演算法。
實現:➢ 軟體計數器,一頁乙個,初值為0
➢ 每次時鐘中斷時,計數器加r
➢ 發生缺頁中斷時,選擇計數器值最小的一頁置換
作業系統 幾種頁面置換演算法
1 最優置換演算法 opt 理想置換演算法 最佳置換法 opt 選擇將來不再使用或在最遠的將來才被訪問的頁調換出去 不便於實現 這是一種理想情況下的頁面置換演算法,但實際上是不可能實現的。該演算法的基本思想是 發生缺頁時,有些頁面在記憶體中,其中有一頁將很快被訪問 也包含緊接著的下一條指令的那頁 而...
作業系統 記憶體頁面置換演算法
用頁面置換演算法決定應該換出哪個頁面 五種頁面置換演算法 1 最佳置換演算法 opt 2 先進先出演算法 fifo 3 最近最少使用演算法 lru 4 時鐘置換演算法 clock 5 改進型的時鐘置換演算法 最佳置換演算法 opt 每次選擇淘汰的頁面將是以後永不使用,最長時間內不再被訪問的頁面,無法...
作業系統 頁面置換演算法
1 最佳頁面置換演算法 opt 其所選擇的被淘汰頁面,將是以後永不再用的,或許是在最長 未來 時間內不再被訪問的頁面。最佳置換演算法是一種理想化的演算法,具有最好的效能,但難於實現。先進先出置換演算法最直觀,但可能性能最差,故應用極少。優點 保證獲得最低的缺頁率 缺點 無法預知乙個程序在記憶體的若干...