页式虚拟存储管理程序模拟
一、 实验题目:先进先出页面置换算法
三、 实验内容:
这个算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰.
三、程序设计及实现过程
先产生一串随机数放在数组中,然后输出这个数组,表示页面号引用串.然后进行计算并输出结果.这里我使用了一个数组来存放当前内存的页面号,当产生新的页面申请时,判断数组中有与之相同的数吗,若有则直接输出这个数组,若没有则舍去最下面的数让上面的数依次放在下面,把新产生的数放在最上面.然后在数据下面输出一个*号,代表发生了缺页中断.
四、实验结果及分析
结果: 输出发生几次缺页中断和页面置换.
分析: 利用一个计数变量,只要发生中断就加1,最后输出就行了.
#include<iostream.h>
void main()
{
cout<<"****************************************"<<endl;
cout<<" FIFO算法置换 "<<endl;
cout<<"****************************************"<<endl;
int n,m,k;
int i=0,j=0,count=0;
int a[32],b[32];
cout<<"请输入内存容量m:";
cin>>m;
cout<<"请输入页面次序:"<<endl;
for(i=0;i<10;i++)
{
cin>>n;
a[i]=n;
}
for(j=0;j<m;j++) //初始化b[j];使等于-1,表示开始时内存中无页面.
{
b[j]=-1;
}
i=0;
j=0;
while(i<10)
{
for(k=0;k<m;k++)
{
if(b[k]==a[i])
{
cout<<"内存中有这个页面,直接访问."<<endl;
break;
}
} // 判断内存中是否有该页面.
if(k==m)
{
if(b[m-1]<0)
{
b[j]=a[i];
cout<<b[j]<<"页面进入内存 , ";
count++;
cout<<"产生"<<count<<"次缺页"<<endl;
j++;
j=j%m;
}
else
{
count++;
cout<<b[j]<<"被置换出去,产生"<<count<<"次缺页" <<endl;
b[j]=a[i];
j++;
j=j%m;
}
}
i++;
}
}