1、首先建立本次实验的流程图:

1、 然后建立储存相应页面的物理块:
struct Physicalblock{
int name;
int nomber;//优先级1,2,3
}pb[10];
其中name表示页面名,nomber在lru算法中起到标记时间的作用
2、 设置一个指针,在fifo算法中指向最老进程
Physicalblock *p=pb;//指向最老进程的指针
3、 因为本程序中需要从文件中进行输出,所以本次实验在源文件夹中设置“data.txt”文件,储存需要用到的页面
执行程序如下:
ifstream openfile("data.txt");
4、 在程序开始时对进程块进行初始化:
ifstream openfile2("data.txt");
while(n1--)
{
if(openfile2.eof())
{
cout<<"引用串已经分配完毕"<<endl;
break;
}
openfile2>>num;
pb[t].nomber=0;
pb[t++].name=num;
}
openfile2.close();
5、 调用fifo算法,在调用时,要先比对是否已经存在相同页面
如果有那么要标记一下,如果没有就将最老的替换掉,并且输出,输出之后将指向最老进程的指针后移
void fifo(int n1)//先进先出置换算法
{
cout<<"使用fifo的置换方法结果为:"<<endl<<"淘汰的为:";
int num,t=1,flag=0,total=0;
ifstream openfile("data.txt");
while(!openfile.eof())
{
flag=0;
openfile>>num;
t++;
if(t>=n1)
{
for(int i=0;i<n;i++)
{
if(num==pb[i].name)
{
flag=1;
}
}
if(flag==0)
{
total++;
cout<<p->name<<" ";
p->name=num;
p++;
if(total%n1==0)
{
p=pb;
}
}
}
}
openfile.close();
cout<<endl

本文深入探讨了FIFO和LRU两种页面置换算法的实现过程,通过对比实验数据,揭示了不同算法在缺页率上的表现差异。FIFO算法因频繁替换页面导致较高的缺页率,而LRU算法通过考虑页面的最近使用情况,实现了更高效的页面管理。
&spm=1001.2101.3001.5002&articleId=103435024&d=1&t=3&u=53c9e1406eec40998adfbaa75bffea3b)
1万+

被折叠的 条评论
为什么被折叠?



