文档库 最新最全的文档下载
当前位置:文档库 › 页面置换算法(FIFO算法,LRU算法)

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

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

实验四页面置换算法

一、实验目的

理解并掌握模拟分页式虚拟存储管理的缺页中断,以及选择页面调度算法处理缺页中断。

二、实验内容及要求

选择一种或几种页面置换算法进行编程以实现该算法。

三、实验流程图

四、实验程序

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(五内存块)

六、实验心得

通过这次实验,进一步了解了什么是缺页中断,以及处理缺页中断的调度算法。通过自己编程,加深了对理论学习的理解。

相关文档