搜索
您的当前位置:首页正文

LRU页面置换算法

来源:筏尚旅游网
#include #include

#define m 9 //m表示页数 #define n 3 //n表示物理块数

float interrupt=0; //产生缺页中断的次数

int k=0; //指向最先进入内存的页,即被淘汰的页

int PageTable[m+1]; //定义页表,总共m页,数组中数值是状态位 =1表示该页在内存中,=0表示不在内存中,默认处置为0

int Block[n]; //定义物理块,总共n个,数组中数值表示对应物理块中装入的页的编号

int process[20]; //进程访问序列

int number=1; //用于标志访问次数 void Visit(int,int); //访问函数

/********************************************************************************

主函数

********************************************************************************/

void main (void) {

int input;

cout<<\"某进程共有\"<>input;

for(int length=0;input!=9;length++) //将输入序列存入process数组,长度为length {

process[length]=input; cin>>input;

} int j=0;

for(j=0;jfor(j=0;jVisit(process[j],j); //依次访问页process[j]

cout<<\"共\"</********************************************************************************

访问函数

********************************************************************************/

void Visit(int x,int t)//j是实参传给x,即页面的编号

{ int i,j,l=0,q=0,w=0; int *pa=new int[n]; for(j=0;jfor(i=0;iif(Block[i]==-1) //访问页x时没有命中,且内存未装满,产生缺页中断,直接调入访问页 {

interrupt++; //缺页中断次数加1 PageTable[x]=1; //修改状态位

Block[i]=x; //页x调入物理块

cout<<\"缺页中断 内存未满 调入页\"<if(PageTable[x]==1) //访问页x时命中 {

cout<<\"命中 物理块内的页为 \";

for(j=0;jcout<<\"\\n\"; break; } }

if(i==n) //访问页x时内存已装满,且没有命中,产生缺页中断,调入该页至内存,淘汰最先进入的页 { for(l=0;l-1;j--) { w++; if(Block[l]==process[j]) { pa[l]=w; break;

} if(j==0) pa[l]=w; } } int max=0; for(l=0;lmax || pa[l]==max) max=pa[l]; for(l=0;lnumber++; //访问次数加1 }

因篇幅问题不能全部显示,请点此查看更多更全内容

Top