【随笔系列】C语言实现LRU置换算法

LRU置换算法

  1. 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页面置换算法,计算缺页率。

简易分析

根据题意,需要实现的算法在整体上分为InitLRUPrint

  1. Init:初始化相关数据结构。

  2. LRU:即实现算法的主体部分。

  3. 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[]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值