1. 程式人生 > >LRU 和 FIFO 頁面置換演算法

LRU 和 FIFO 頁面置換演算法

記憶體裡邊沒有該最新訪問的頁面就叫做缺頁,如果有就叫做命中
記憶體滿的時候之前的頁面被擠出去的現象叫一次缺頁中斷
在一個採用頁式虛擬儲存管理的系統中,有一使用者作業,它依次要訪問的序列是1,2,3,4,1,2,5,1,2,3,4,5.假定分配給該作業的頁數為3且作業初始時未裝載頁面,那麼採用FIFO排程演算法產生的缺頁中斷數為多少,採用LRU排程演算法產生的缺頁中斷數為多少?
答案是:9次和10次。條件:初始未裝載頁面 佇列容量是3

FIFO演算法

先進先出演算法
訪問1 缺頁 1加入佇列 【1】

訪問2 缺頁 2加入佇列 【1 2】

訪問3 缺頁 3加入佇列 【1 2 3】

訪問4 缺頁 1出隊 4加入佇列 【2 3 4】

訪問1 缺頁 2出隊 1加入佇列 【3 4 1】

訪問2 缺頁 3出隊 2加入佇列 【4 1 2】

訪問5 缺頁 4出隊 5加入佇列 【1 2 5】

訪問1 不缺頁 【1 2 5】 命中。

訪問2 不缺頁 【1 2 5】 命中。

訪問3 缺頁 1出隊 3加入佇列 【2 5 3】

訪問4 缺頁 5出隊 4加入佇列 【5 3 4】

訪問5 不缺頁【5 3 4】

因此 缺頁次數為9次。

LRU演算法

最近最少使用演算法
特殊的棧實現

棧頂始終是最新訪問的頁面,記憶體不夠時將棧底頁面移除。下面”【】”之間從從左到右 對應:棧底 -> 棧頂
訪問1 缺頁 【1】

訪問2 缺頁 【1 2】

訪問3 缺頁 【1 2 3】

訪問4 缺頁 【2 3 4】

訪問1 缺頁 【3 4 1】

訪問2 缺頁 【4 1 2】

訪問5 缺頁 【1 2 5】

訪問1 【2 5 1】

訪問2 【5 1 2】

訪問3 缺頁 【1 2 3】

訪問4 缺頁 【2 3 4】

訪問5 缺頁 【3 4 5】

因此 缺頁次數為10次。

另一個例題:

輸入缺頁次數頁面流:

0 1 2 3 2 1 3 2 5 2 3 6 2 1 4 2
FIFO

分析:
012發別調入記憶體, 則記憶體:012(3次缺頁)
調入3逃汰最先進入的0, 則記憶體:123(4次缺頁)
調入2來命中, 則記憶體:123(記憶體中有2不缺頁)
調入1來命中, 則記憶體:123(記憶體中有1不缺頁)
調入3來命中, 則記憶體:123(記憶體中有3不缺頁)
調入5逃汰最先進入的1, 則記憶體:235(5次缺頁)
2,3分別命中,則記憶體:235
調入6逃汰最先進入的, 則記憶體:356(6次缺頁)
調入2逃汰最先進入的, 則記憶體:562(7次缺頁)
調入1逃汰最先進入的, 則記憶體:621(8次缺頁)
最後2命中,
所以缺頁8次

=============================

在LRU演算法中,最近最少使用的頁面被先換出

輸入:7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0
寫出LRU演算法實現頁面更換,並給出缺頁次數.(設在記憶體中佔四個頁架)
分析:
1題目給了訪問串7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0
2題目給了記憶體中佔四個頁架
3題目給了用LRU演算法來實現。
要求:畫出演算法實現。
LRU
給出行 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0

頭—–> 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0
1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7
0 1 2 2 3 0 4 2 2 0 3 3 1 2 0 1
底—–> 7 7 1 1 2 3 0 4 4 4 0 0 3 3 2 2

淘汰出記憶體的頁面: 7 1 4 3

整個的表格是怎麼來的呢?請注意:
題目給了7, 寫7;
題目給了0,寫0, 7下一格;
題目給了1, 寫1,0下一格;
題目給了2, 寫2,1下一格;
注意:已經四個了從上到下是:2107
達到了2的要求:記憶體中佔四個頁架。
至此與FIFO沒有什麼兩樣。接著:

題目給了0, 尋找 有0,FIFO的不寫不變,變成了0調到最上面
題目給了3, 尋找沒有3,寫3,最底7的淘汰,現在是3021,發生了一次缺頁中斷,記下7;一樣。
題目給了0, 尋找 有0,0調到最上面,0321
題目給了4, 尋找沒有4,寫4,最底1的淘汰,發生了一次缺頁中斷,記下1;4032
題目給了2, 尋找 有2,2調到最上面,2403
題目給了3, 尋找 有3,3調到最上面;3240
題目給了0, 尋找 有0,0調到最上面;0324
題目給了3, 尋找 有3,3調到最上面;3024
題目給了2, 尋找 有2,2調到最上面 2304
題目給了1, 尋找沒有1,寫1,最底4的淘汰,發生了一次缺頁中斷,記下4;1230
題目給了2, 尋找 有2,2調到最上面 2130
題目給了0, 尋找 有0,0調到最上面 0213
題目給了1, 尋找 有1,1調到最上面 1023
題目給了7, 尋找沒有7,寫7,最底3的淘汰,發生了一次缺頁中斷,記下3;7102
題目給了0,尋找 有0,0調到最上面 0712
至此整個表格都做好了。詳盡吧。再不會的要打屁屁了。

計算 缺頁中斷率
缺頁中斷次數(先填空的+淘汰的次數)除以頁面引用次數。(就是人家給你的數的總數)*100%
(4+4)/19*100%=42.3%
好了。都完成了。

三句話總結:
lru演算法是也從上往下放數字,
有的調到最上面,(就這點與FIFO不同)
沒有的就把最下面的擠出去(淘汰,發生缺頁中斷)

第三個例題

LRU演算法,缺頁是什麼概念?怎麼計算缺頁次數?
有一個虛擬儲存系統,分配給某個程序3 頁記憶體(假設開始時記憶體為空),頁面訪問序列是:2,3,2,1,5,2,4,5,3,2,5,2.若採用LRU 頁面淘汰演算法,缺頁次數為( ).

首先2,3,2這三頁進入記憶體(程序只分配到3個頁面,切順序為由內到外,第二個2進入時不缺頁,所以共缺頁2次

1進入時,記憶體不滿且記憶體中沒有1這個頁面即第1個進入記憶體,所以順序是2,3,1(共缺頁3次)

下一個進入的是5,替換3(共缺頁4次),得到2,1,5;

下一個進入的是2,記憶體中有2號頁面進行下一個頁面;

下一個進入4,4替換1,得到2,5,4(共缺頁5次);

下一個進入5,記憶體中有5號頁面,進行下一個頁面;

下一個進入3,3替換2,得到3,5,4(共缺頁6次);

下一次進入2,2替換4,得到3,5,2(共缺頁7次);

後面2號和5號記憶體中均存在,則不需要替換.所以一共發生了7次缺頁.

相關推薦

LRU FIFO 頁面置換演算法

記憶體裡邊沒有該最新訪問的頁面就叫做缺頁,如果有就叫做命中 記憶體滿的時候之前的頁面被擠出去的現象叫一次缺頁中斷 在一個採用頁式虛擬儲存管理的系統中,有一使用者作業,它依次要訪問的序列是1,2,3,4,1,2,5,1,2,3,4,5.假定分配給該作業的頁

作業系統- 實驗四 模擬FIFO頁面置換演算法(Java實現)

                                          &

c++模擬FIFO頁面置換演算法

隨機一訪問串和駐留集的大小,通過模擬程式顯示淘汰的頁號並統計命中率。示例: 輸入訪問串:7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 駐留集大小:3 演算法的實現:FIFO淘汰演算法總是淘汰最先進入記憶體的頁面,即選擇在記憶體中駐留時間最久的頁面進行淘汰。該演算法實

頁面置換演算法 FIFOLRU 及各自的命中率

(1) 先進先出演算法FIFO:該演算法的實質是選擇作業中在主存駐留時間最長的一頁淘汰,這種演算法容易實現,例如分配一個作業的儲存塊數為m,則只需建立一張m個元素的隊列表Q(0)、Q(1)、…、Q(m-1)和一個替換指標。這個佇列是按頁調入主存的一頁。如圖4-1所示,某時刻

java實現FIFOLRU頁面置換演算法

   FIFO是記憶體管理的一種頁面置換演算法,FIFO(First Input First Output),即先進先出佇列。例:在超市購物之後會提著我們滿滿的購物車來到收銀臺排在結賬隊伍的最後,眼睜睜地看著前面的客戶一個個離開。這就是一種先進先出機制,先排隊的客戶先行結

作業系統之頁面置換演算法(最佳置換OPT,先進先出FIFO,最近最久未使用LRU

最近學習作業系統時,實驗要求實現常見的三種頁面置換演算法,博主按照書上要求試著編寫,實現了案例,並記錄在部落格隨記中,以便後續自己複習並也給需要的同學分享參考一下!水平有限,若有錯,請悄悄告訴博主!博主好立即改正。 最佳置換演算法(optimal replacement,OPT)是從記憶體中選擇今後不再訪問

C語言作業系統——頁面置換演算法FIFO/LRU

由於本學期學習作業系統所以需要用程式碼實現一些演算法,本人大二由於對C語言掌握的不太好,所以一直逼著自己用C語言寫程式碼,還好寫出來了,在這裡與大家分享。首先建立一個工程檔案,本人喜歡建立一個頭檔案,一個功能檔案和一個主函式檔案。標頭檔案,page_replace.h#inc

LRUFIFO演算法頁面排程舉…

41.在頁式虛擬儲存管理的計算系統中,執行一個共有8頁的作業,且作業在主存中分配到4塊主存空間,作業執行時訪問頁面順序7,0,1,2,3,0,4,3,2,3,6,7,3,1,5,7,6,2,6,7。請問用FIFO和LRU排程演算法時,它們的缺頁中斷率分別是多少?      使用FIFO排程演算法時,頁面裝

頁面置換演算法(OPT,FIFOLRU

頁面置換演算法 地址對映過程中,若在頁面中發現所要訪問的頁面不在記憶體中,則產生缺頁中斷。當發生缺頁中斷時,如果作業系統記憶體中沒有空閒頁面,則作業系統必須在記憶體選擇一個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法。 下面以頁面訪問

頁面置換演算法FIFOLRU,OPT)c模擬

/* * memory.c * * Created on: Jun 9, 2010 * Author: WangYun */ #include<stdio.h> #define PAGE_NUM 20 #define BLOCK 3

記憶體頁面置換演算法FIFOLRU , LFU)

LFU(Least Frequently Used)最近最少使用演算法。它是基於“如果一個數據在最近一段時間內使用次數很少,那麼在將來一段時間內被使用的可能性也很小”的思路。注意LFU和LRU演算法的不同之處,LRU的淘汰規則是基於訪問時間,而LFU是基於訪問次數的。

使用C++STL中的deque實現作業系統FIFOLRU頁面置換演算法

#include <iostream> #include <deque>//雙端佇列所在的標頭檔案 #include <algorithm>//find()函式所在的標頭檔案 using namespace std; cons

作業系統頁面置換演算法 ---之---FIFO置換演算法、OPTIMAL置換算

                                 作業系統頁面置換演算法     &nbs

先進先出頁面置換演算法FIFO

演算法規則: 顧名思義,最早進來的元素,若發生缺頁要最先出去。   code: #include <iostream> #include <cstdlib> #include <vector> #include <cstdio&

作業系統中的頁面置換演算法磁碟排程演算法

頁面置換演算法:http://blog.csdn.net/y920312/article/details/47780253 頁面置換演算法小總結: 1.Optimal(最佳置換演算法)    最長時間內不被訪問,也就是說找最後面的。 2.FIFO(先進先出演算法)    按

頁面置換演算法——LRU

LRU:最近最久未使用演算法。 方法1:LRU的頁面置換演算法是根據頁面調入記憶體後的使用情況做出決策的。由於無法預測各頁面將來的使用情況,只能利用“最近的過去”作為“最近的將來”的近似,因此,LRU

頁面置換演算法的訪問位修改位

最近最少未使用演算法 先淘汰訪問次數最少的頁面,若訪問次數相同,再淘汰未被修改的頁面。 某程序有4個頁面,頁號為0~3,頁面變換表及狀態位、訪問位和修改位的含義如下圖所示。系統給該程序分配了3個儲存塊,當採用第二次機會頁面替換演算法時,若訪問的頁面1不在記憶體,這時應該淘汰

JAVA實現頁面置換演算法——FIFO演算法

有點遺憾,自己沒有獨立寫出來,實在沒有想到用Map來裝資料,而且對Queue理解太生疏了。看來自己學的東西還是不怎麼熟練。。其實最主要的是對FIFO演算法比較陌生,沒有思路。如果有和我一樣沒有思路的同學可以看一下FIFO原理!import java.util.*; impor

FIFO(First-In First-Out)先進先出頁面置換演算法詳解

FIFO(First-In First-Out)先進先出頁面置換演算法:FIFO淘汰演算法總是淘汰最先裝入記憶體的頁面,即選擇在記憶體中駐留時間最久的頁面進行淘汰。該演算法實現只需把一個程序已調入記憶體的頁面,按訪問的時間先後順序連結成一個佇列,並設定一個指標,該指標始終指

最近最久未使用(LRU頁面置換演算法原理及模擬實現

FIFO演算法的效能較差,它所依據的條件是各個頁面調入記憶體的時間,而頁面調入的先後並不能反映頁面的使用狀況。最近最久未使用(LRU)的頁面置換演算法是根據頁面調入記憶體後的使用情況做出決策的。由於無法預測各頁面將來的使用情況,只能利用“最近的過去”作為“最近的