LRU置换算法
- LRU 缓存淘汰算法就是一种常用策略。LRU 的全称是 Least Recently Used,也就是说我们认为最近使用过的数据应该是是「有用的」,很久都没用过的数据应该是无用的,内存满了就优先删那些很久没用过的数据。
实验要求
1. 实验描述:
假设系统中有1个进程,其大小总共有n=10页,而操作系统仅分配了m=3个页面的物理内存空间供其运行。用随机函数随机产生包含有k=20个页面的访问序列。
2. 实验输出:
(1)每处理页面访问序列中的1个页面请求时,操作系统分配给该进程的m=3个页面空间的被占用情况;
(2)最后输出命中次数,缺页次数,以及缺页率。
3. 实验要求:
(1)根据参数n=10,m=3, k=20,编程实现LRU页面置换算法,计算缺页率。
简易分析
根据题意,需要实现的算法在整体上分为Init、LRU、Print
-
Init:初始化相关数据结构。
-
LRU:即实现算法的主体部分。
-
Print:穿插在上面几个部分之中,根据具体需要设计即可。
Init部分
由于实现起来相对简单,故不做对具体实现的讲解。
void Init(int Seq[], int PageAcc[], int PageArr[]);
LRU部分
这次实验较为简单,不用划分子函数也可快速的进行编程解题。
void LRU(int Seq[], int PageAcc[], int PageArr[]);
Print部分
由于实现起来相对简单,故不做对具体实现的讲解。
void Print_Seq(int Seq[]);
void Print_State(int idx, int PageArr[], bool hit);
void Print_Result(int Hit, int Miss);
整体代码实现
代码量较小,有问题看注释。
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#define SequenceLen 20
#define MaxNumPages 10
#define NumAllocatedPages 3
void Init(int Seq[], int PageAcc[], int PageArr[]);
void LRU(int Seq[], int PageAcc[], int PageArr[]);
void Print_Seq(int Seq[]);
void Print_State(int idx, int PageArr[]

最低0.47元/天 解锁文章
1019

被折叠的 条评论
为什么被折叠?



