FIFO算法
概念
FIFO(First Input First Output),即先进先出队列。可以类比 我们在饭堂排队打饭,先排到队伍的最后,等待前面的人一个个打完饭再轮到下一个。这就是一种先进先出机制,先排队的人先行打饭离开。
一、解析
先进先出(FIFO)页面置换算法
该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程调入内存,按先后顺序排成一个队列,并设置一个指针,称为替换指针,使他总能指向最老的页面。但该算法与进程与实际运行的规律不相适应,效率最差。
二、代码实现
用一个结构体pb去存储引用的页面,m是代表物理模块的大小
然后在while循环里根据总的页面需求数,通过累加索性index进行逐一检查并替换
利用p进行取余来替换去对应的先进先出的原则。
#include <stdio.h>
#define PAGES 12 /*页面引用页数*/
#define M 3 /*当前分配给改作业的物理块数*/
//#define M 4
/*页面引用串*/
int page[PAGES] = {
4,3,2,1,4,3,5,4,3,2,1,5};
int rel[M][PAGES]; /*存储结果数组*/
/*内存物理块结构体*/
typedef struct {
int pnum; /*该块中所存的页面号*/
int tm ; /*从最近一次调入所经历的时间*/
}PBlock;
/*初始化物理块数组*/
void init(