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