最近最久未使用页面置换算法即为:淘汰页框中最长时间没有使用的页面。
本算法是我在上一个FIFO算法上稍加修改做出来的,很大一部分和上一个算法类似。
#include <iostream>
#include <iomanip>
#include <vector>
using namespace std;
// lru 函数声明
// 输入参数描述:
// pageframeNum:操作系统分配给某进程的页框数目;
// pageCallSequence:页面调用序列,序列中的每一项是被调用页面的页面号。
void lru(int pageframeNum, vector<int> &pageCallSequence);
int main()
{
int i, pageframeNum, n;
cin >> pageframeNum; // 输入分配给某进程的页框数目(教材上称“页框”为:物理块)
cin >> n; // 输入该进程的页面调用序列的长度
vector<int> pageCallSequence(n); // 定义页面调用序列,序列中的每一项是被调用页面的页面号
for (i = 0; i < n; i++) // 输入 n 个页面号,构建页面调用序列
{
cin >> pageCallSequence[i];
}
lru(pageframeNum, pageCallSequence); // 模拟最近最久未使用页面置换算法
return 0;
}
//3、在 fifo 函数中,实现:每次访问页面时,依页框编号的次序输出页框中的页面编号;计算并输出缺页率。
//4、输入输出格式见样例输入和样例输出。在样例输出中:除最后一行之外,每一行是依页