问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

LRU算法具体怎么算的,有没有例子

发布网友 发布时间:2022-04-29 07:08

我来回答

2个回答

热心网友 时间:2022-06-20 23:50

LRU算法参考例子如下:
include<iostream>
using namespace std;

int ans[1000];//存放原序列
int block[1000];//机器分给程序的内存块
int num[1000];//每个页面在内存中待的时间
int n; //页面流数
int m; //内存块数
int sum;//命中次数
//初始化函数
void Init()
{
cout<<"输入页面数"<<endl;
cin>>n;
cout<<"输入原页面流"<<endl;
for(int i=0;i<n;i++)
cin>>ans[i];
cout<<"输入分给程序的内存块数"<<endl;
cin>>m;
sum=0;
}

//扫描block中是否已存在该块
int saomiao(int k,int now)
{
int i;
for(i=0;i<k;i++)
{
if(block[i]==now)return i;
}
return -1;
}

//打印内存中的页面情况
void print(int k,int now)
{
cout<<"被调用的页面号 "<<now<<endl;
cout<<"内存中的页面号 ";
for(int i=0;i<k;i++)
cout<<block[i]<<" ";
cout<<"对应在内存的时间 ";
for(i=0;i<k;i++)
cout<<num[i]<<" ";
cout<<endl;
}

//LRU
void LRU()
{
int i,j,k,p;
k=0;//计算已用的内存块数
for(i=0;i<n;i++)
{
if(k<m)
{
p=saomiao(k,ans[i]);
if(p>=0)
{
sum++;
cout<<"命中"<<endl;
print(k,ans[i]);//打印内存中的页面情况
for(j=0;j<k;j++)
num[j]++;//修改各页在内存中待的时间
num[p]=1;
}
else
{
cout<<"未命中"<<endl;
print(k,ans[i]);//

block[k]=ans[i];
for(j=0;j<k;j++)
num[j]++;
num[k++]=1;
}
}
else
{
p=saomiao(m,ans[i]);
if(p>=0)
{
sum++;
cout<<"命中"<<endl;
print(m,ans[i]);//
for(j=0;j<m;j++)
num[j]++;
num[p]=1;
}
else
{
int max=-1;
int p1=0;
for(j=0;j<m;j++)//扫描找出时间最长的页面,用来替换
if(num[j]>max)
{
max=num[j];
p1=j;
}

cout<<"未命中"<<endl;
print(m,ans[i]);//
cout<<"将被替换的叶号和时间"<<block[p1]<<" "<<num[p1]<<endl<<endl;
block[p1]=ans[i];//替换
for(j=0;j<m;j++)//修改时间
num[j]++;
num[p1]=1;
}
}
}
}

int main()
{
Init();
LRU();
cout<<"命中次数 "<<sum<<endl;
cout<<"命中率 "<<(double)sum/(double)n*100<<"%"<<endl;
return 0;
}

热心网友 时间:2022-06-20 23:50

有例子 LRU(least recently used)最近最久未使用。
假设 序列为 4 3 4 2 3 1 4 2
物理块有3个 则
首轮 4调入内存 4
次轮 3调入内存 3 4
之后 4调入内存 4 3
之后 2调入内存 2 4 3
之后 3调入内存 3 2 4
之后 1调入内存 1 3 2(因为最近最久未使用的是4,从这里向前找最近最久未使用的)
之后 4调入内存 4 1 3(原理同上)
最后 2调入内存 2 4 1

过程就是这样的,楼主只要明白最近最久未使用这个道理,再回去参考书上的例子就明白是怎么算的啦!呵呵!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 LRU算法解释 C++实现LRU算法 帮忙看下我的关于页面置换算法中LRU算法和OPT的代码有什么问题,怎么结果总是比正确答案少4啊?源代码如下: lru的算法是什么? lru算法是什么? 华为运动健康更新后怎么不能和位移精灵使用刷步数了? 电信宽带光猫,我上192.168.1.1把自带WiFi功能被我关闭了。现在我怎么进入里面开启wifi啊? 电信宽带光猫,我上192.168.1.1把自带WiFi功能被我关闭了。现在我怎么进入里面开启wif_百度问一问 关于陕西君盛嘉汇艺术品收藏有限公司,能否简单的概括下? 艺术品基金的投资现状 中国新闻头条报业集团艺术品交易中心+概况 西安鸿泰艺术品收藏有限公司 创业计划书。 手机软件自带的广告怎么彻底关闭 siyb创业计划书手工艺品企业怎么写 开厂的简单计划书怎么写 12306订票助手不能定学生票吗 我在12306官网软件上可以选自己是*和学生,但是,去哪儿同程这些软件上只能选*,怎么办 只有有12306账号才可以买学生票吗?为什注册12306每次都是无法注册! 为什么我12306无法完善学生信息? lru算法是什么呢? lru页面置换算法是什么? 用java语言实现LRU算法和FIFO算法。急急急!!! 什么是lru置换算法 急求LRU页面淘汰算法流程图,代码如下: LRU页面淘汰算法 lru(least recent used)替换算法具体是什么内容? FIFO调度算法和LRU算法? 关于LRU算法的一题 网上购物优惠券在哪里找? 网购有没有能够领到优惠券的技巧吗? 1加x证书考试是免费的吗 固家现在有免费考的证书吗?都有什么类行 “convince”有哪些用法? 请问convince有哪些用法?比如说短语 师范类毕业可以考什么资格证书 免费师范生除了教师资格 convince是什么意思? persuade 与convince的区别 convince用法 persuade和convince 的区别