在多种页面置换算法中, 先进先出是相对简单的算法, 并且效果也不是最好的. 该算法的思路就是当物理内存不够时, 将最先请求到内存中的数据置换出去以空出位置置换入新的数据. 先进先出置换算法会出现belady异常
什么是belady异常: 采用FIFO算法时,如果对—个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多但缺页率反而提高的异常现象。Belady现象可形式化地描述为:一个进程户要访问M个页,OS分配舻个内存页面给进程P;对一个访问序列S,发生缺页次数为PE(占,N)。当N增大时,PE(S,N)时而增大时而减小。Belady现象的原因是FIFO算法的置换特征与进程访问内存的动态特征是矛盾的,即被置换的页面并不是进程不会访问的。
先进先出的算法实现:
#include <iostream>
#include <vector>
using namespace std;
int find(vector<int> mem, int reqseq)
{