當前位置:首頁 » 操作系統 » 淘汰演算法

淘汰演算法

發布時間: 2022-01-25 08:05:35

⑴ LRU頁面淘汰演算法

LRU演算法
最近最久未使用(LRU)的頁面置換演算法,是根據頁面調入內存後的使用情況進行決策的。由於無法預測各頁面將來的使用情況,只能利用「最近的過去」作為「最近的將來」的近似,因此,LRU置換演算法是選擇最近最久未使用的頁面予以淘汰。該演算法賦予每個頁面一個訪問欄位,用來記錄一個頁面自上次被訪問以來所經歷的時間t,當須淘汰一個頁面時,選擇現有頁面中其t值最大的,即最近最久未使用的頁面予以淘汰。
LRU的實現(需要「堆棧」支持)
可利用一個特殊的棧來保存當前使用的各個頁面的頁面號。每當進程訪問某頁面時,便將該頁面的頁面號從棧中移出,將它壓入棧頂。因此,棧頂始終是最新被訪問頁面的編號,而棧底則是最近最久未使用頁面的頁面號。

⑵ 在淘汰策略的先進先出淘汰演算法來說,下列說法正確的是()

E

⑶ lru 淘汰演算法

最佳演算法(OPT演算法)

當需要淘汰一個內存頁面時,這種演算法力圖選擇該進程內存各個頁面中永遠不再需要的頁,若找不到,則選擇最久以後才會用到的頁。這種演算法有最小的缺頁率。問題是它需要知道運行進程今後的整個訪問蹤跡,這往往難以做到,因而它只有理論上的意義。

先進先出演算法(FIFO演算法)

FIFO演算法維護一個先進先出隊列,隊列長度為分配給這個進程的頁面數M。開始時隊列是空的,裝入進程的第一頁即可啟動運行,當訪問到某個不在內存的頁面時,把它從輔存調入,加入FIFO隊列的尾部。

最久未使用淘汰演算法(LRU演算法)

LRU(least recently used)演算法維護一個後進先出棧,棧大小為分配給這個進程的頁面數M。開始時棧是空的,裝入進程的第一頁即可啟動運行,當訪問到某個不在內存的頁面時,把它從輔存調入,加入棧頂。

FIFO和LRU演算法的例子:http://osjx.8100988.net/LWR/RAM/HLM/FIFOsf.HTM

CLOCK演算法

又叫NRU(Not Recently Used)演算法,NRU又名近似的LRU置換演算法。
當一存儲塊中的頁面訪問時,其相應的「頁面訪問」位由硬體自動置「1」,而由頁面管理體制軟體周期性地(設周期為T,其值通常為幾百毫秒),把所有的頁面訪問位重新置為「0」。這樣,在時間T內,某些被訪問的頁面,其對應的訪問位為「1」而未訪問的頁面,其對應的訪問位為「0」。查尋頁面訪問位為「0」的頁面。在查找過程中,那些被訪問的頁所對應的訪問位被重新置為「0」。由此可見,實際上這種近似LRU演算法,已經退化成一種「最近不用」的演算法NRU(Not Recently Used)。

CLOCK演算法的例子:http://www.cskaoyan.com/thread-4898-1-1.html

其實這個問題我也不太會,去臨時查的資料,第一個例子是我自己算的,不知道我理解得對不對;如果有錯誤的地方還請指正,共同進步~其他的演算法的例子我都給了鏈接,你自己去看吧。

⑷ 先進先出頁面淘汰演算法

#include<stdio.h>
#include<stdlib.h>
#define max 30
typedef struct{
int visit_number;//要訪問的頁面號
}nu,number[max];
int *memoryblock;//主存中有三個主存塊,可裝三個頁面
void init_memoryblock(int n)//初始化主存塊
{
int i=1;
memoryblock=(int*)malloc(sizeof(int));//分配空間
for(i=1;i<=n;i++)
{
memoryblock[i]=-1;//開始時候沒有頁面進入,初始為-1
}
}
void init_visitpage(number num,int n)//n表示要訪問的頁面的個數
{
int i=0;
int j=3;
printf("輸入要訪問的頁面號: ");
for(i=1;i<=n;i++)
{
scanf("%d",&num[i].visit_number);
}
printf("\n");
}
void FIFO_page_dispatch(number num,int n)//FIFO頁面調度演算法
{
int i,j=3,temp,counter=0;
for(i=1;i<=n;i++)
{
//----------------------------頁面在主存中-------------------------------
for(j=3;j>=1;j--)
{
if(num[i].visit_number==memoryblock[j])//////要訪問的頁面在主存中
{
printf("(%d)頁面在主存塊中,換出和換進都是%d號頁面:\n",i,memoryblock[j]);
}
break;
}
//-----------------------------------------------------------------------
//----------------------------頁面不在主存中-----------------------------
if(num[i].visit_number!=memoryblock[1]&&num[i].visit_number!=memoryblock[2]&&
num[i].visit_number!=memoryblock[3])/////////////[ 1 ]
/*內存中沒有要訪問的頁面,中斷*/
{
if(memoryblock[1]!=-1&&memoryblock[2]!=-1&&memoryblock[3]!=-1)
{
temp=memoryblock[3];
memoryblock[3]=memoryblock[2];
memoryblock[2]=memoryblock[1];
memoryblock[1]=num[i].visit_number;
//---------------------------------
printf("(%d)——頁面發生置換:",i);
printf("換出(%d號)頁面—",temp);
printf("換進(%d)號頁面\n",num[i].visit_number);
counter++;
}
for(j=3;j>=1;j--)//////////////[ 2 ]
{
if(memoryblock[j]==-1)//還有空閑主存塊
{
printf("(%d)有空閑主存塊,%d號頁面直接調入:\n",i,i);
memoryblock[j]=num[i].visit_number;
break;
}

}
//-----------------------------移動主存塊-------------------
}
//------------------------------------------------------------------------
}
printf("\n共產生 %d 次頁面置換:",counter);
}
void main()
{
number num;
int m,n;
printf("輸入要訪問頁面串的個數(<30)和內存塊個數:");
{
scanf("%d%d",&n,&m);
getchar();
}
init_memoryblock(m);//初始化主存塊
init_visitpage(num,n);//輸入要訪問的頁面號順序
FIFO_page_dispatch(num,n);//FIFO調度
printf("\n");
}

⑸ 關於先進先出(FIFO)頁面淘汰演算法

輸入:1,2,3,4,1,2,5,1,2,3,4,5

先進先出,就是保存最近3個訪問的記錄在內存中
, , <—1 中斷1次
, ,1<—2 中斷1次
, 1,2<—3 中斷1次
1,2,3 <—4 中斷1次
2,3,4 <—1 中斷1次
3,4 ,1<—2 中斷1次
4,1,2<—5 中斷1次
1,2,5<—1 命中,不中斷
2,5,1 <—2 命中,不中斷
5,1,2<—3 中斷1次
1,2,3 <—4 中斷1次
2,3,4 <—5 中斷1次
3,4,5

累計中斷12次

⑹ 分頁虛擬存儲管理中有哪幾種常見的頁面淘汰演算法

理想置換演算法
最近最久未使用(LRU)
最少使用
先進先出
clock置換演算法

⑺ 先進先出(FIFO)淘汰演算法怎麼算

輸入:123412512345 先進先保存近3訪問記錄內存 , , <—1 斷1 , ,1<—2 斷1 , 1,2<—3 斷1 1,2,3 <—4 斷1 2,3,4 <—1 斷1 3,4 ,1<—2 斷1 4,1,2<—5 斷1 1,2,5<—1 命斷 2,5,1 <—2 命斷 5,1,2<—3 斷1 1,2,3 <—4 斷1 2,3,4 <—5 斷1 3,4,5 累計斷12

資料庫LRU 頁面淘汰演算法

餓,LRU 最近最久未使用演算法

當前頁面內容:
頁面一 2 2 2 1 1 1 4

頁面二 3 3 3 5 5 5

頁面三 2 2 2 2 2

頁面訪問順序 2 3 2 1 5 2 4 .............
缺 缺 缺 缺 缺 不缺 缺
注意這步 和下面那步

這只是個演算法,和資料庫之類的沒關系

我暈 ,幾行內容咋對不上,我編輯時是正常的

熱點內容
linux下ntp伺服器搭建 發布:2024-09-08 08:26:46 瀏覽:742
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:171
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:778
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:101
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:209
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995
加上www不能訪問 發布:2024-09-08 06:39:52 瀏覽:811
銀行支付密碼器怎麼用 發布:2024-09-08 06:39:52 瀏覽:513
蘋果手機清理瀏覽器緩存怎麼清理緩存 發布:2024-09-08 06:31:32 瀏覽:554