页面置换算法——最佳置换算法、最近最少使用算法、先进先出算法、时钟置换算法
計算機操作系統——頁面置換算法
根據中國大學MOOC計算機操作系統(電子科技大學)而寫.
如果自己要設計頁面置換,要根據什么原則來設計?我們首先想到的是存儲器的局部性原理(時間局部性、空間局部性)
Page removed should be the page least likely to be referenced in the future.刪除的頁面應該是將來最不可能被引用的頁面。
Most policies predict the future behavior on the basis of past behavior.大多數原則根據過去的行為來預測未來的行為。
通過運行的歷史來預測將來的行為,這也是根據局部性原理得到的。
在最近的將來,最少可能被引用到。(最近的將來不用的頁面換出去)根據局部性原理,我們就得到了頁面置換算法的設計思想。
一、Optimal Algorithm(最佳置換算法)
拿來用作比較的參考指標,工程上無法實現
- 置換在將來再也不被訪問的頁面(預測將來發生的事)
- 置換在最遠的將來才被訪問的頁面
一般做題或考試的題目:
- 給出訪問頁面的流(訪問序列)Page Address Stream
- 給出駐留集(頁框數,盛放多少個頁面)
- 給出條件(預調頁、請求調頁)
- 給出置換算法
- 要求計算缺頁次數及缺頁率
預調頁:將預計在不久之后便會被訪問的頁面預先調入內存。
請求調頁:一直推遲到進程要訪問的頁面不在物理內存時為止,由此引起缺頁中斷。
二、Least Recently Used Algorithm(最近最少使用算法)
- Replaces the page that has not been referenced for the longest time.替換最長時間未被引用的頁面。
- By the principle of locality,this should be the page least likely to be referenced in the near future.根據位置原則,這應該是在不久的將來最不可能被引用的頁面。
- Each page could be tagged with the time of last reference.This would require a great deal of overhead.每頁都可以用最后一次引用的時間來標記。這將需要大量的開銷。
- 從原理上看,LRU算法可以被實現;但是任何一種實現方法都將產生很大的系統開銷。因此,許多OS據使用近似LRU算法。
- 一些應用程序具有很強的非局部性存儲引用(比如順序存儲引用)特征。對于此類應用程序,LRU算法就不再由優勢。
三、First-in First-out Algorithm(先進先出算法)
- Treats page frames allocated to a process as a circular buffer.-將分配給進程的頁面幀視為循環緩沖區。
- Pages are removed in round-robin style.-頁面以循環方式移除。
- Simplest replacement policy to implement.-實施最簡單的更換政策。
- Page that has been in memory the longest is replaced.-替換內存中最長的頁面。
- These pages many be needed again very soon.-這些頁面可能很快就會被再次使用。
- FIFO算法最簡單,最容易實現。
- 如果應用程序具有順序存儲引用特征,那么使用FIFO算法將獲得很好的性能。
- 但是大多數應用程序具有局部存儲引用特征。對于此類的應用程序,FIFO算法的性能是很差的。
- 容易產生抖動(抖動:即對剛被替換出去的頁,立即又要被訪問。需要將它調入,因無空閑內存又要替換另一頁,而后者又是即將被訪問的頁,于是造成了系統需花費大量的時間忙于進行這種頻繁的頁面交換,致使系統的實際效率很低,嚴重導致系統癱瘓.)
- 可能存在Belady現象( Belady現象:虛擬存儲器系統中的一種異常現象,即增加進程的頁框數,缺頁率反而上升。)
四、Clock Algorithm(時鐘置換算法)
LRU算法的近似,系統開銷很大,在現代操作系統中使用很多.
- Additional bit called a use bit.-使用位的附加位。
- When a page is first loaded in memory,the use bit is set to 1.-當頁面第一次載入內存時,使用位設置為1。
- When the page is referenced,the use bit is set to 1.-當頁面被引用時,使用位被設置為1。
- When it is time to replace a page,the first frame encountered with the use bit set to 0 is replaced.-當需要替換頁面時,使用位設置為0時遇到的第一幀被替換。
- During the search for replacement,each use bit set to 1 is changed to 0.-在搜索替換的過程中,每個設置為1的使用位都變為0。
CLOCK算法中,系統將置換范圍內的所有frame組成一個環形緩沖區,并為其設置一個掃描指針.
沒有進行頁面置換時,掃描指針總是指向上一次進行頁面置換時被置換頁面所在位置的下一個位置.
當需要進行頁面置換時,系統將移動掃描指針搜索置換范圍內的各個frame以便找到一個U位為0的frame.
- 如果當前掃描指針所指向的frame其U位為1,那么系統將該frame的U位設置為0,掃描指針移到下一個位置,繼續搜索.
- 如果當前掃描指針所指向的frame其U位為0,則系統將該frame中的頁面作為被置換頁面,同時把掃描指針移到下一個位置,停止搜索.
改進后的Clock置換算法:
(最應該被淘汰的頁)1類(A=0,M=0):表示該頁最近即未被訪問,又未被修改,是最佳淘汰頁。
2類(A=0,M=1):表示該頁最近未被訪問,但已被修改。
3類(A=1,M=0):表示該頁最近已被訪問,但未被修改,該頁有可能再被訪問。
(最不應該被淘汰的頁)4類(A=1,M=1):表示該頁最近已被訪問且被修改,該頁可能再被訪問。
總結
以上是生活随笔為你收集整理的页面置换算法——最佳置换算法、最近最少使用算法、先进先出算法、时钟置换算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode--90. 子集Ⅱ
- 下一篇: 【剑指offer】面试题36:二叉搜索树