NRU页面置换算法
最近未使用页面置换算法(NRU)算法,找到最久没有使用的页面置换出去
没找到例子,自己试着理解了一下,可能存在错误理解。
和OPT算法相似的,OPT寻找最远或者不在需要的页面替换
则 NRU是寻找最久未使用,则应该向前寻找谁没有距离被置换处最远,则将其置换出
大概是这个样子
#include <iostream>
#define N 3
using namespace std;
int main()
{
int ym[]={7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};
int size=20;
int opt[N]={1,0,7 };
int len[N]={0,0,0};
int sum;
int dq=3;
int flag=0;
int allchagetime=0;
do{
for(int i=0;i<N;i++)
{
cout<<opt[i]<<" ";
}
cout<<endl;
for(int i=0;i<N;i++)
{
sum=0;
if(ym[dq]==opt[0]||ym[dq]==opt[1]||ym[dq]==opt[2])
{
flag=1;
break;
}
else{
flag=0;
for(int j=dq-1;j>=0;j--)
{
sum++;
if(opt[i]==ym[j]||j==0)
{
len[i]=sum;
break;
}
}
}
}
if(flag==0)
{
int max=len[0];
int res;
for(int t=0;t<N;t++)
{
if(len[t]>=max)
{
res=t;
max=len[t];
}
}
opt[res]=ym[dq];
allchagetime++;
}
dq++;
}while(dq!=21);
cout<<"缺页"<<allchagetime+3-1<<"次,"<<"置换"<<allchagetime-1<<"次"<<endl;
}