当前位置: 首页 > >

操作系统??FIFO算法解析与代码实现

发布时间:

FIFO算法



文章目录
FIFO算法概念一、解析二、代码实现



概念

FIFO(First Input First Output),即先进先出队列。可以类比 我们在饭堂排队打饭,先排到队伍的最后,等待前面的人一个个打完饭再轮到下一个。这就是一种先进先出机制,先排队的人先行打饭离开。



一、解析

先进先出(FIFO)页面置换算法
该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程调入内存,按先后顺序排成一个队列,并设置一个指针,称为替换指针,使他总能指向最老的页面。但该算法与进程与实际运行的规律不相适应,效率最差。


二、代码实现

用一个结构体pb去存储引用的页面,m是代表物理模块的大小
然后在while循环里根据总的页面需求数,通过累加索性index进行逐一检查并替换
利用p进行取余来替换去对应的先进先出的原则。


int fifo(PBlock* pb, int m)
{
int lps = 0; /*缺页次数*/
double lpp; /*缺页率*/
int p = 0; /*替换指针*/
int index = 0; /*页面号索引*/
while (index < PAGES) {
if (!in_mem(page[index], pb, M)) { //如果该页面不在物理块中
pb[p].pnum = page[index]; /*将该页面放入物理块中*/
p = (p + 1) % M; /*替换指针移动*/
lps++; /*却也次数加 1*/
for (int i = 0; i < M; i++) {
rel[i][index] = pb[i].pnum;
}
}
index++;
}
printf("FIFO算法所得缺页次数为 %d
", lps);
lpp = (double)lps / PAGES;
printf("FIFO算法缺页率为 %0.4lf
", lpp);
printf("页面号序列为:
");
printArr1(page, PAGES);
printf("结果数列为:
");
printRelArr(rel);
return 0;
}



友情链接: