当前位置:文档之家› 请求页式存储管理中常用页面置换算法模拟

请求页式存储管理中常用页面置换算法模拟

}
}
}
/*第三步,输出*/ /*输出访问序列*/
for (lie=0;lie<4;lie++)
{
printf("%d ",cunchufangwenyemian[lie]);
}
printf("\n"); /*输出计算过程*/
for (hang=0;hang<3;hang++)
{
for(lie=0;lie<4;lie++)
实验名称
请求页式存储管理中常用页面置换算法模拟
课程名称
计算机操作系统
所属系部班级
计科0902
时间
2011年12月8日第9、10节
地点
E305
姓名
王校君
学号
200实验要求
1、上机前认真阅读实验内容,并编好程序;
2、上机实验后,请列出实验数据,写出实验结果;
{printf("\n请输入第%d个页面:",lie);
scanf("%d",&cunchufangwenyemian[lie]);
}
/*初始化计算过程数组*/
for (lie=0;lie<4;lie++)
{ for(hang=0;hang<3;hang++)
{ cunchujisuanguocheng[hang][lie]=-1; }
{
/*对于某一列进行处理*/
lie=wenmenyemiangeshu;
if (lie==0) /*如果为第一列*/
{cunchujisuanguocheng[0][lie]= cunchufangwenyemian[lie]; /*将页面落下来*/
cunchushifoumingzhong[0]=0; /*是否命中为0,不命中*/
3、完成实验报告后交任课教师。
二、实验目的
页式虚拟存储器实现的一个难点是设计页面调度(置换)算法,即将新页面调入内存时,如果内存中所有的物理页都已经分配出去,就要按某种策略来废弃某个页面,将其所占据的物理页释放出来,供新页面使用。本实验的目的是通过编程实现几种常见的页面调度(置换)算法,加深读者对页面思想的理解。
}
}
else
{/*如果没有命中,则向下移一位,新的进来*/
for(hang=2;hang>0;hang--)
{
cunchujisuanguocheng[hang][lie]= cunchujisuanguocheng[hang-1][lie-1];/*将上一列逐个下移复制过来*/
}
cunchujisuanguocheng[0][lie]=cunchufangwenyemian[lie];/*最上面的等于新进来的*/
int cunchufangwenyemian[4];/*存储访问的页面*/
int cunchujisuanguocheng[3][4];/*存储计算过程;*/
int cunchushifoumingzhong[4];/*存储是否被命中*/
int lie,hang;/*循环变量列,行*/
int shifoumingzhong;/*在前一列的位置,没有则为0;*/
}
else
{/*如果不为第一列*/
shifoumingzhong=0; /*假设没命中*/
for(hang=0;hang<3;hang++)
{
if ( cunchujisuanguocheng[hang][lie-1]== cunchufangwenyemian[lie])
{
shifoumingzhong=hang+1;/*如果相同,则是否命中为命中的位置*/
再假定进程分配到4、5个物理块,重复本实验。
(4)假定进程分配到3个物理块,使用程序的动态页面序列生成算法,生成一个页面序列,将此序列存入磁盘文件。再从磁盘文件读入该序列,用程序分别计算三种算法下的缺页中断次数、缺页中断率和缺页调度次数、缺页置换率。
湖南科技学院计算机与信息科学系
实验报告
五、实验程序数据结构
}
}
cunchushifoumingzhong[lie]=shifoumingzhong;/*存储命中位置*/
}
if (lie!=0)
{
if ((shifoumingzhong!=0))/*是否命中*/
{/*如果命中,则不变*/
for(hang=0;hang<3;hang++)
{
cunchujisuanguocheng[hang][lie]=cunchujisuanguocheng[hang][lie-1];/*将上一列复制过来*/
int lie,hang;/*循环变量列,行*/
int shifoumingzhong;/*在前一列的位置,没有则为0;*/
int wenmenyemiangeshu=4;/*访问页面的个数*/
/*第一步,初始化*/
/*输入访问的页面,存到存储访问的页面的数组中*/
for (lie=0;lie<4;lie++)
{
printf("%d ",cunchujisuanguocheng[hang][lie]);
}
printf("\n");
} /*输出是否命中*/
for (lie=0;lie<4;lie++)
{
printf("%d ",cunchushifoumingzhong[lie]);
}
}
三、实验环境
每人一台电脑,在下实现。
四、实验内容
(1)设计程序实现以上三种页面调度算法,要求:
①.可以选择页面调度算法类型;
②.可以为进程设置分到物理页的数目,设置进程的页面引用情况,可以从键盘输入页面序列,也可从文件中读取;
③.随时计算当前的页面调度次数的缺页中断率;
④.使用敲键盘或响应WM-TIMER的形式模仿时间的流逝;
再假定进程分配到4、5个物理块,重复本实验。
(3)假定进程分配到3个物理块,对于下面的页面引用序列:
4-3-2-1-4-3-5-4-3-2-1-5-0-7-3-8-9-0-2-1-4-7-3-9
请分别用先进先出调度算法、最近最少用调度算法,最近最不常用调度算法计算缺页中断次数,缺页中断率和缺页调度次数、缺页置换率。
}
/*初始化是否没有命中的数组*/
for (lie=0;lie<4;lie++)
{ cunchushifoumingzhong[lie]=0; }
/*第二步,计算*/
/*察看是否命中*/
for (wenmenyemiangeshu=0;wenmenyemiangeshu<4;wenmenyemiangeshu++)
八、教师评语
教师签字:
年月日
附:实验源代码
#include"stdio.h"
main ()
{int cunchufangwenyemian[4];/*存储访问的页面*/
int cunchujisuanguocheng[3][4];/*存储计算过程;*/
int cunchushifoumingzhong[4];/*存储是否被命中*/
int wenmenyemiangeshu=4;/*访问页面的个数*/
六、实验输入数据
34 35 36 37
七、实验输出数据与分析总结
总结:
本实验使用页面调度算法时作如下假设,进程在创建时由操作系统为之分配一个固定数目物理页,执行过程中物理页的数目和位置不会改变。也即进程进行页面调度时只能在分到的几个物理页中进行。
⑤.以直观的的形式将程序的执行情况显示在计算机屏幕上;
⑥.存盘及读盘功能,可以随时将数据存入磁盘文件,供以后重复实验时使用。
(2)假定进程分配到3个物理块,对于下面的页面引用序列:
7-0-1-2-0-3-0-4-2-3-0-3-2-1-2-0-1-7-0-1
请分别用先进和先出调度算法,最近最少用调度算法,最近最不常用调度算法计算缺页中断次数,缺页中断率和缺页调度次数、缺页置换率。
相关主题