2.LRU算法实现 [C++]
LRU算法实现原理:
最近最久未使用页面置换算法(LRU)
当需要淘汰某一页时,选择在最近一段时间里最久没有被使用过的页淘汰。
其基本原理为:如果某一个页面被访问了,它很可能还要被访问;相反,如果它长时间不被访问,再最近未来是不大可能被访问的。LRU采用页号栈的实现方法。最近访问的页放在栈顶,较早访问的页往栈底移动。总是先淘汰处于栈底的页。
#include <iostream>#define MAXSIZE 20
using namespace stdvoid main()
{int input=0; //用于输入作业号int worknum=0; //输入的作业个数int storesize=0; //系统分配的存储区块数int interrupt=0; //缺页中断次数int stack[MAXSIZE]; //栈,LRU算法的主要数据结构int workstep[MAXSIZE]; //记录作业走向/*初始化*/for(int i=0;i<MAXSIZE;i++){stack[i]=0;workstep[i]=0;}cout<<"请输入存储区块数:";cin>>storesize;cout<<"请输入作业的页面走向(输入0结束):\n";for(int j=0;j<MAXSIZE;j++){cout<<"页面号 "<<j+1<<” :”;cin>>input; workstep[j]=input;if(input==0){cout<<"输入结束!\n";break;}worknum++;}if(workstep[0]==0){cout<<"未输入任何作业,系统将退出!\n";return;}cout<<"置换情况如下:\n";for(int k=0;k<worknum;k++){/*在栈中找相等的页号或空位置*/for(int l=0;l<storesize;l++){/*是否有相等的页号*/if(stack[l]==workstep[k]){cout<<"内存中有"<<workstep[k]<<"号页面,无须中断!\n"; goto step1;}/*找栈中是否有空位置*/if(stack[l]==0){stack[l]=workstep[k];cout<<"发生中断,但内存中有空闲区,"<<workstep[k]<<"号页面直接调入!\n";interrupt++;goto step1;}}/*上述情况都不成立则调出栈顶,将调入页面插入栈顶*/cout<<"发生中断,将"<<stack[0]<<"号页面调出,"<<workstep[k]<<"号装入!\n";interrupt++;/*新掉入的页面放栈顶*/
step1: for(int m=0;m<storesize;m++){stack[m]=stack[m+1];}stack[storesize-1]=workstep[k];}cout<<"作业"<<worknum<<"个,"<<"中断"<<interrupt<<"次,"<<"缺页率:"<<float(interrupt)/float(worknum)*100<<"%\n";
}
2.LRU算法实现 [C++]相关推荐
- LRU算法 -- 链表 完整实现
LRU算法(Least Recently Used) 算是我们经常遇到的一种淘汰算法,其中内存管理模块进行内存页回收时有用到,针对不经常使用的内存页,LRU淘汰策略能够将该内存页回收给操作系统. 属于 ...
- 漫画:什么是LRU算法?
本期封面作者:A17 ----- 两个月前 ----- 用户信息当然是存在数据库里.但是由于我们对用户系统的性能要求比较高,显然不能每一次请求都去查询数据库. 所以,小灰在内存中创建了一个哈希表作 ...
- 【腾讯三面】你能现场写一下LRU算法吗?
" 金三银四,又到了换工作的黄金期.各位小伙伴们都准备好了吗? " 这句话大家是不是最近已经要看吐了呢? 每当这个时候,就证明招聘旺季又来啦~ 春招.校招.社招-- 那你真的准备好 ...
- LRU算法确定最后使用时间的顺序
LRU算法是经常采用的页面置换算法,并被认为是相当好的,但是存在如何实现它的问题.LRU算法需要实际硬件的支持.其问题是怎么确定最后使用时间的顺序,对此有两种可行的办法: 1.计数器. 2.栈.
- java 最少使用(lru)置换算法_「面试」LRU了解么?看看LinkedHashMap如何实现LRU算法...
以下内容均是本人原创,希望你看完之后能有更多更深入的了解,欢迎关注➕ 问题:使用Java完成一个简单的LRU算法 什么是LRU算法 LRU(Least Recently Used),也就是最近最少使用 ...
- Android图片缓存之Lru算法
前言: 上篇我们总结了Bitmap的处理,同时对比了各种处理的效率以及对内存占用大小.我们得知一个应用如果使用大量图片就会导致OOM(out of memory),那该如何处理才能近可能的降低oom发 ...
- 使用java.util.LinkedList模拟实现内存页面置换算法--LRU算法
一,LRU算法介绍 LRU是内存分配中"离散分配方式"之分页存储管理方式中用到的一个算法.每个进程都有自己的页表,进程只将自己的一部分页面加载到内存的物理块中,当进程在运行过程中, ...
- 操作系统之存储管理——FIFO算法和LRU算法
操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...
- 编写程序来模拟计算机LRU算法,操作系统-页式虚拟存储管理程序模拟.doc
实 验3: 页式虚拟存储管理程序模拟 实验目的: 编写程序来模拟计算机的两种调度方式: (1)先进先出算法 (2)最近最少使用算法 程序设计 FIFO() FIFO() LRU() Msize加1 S ...
最新文章
- 面试官:啥是集群策略啊?
- AI洞观 | 戴上红帽 看IBM冲杀云计算市场
- java 拖拽生成_JAVA UI 拖拽功能
- 网页上符号显示成方框_如何在word、PPT、Excel以及PDF中添加带√的方框
- 物理化学 化学 动力学(下)
- linux dns chroot,系统运维|在 CentOS7.0 上搭建 Chroot 的 Bind DNS 服务器
- 编写数据访问代码测试–单元测试是浪费
- 漫步最优化四十五——矩阵S的生成
- Wikioi 2822爱在心中(强连通缩点+dfs)
- Sqlserver表数据误删除后的恢复
- 用html5绘制星空,用HTML5绘制的一个星空特效图
- 台式电脑计算机图标打不开怎么办,电脑计算机图标打不开怎么办
- 并发编程学习之线程8锁
- Java程序员从笨鸟到菜鸟(三)算法笔试题
- 计算电磁学中的矩量法及其求解过程介绍
- DTOJ5057 英雄联盟
- 参考文献的序号如何设置
- 国内wifi用不了谷歌_如何使用Google Wifi阻止不适当的网站
- 顺风车这么难搞,滴滴为何从不放弃?
- Error: Duplicate resources
热门文章
- oracle rman 跨版本恢复 11.2.0.3- 11.2.0.4
- winform 安装部署
- 【推荐】如何删除windows服务
- 信噪比与误码率的计算
- 告诉你Hadoop是什么
- Python-图像的手绘效果
- Android Gradle查询器
- c++ 多key_详解Zabbix自定义Key监控Rabbitmq(监控特定队列)
- c++ fork 进程时 共享内存_因为没答好进程间通信,面试挂了...
- ubuntu9.10硬盘安装记录一