页面置换算法(FIFO算法,LRU算法).docVIP

  • 22
  • 0
  • 约1.73千字
  • 约 5页
  • 2019-05-23 发布于江西
  • 举报
实验四 页面置换算法 实验目的 理解并掌握模拟分页式虚拟存储管理的缺页中断,以及选择页面调度算法处理缺页中断。 实验内容及要求 选择一种或几种页面置换算法进行编程以实现该算法。 实验流程图 否调入所访问的页面按算法不同淘汰一页面置缺页标志flag为’*’是是否缺页?查页表取访问的页号输入页面访问序列 否 调入所访问的页面 按算法不同淘汰一页面 置缺页标志flag为’*’ 是 是否缺页? 查页表 取访问的页号 输入页面访问序列 实验程序 1、FIFO算法 #include stdio.h #define n 20 #define m 4 void main() { int ym[n],i,j,q,mem[m]={0},table[m][n]; char flag,f[n]; printf(请输入页面访问序列\n); for(i=0;in;i++) scanf(%d,ym[i]); printf(\n); for(i=0;in;i++) //查页表,看是否缺页 { q=0; while((ym[i]!=mem[q])(q!=m)) q++; if(q==m) flag=*; //缺页,则置标志flag为‘*’ else flag= ; if(flag==*) { for(j=m-1;j0;j--) //淘汰最先调入的页面调入当前访问的 mem[j]=mem[j-1]; mem[0]=ym[i]; } for(j=0;jm;j++) table[j][i]=mem[j]; f[i]=flag; } printf(输出结果为下表(0代表为空,*代表有缺页):\n); for(i=0;im;i++) { for(j=0;jn;j++) printf(%3d,table[i][j]); printf(\n); } for(i=0;in;i++) printf(%3c,f[i]); } 2、LRU算法 #include stdio.h #define n 20 #define m 5 void main() { int ym[n],i,j,q,mem[m]={0},table[m][n]; char flag,f[n]; printf(请输入页面访问序列\n); for(i=0;in;i++) scanf(%d,ym[i]); printf(\n); for(i=0;in;i++) //查页表,看是否缺页 { q=0; while((ym[i]!=mem[q])(q!=m)) q++; if(q==m) flag=*; //缺页,则置标志flag为‘*’ else flag= ; for(j=q;j0;j--) mem[j]=mem[j-1]; mem[0]=ym[i]; for(j=0;jm;j++) table[j][i]=mem[j]; f[i]=flag; } printf(输出结果为下表(0代表为空,*代表有缺页):\n); for(i=0;im;i++) { for(j=0;jn;j++) printf(%3d,table[i][j]); printf(\n); } for(i=0;in;i++) printf(%3c,f[i]); } 实验结果 1、FIFO(四内存块) 2、LRU(五内存块) 实验心得 通过这次实验,进一步了解了什么是缺页中断,以及处理缺页中断的调度算法。通过自己编程,加深了对理论学习的理解。

文档评论(0)

1亿VIP精品文档

相关文档