实验四页面置换算法
一、实验目的
理解并掌握模拟分页式虚拟存储管理的缺页中断,以及选择页面调度算法处理缺页中断。
二、实验内容及要求
选择一种或几种页面置换算法进行编程以实现该算法。
三、实验流程图
四、实验程序
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;i scanf("%d",&ym[i]); printf("\n"); for(i=0;i { q=0; while((ym[i]!=mem[q])&&(q!=m)) q++; if(q==m) flag='*'; //缺页,则置标志flag为‘*’ else flag=''; if(flag=='*') { for(j=m-1;j>0;j--) //淘汰最先调入的页面调入当前访问的 mem[j]=mem[j-1]; mem[0]=ym[i]; } for(j=0;j table[j][i]=mem[j]; f[i]=flag; } printf("输出结果为下表(0代表为空,*代表有缺页):\n"); for(i=0;i { for(j=0;j printf("%3d",table[i][j]); printf("\n"); } for(i=0;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;i scanf("%d",&ym[i]); printf("\n"); for(i=0;i { q=0; while((ym[i]!=mem[q])&&(q!=m)) q++; if(q==m) flag='*'; //缺页,则置标志flag为‘*’else flag=' '; for(j=q;j>0;j--) mem[j]=mem[j-1]; mem[0]=ym[i]; for(j=0;j table[j][i]=mem[j]; f[i]=flag; } printf("输出结果为下表(0代表为空,*代表有缺页):\n"); for(i=0;i { for(j=0;j printf("%3d",table[i][j]); printf("\n"); } for(i=0;i printf("%3c",f[i]); } 五、实验结果 1、FIFO(四内存块) 2、LRU(五内存块) 六、实验心得 通过这次实验,进一步了解了什么是缺页中断,以及处理缺页中断的调度算法。通过自己编程,加深了对理论学习的理解。