使用C语言怎么编写一个页面置换算法
创始人
2024-12-27 13:41:38
0次

操作系统实验

页面置换算法(FIFO、LRU、OPT)

概念:

1.最佳置换算法(OPT)(理想置换算法):从主存中移出永远不再需要的页面;如无这样的页面存在,则选择最长时间不需要访问的页面。于所选择的被淘汰页面将是以后永不使用的,或者是在最长时间内不再被访问的页面,这样可以保证获得最低的缺页率。
2.先进先出置换算法(FIFO):是最简单的页面置换算法。这种算法的基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰,即先进入主存的页面先淘汰。其理由是:最早调入主存的页面不再被使用的可能性最大。
3.最近最久未使用(LRU)算法:这种算法的基本思想是:利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。它认为过去一段时间里不曾被访问过的页面,在最近的将来可能也不会再被访问。所以,这种算法的实质是:当需要淘汰一个页面时,总是选择在最近一段时间内最久不用的页面予以淘汰。

题目:

编写一个程序,实现本章所述的FIFO、LRU和最优页面置换算法。首先,生成一个随机的页面引用串,其中页码范围为0-9.将这个随机页面引用串应用到每个算法,并记录每个算法引起的缺页错误的数量。实现置换算法,一遍页面帧的数量可以从1~7。

#include 
#include 
#include 

int numbers[20]={7,0,1,2,
     0,3,0,4,
     2,3,0,3,
     2,1,2,0,
     1,7,0,1};//本地数据,与课本一致,方便测试
int nums=0;//输入栈的个数,为了方便使用,
int stack[20][7]={10};

void begin();
void randomnum();//用于产生随机数
void init();//初始化
void FIFO();//FIFO算法
void LRU();//LRU算法
void OPT();//最优页面置换算法(OPT)
void print();//输出

int main() {
 begin();
 FIFO();
 LRU();
 OPT();
 return 0;
}
void begin()//开始菜单界面
{
 int i,j,k;
 printf("请输入页面帧的数量(1-7):");
 scanf("%d",&nums);
 for(k=0;;k++)
 {
  printf("是否使用随机数产生输入串(0:是,1:否)");
  scanf("%d",&j);
  if(j==0)
  {
   randomnum();
   break;
  }
  else if(j==1)
  {
   break;
  }
  else
  {
   printf("请输入正确的选择!\n");
  }
 }

 printf("页面引用串为:\n");
 for(i=0;i<20;i++)
 {
  printf("%d ",numbers[i]);
 }
 printf("\n");
 init();
}
void randomnum()//如果需要使用随机数生成输入串,调用该函数
{
 srand(time(0));//设置时间种子
 for(int i = 0; i < 20; i++) {
  numbers[i] = rand() % 10;//生成区间0`9的随机页面引用串
 }
}
void init()//用于每次初始化页面栈中内容,同时方便下面输出的处理
{
 int i,j;
 for(i=0;i<20;i++)
  for(j=0;jmax)
    {
     max=seq[q];
     k=q;
    }
   }
   stack[i][k]=numbers[i];
   sum++;
  }
  else
  {
   //页面栈中有需要插入的数字,无需变化,替换的优先级也不需要变化
  }
 }
 printf("\n");
 printf("OPT算法:\n");
 print();
 printf("缺页错误数目为:%d\n",sum);
}

运行结果截图:
使用C语言怎么编写一个页面置换算法
使用C语言怎么编写一个页面置换算法
使用C语言怎么编写一个页面置换算法

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...