C++模拟LRU页面置换算法
更新时间:2023-08-16 07:36:02 阅读量: 教学研究 文档下载
- 页面置换算法模拟推荐度:
- 相关推荐
实验五 C++模拟LRU页面置换算法
一、实验目的:用c++模拟LRU页面置换算法
二、实验内容:随机一访问串和驻留集的大小,通过模拟程序显示淘汰的页号并统计命中率。示例:
输入访问串:7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1
驻留集大小:3
算法的实现:由于LRU算法淘汰的是上次使用距离t时刻最远的页,故需记录这个距离。
计数器:可使用计数器,给每一个页帧增设一个计数器。每访问一页,就把对应页帧的计数器清零,其余页帧的计数器加1.因此,计数器值为最大的页即上次访问距当前最远的页。
7 0 1 2 0 3 0 4 2 3 0 3 2 0/7 1/7 2/7 0/2 1/2 2/2 3/2 0/4 1/4 2/4 0/0 1/0 2/0 0/0 1/0 2/0 0/0 1/0 0/0 1/0 2/0 0/3 1/3 0/31/3 0/1 1/1 2/1 0/3 1/3 2/3 0/2 1/2 2/2 3/2 0/2 缺 缺 缺 缺 命 缺 命 缺 缺 缺 缺 命 命
红色表示:每个页帧对应的计数器值
通过模拟程序输出淘汰的页号分别为:7 1 2 3 0 4 命中率为:4/13
四、代码:
#include <iostream>
using namespace std;
struct node
{
char data;
int time;
};
void init(char str[],int n,struct node zhuliuji[],int m) {
for(int i = 0;i<m;i++)
{
zhuliuji[i].data = '\0';
zhuliuji[i].time = 0;
}
for(int i =0;i<n;i++)
{
cin>>str[i];
}
}
void addtime(struct node zhuliuji[],int m) {
for(int i=0;i<m;i++)
{
zhuliuji[i].time++;
}
}
char addzhuliuji(struct node zhuliuji[],int m,char c) {
char ch = '\0';
int max = zhuliuji[0].time;
int temp = 0; //标记时间最长的驻留级 for(int i=0;i<m;i++)
{
if(max<zhuliuji[i].time&&zhuliuji[i].data!=c) {
max = zhuliuji[i].time;
temp = i;
}
if(zhuliuji[i].data==c)
{
zhuliuji[i].time =0;
// cout<<"zhuliuji存在"<<c<<endl; return ch;
}
}
ch = zhuliuji[temp].data;
zhuliuji[temp].data = c;
zhuliuji[temp].time = 0;
return ch;
}
void LRU(char str[],int n,struct node zhuliuji[],int m) {
int jtemp=0;
for(int i =0;i<n;i++)
{
if(i<m)
{
zhuliuji[jtemp].data = str[i]; addtime(zhuliuji,m);
zhuliuji[jtemp].time = 0;
jtemp ++;
}else
{
addtime(zhuliuji,m);
char ch = addzhuliuji(zhuliuji,m,str[i]); // if(ch!='\0')
//cout<<"淘汰的页数为:"<<ch<<endl; }
cout<<"驻留级为:";
for(int j=0;j<m;j++)
{
cout<<zhuliuji[j].data<<'\t'; }
cout<<endl;
}
cin>>jtemp; //显示结果,以便观察 }
int main()
{
struct node zhuliuji[20];
char str[20];
int n,m;
cout<<"请输入访问串的大小:"<<endl; cin>>n;
cout<<"请输入驻留级大小:"<<endl; cin>>m;
cout<<"请输入访问串的内容:"<<endl; init(str,n,zhuliuji,m);
LRU(str,n,zhuliuji,m);
return 0;
}
五.运行结果
正在阅读:
C++模拟LRU页面置换算法08-16
浅谈计量物资管理06-12
家乡的梨园作文500字06-19
江西省上饶县中学高三政治下学期优生考前检测试题(1)05-06
一级泵站课程设计01-15
乡镇2019年度惩防体系建设工作总结02-26
马克笔各色系03-16
柴油发电机安全操作规程(康明斯)07-05
- 公务员上岸同学告诉你,怎样走出面试中常见的十大误区
- 作表率,我们怎么办(办公室主任)
- 乘务员安全责任书
- 增员面试流程
- 河南省焦作市规模以上租赁和商务服务业企业应付职工薪酬数据洞察报告2019版
- 最新4社区工作者面试题
- 个人简历表
- 男教工体检必检项目
- 河南省兰考县规模以上租赁和商务服务业企业应付职工薪酬数据洞察报告2019版
- 兼职译员测试稿
- 河南省开封市规模以上租赁和商务服务业企业应付职工薪酬数据洞察报告2019版
- 永州职业技术学院校园总体规划-永州职业学院
- 最新5、培训科长笔试题(答案)
- 2019雅商酒店境外人员登记培训稀有资料,不可错过
- 小学教师求职简历范文
- 红酒知识与礼仪
- 春节给领导拜年的短信拜年词
- 2019年上半年中小学教师资格证结构化面试真题1
- 20XX年县干部培训工作目标
- 硬笔试听课
- C++
- 置换
- 算法
- 模拟
- 页面
- LRU