考慮下述頁面走向:
1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6
當(dāng)內(nèi)存塊數(shù)量分別為3時,試問FIFO、LRU、OPT這三種置換算法的缺頁次數(shù)各是多少?
答:缺頁定義為所有內(nèi)存塊最初都是空的,所以第一次用到的頁面都產(chǎn)生一次缺頁。
當(dāng)內(nèi)存塊數(shù)量為3時:
發(fā)生缺頁中斷的次數(shù)為16。
在FIFO算法中,先進(jìn)入內(nèi)存的頁面被先換出。當(dāng)頁6要調(diào)入時,內(nèi)存的狀態(tài)為4、1、5,考查頁6之前調(diào)入的頁面,分別為5、1、2、4,可見4為最先進(jìn)入內(nèi)存的,本次應(yīng)換出,然后把頁6調(diào)入內(nèi)存。
發(fā)生缺頁中斷的次數(shù)為15。
LRU是Least Recently Used的縮寫,即最近最少使用頁面置換算法,是為虛擬頁式存儲管理服務(wù)的。該算法的初衷是有內(nèi)存管理而被提出來的,其目的是為解決“如何節(jié)省利用容量不大的內(nèi)存為最多的進(jìn)程提供資源”時如何減少過多的讓進(jìn)程去讀取外存。 這里以鏈表法來實現(xiàn)LRU: 一點介紹 操作系統(tǒng)為每個進(jìn)程維護(hù)一條鏈表,鏈表的每個結(jié)點記錄一張頁面的地址。調(diào)用一次頁面,則把該頁面的結(jié)點從鏈中取出,放到鏈尾;要裝入新頁,則把鏈頭的頁面調(diào)出,同時生成調(diào)入頁面的結(jié)點,放到鏈尾。
在LRU算法中,最近最少使用的頁面被先換出。當(dāng)頁6要調(diào)入時,內(nèi)存的狀態(tài)為5、2、1,考查頁6之前調(diào)入的頁面,分別為5、1、2,可見2為最近一段時間內(nèi)使用最少的,本次應(yīng)換出,然后把頁6調(diào)入內(nèi)存。
發(fā)生缺頁中斷的次數(shù)為11。
在OPT算法中,在最遠(yuǎn)的將來才被訪問的頁面被先換出。當(dāng)頁6要調(diào)入時,內(nèi)存的狀態(tài)為1、2、5,考查頁6后面要調(diào)入的頁面,分別為2、1、2、…,可見5為最近一段時間內(nèi)使用最少的,本次應(yīng)換出,然后把頁6調(diào)入內(nèi)存。
最不經(jīng)常使用(Least Frequently Used --LFU) 頁置換算法,要求在頁置換時置換引用計數(shù)最小的頁,因為經(jīng)常使用的頁應(yīng)該有一個較大的引用次數(shù)。但是有些頁在開始時使用次數(shù)很多,但以后就不再使用,這類頁將會長時間留在內(nèi)存中,因此可以將引用計數(shù)寄存器定時右移一位,形成指數(shù)衰減的平均使用次數(shù)。
注意LFU與LRU的區(qū)別,LFU一定是使用次數(shù)最少并且最近的被淘汰,而LRU被淘汰的是離上一次使用時間最長的。。
OPT算法因為要知道后面請求的頁框,因此我覺得這個算法有個小小的bug,如果在某個請求中,若在該請求的頁框之后的頁框序列中至少存在一個和當(dāng)前內(nèi)存塊中不匹配的頁框,則按照內(nèi)存塊的順序(從上往下)替換沒有出現(xiàn)的頁框。比如上面那個OPT例子。對于最后一個頁框請求,因為6未命中,且6之后沒有請求的序列,因此應(yīng)該替換3,所以替換后的序列為6 , 2 ,1 當(dāng)然,這只是針對做題而言。
轉(zhuǎn)自http://blog.csdn.net/tounaobun/article/details/8441493