页面存储管理------FIFO页面淘汰算法

本文通过一个简单的C++程序演示了页面置换算法的工作原理。程序首先请求用户输入内存中页面的数量及页面访问序列,然后模拟页面置换过程,并计算出缺页次数及缺页率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
using namespace std;
int pagenum=0;             ///内存的页面数
int total=0;               ///要访问的叶面总数
int lacknumber=0;              ///缺页的总数
void main()
{
 int array[1][20];             //0代表没有内容
 for(int y=0;y<2;y++)
 for(int x=0;x<20;x++)
 {array[y][x]=-1;}
 int seque[20]={0};
 cout<<"请输入内存的页面数:";
    cin>>pagenum;
 cout<<"请输入页面的访问顺序(输入-1结束):";
 for(int i=0;i<20;i++)
 {
  int num;
  cin>>num;
  if(num!=-1)
  {
   seque[i]=num;
            total++;
  }
  else
  {seque[i]=num;break;}
 }
 cout<<"总的页面数为"<<total<<endl;           ///总的页面数
    int j=0;
    for(i=0;i<pagenum;i++)     //刚开始置换前pagenum个空页面
 {
     if(i<pagenum)
   {
  array[0][i]=seque[i];
  cout<<"页面"<<seque[i]<<"进入内存"<<endl;
  cout<<"缺页  此时页面内容为";
  for(int j=0;j<pagenum;j++)
  {cout<<array[0][j]<<" ";}
  cout<<"(-1代表没有内容)"<<endl;
   }
    cout<<endl;
 }

int kk=0;
for(i=pagenum;i<total;i++)
{
 int flag=0;
 for(int k=0;k<pagenum;k++)
 {
   if(array[0][k]==seque[i])
   {flag=1;break;}
 } 
     cout<<endl;
  if(flag==1)
  {   cout<<"页面"<<seque[i]<<"进入内存"<<endl;
    cout<<"此时页面内容为";
  for(int j=0;j<pagenum;j++)
  {cout<<array[0][j]<<" ";}
  }
     cout<<endl;
  if(flag==0)
  {
  int tem=array[0][kk];
        array[0][kk]=seque[i];
  cout<<"页面"<<seque[i]<<"进入内存"<<endl;
        cout<<"缺页  页面"<<tem<<"被替换"<<endl;
    cout<<"此时页面内容为";
     for(int j=0;j<pagenum;j++)
  {cout<<array[0][j]<<" ";}
  cout<<endl;
  kk++;
  lacknumber++;               //缺页数
  if(kk==pagenum)
  {kk=0;}
  }
}
        lacknumber=pagenum+lacknumber;
 
  cout<<"缺页率="<<lacknumber<<"/"<<total<<"="<<float(lacknumber)/float(total)<<endl;
}
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值