#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<<\"某进程共有\"< for(int length=0;input!=9;length++) //将输入序列存入process数组,长度为length { process[length]=input; cin>>input; } int j=0; for(j=0;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;j interrupt++; //缺页中断次数加1 PageTable[x]=1; //修改状态位 Block[i]=x; //页x调入物理块 cout<<\"缺页中断 内存未满 调入页\"< cout<<\"命中 物理块内的页为 \"; for(j=0;j if(i==n) //访问页x时内存已装满,且没有命中,产生缺页中断,调入该页至内存,淘汰最先进入的页 { for(l=0;l } if(j==0) pa[l]=w; } } int max=0; for(l=0;l 因篇幅问题不能全部显示,请点此查看更多更全内容