当前位置:文档之家› 实验3 页式存储管理的缺页中断及淘汰算法模拟

实验3 页式存储管理的缺页中断及淘汰算法模拟

实验三请求页式管理的地址变换及页面淘汰算法模拟
一、实验目的
1. 通过实验,掌握请求页式存储管理的地址变换过程
2. 通过实验,掌握请求页式存储管理的先进先出页面淘汰算法
二、实验内容
1.编程模拟实现页式管理的动态地址变换过程
2.编程模拟实现当发现要访问的页不再主存时,发生缺页中断,并调用先进先出页面淘汰算法
三、实验步骤
1. 定义页式管理中的页面长度,页表长度,页表结构。

2.定义实现先进先出页面淘汰算法的函数。

(注意要定义一个全局变量用于记录当前最早到达的页号)
3.定义完成动态地址变换的函数。

3. 在主函数先输入一个作业的页表信息(必须要有在主存的页),再通过循环的方式不断输入一个数字表示逻辑地址,根据刚才创建的作业的页表信息,如果该逻辑地址所在的页已经在主存则直接计算该逻辑地址所对应的物理地址,若该逻辑地址所在的页不在主存则调用先进先出淘汰算法,淘汰一页,调入所要的页,然后再计算该逻辑地址所对应的物理地址。

循环结束,程序退出。

四、实现提示
1、#define n 100 /*假定的页面长度*/
#define length 10 /*假定的页表长度*/
struct
{
int lnumber; //逻辑页号
int flag; //该页是否在主存,可用“1”“0”表示*/
int wnumber; //物理页号
int next; //用于记录该页后下一个到达的页号
}page[length]; /*页表结构定义*/
2、先进先出页面淘汰算法
int first=0;
void fcfs(int in_number) //in_number表示要求调入的逻辑页号{
printf("发生缺页中断,淘汰第%d页\n",page[first].lnumber);
page[first].flag=0; /* 所淘汰页的存在标志改为0*/
page[in_number].wnumber=page[first].wnumber;
page[in_number].flag=1; /* 所调入页的存在标志改为1*/
printf("从磁盘调入逻辑第%d页成功!其对应的物理页面号为:%d\n",in_number,page[in_number].wnumber);
first= page[first].next;
}
3、动态地址变换函数
void compute_address(int laddress)
//laddress表示要变换的逻辑地址,在其中调用fcfs函数
{ }。

相关主题