LRU算法之我见

news2024/11/20 6:28:22

文章目录

  • 一、LRU算法是什么?
  • 二、使用原理
  • 三、代码实现
  • 总结


一、LRU算法是什么?

LRU算法又称最近最少使用算法,它是是大部分操作系统为最大化页面命中率而广泛采用的一种页面置换算法。是一种缓存淘汰策略,根据使用频率来淘汰无用信息,使有用信息进行长时间的保留。

二、使用原理

LRU算法须有两类硬件之一的支持:寄存器或栈。
具体流程(个人理解):
假如我们有这么一个寄存器或栈,头是很久没有访问过的数据,尾是经常访问的数据。在这里插入图片描述我们进行一次访问2的操作,LRU算法会使刚刚访问的元素(也就是2)放到尾部,而后面的元素依次前移。
在这里插入图片描述
如果是添加,则会将首元素(也就是1)删除,其余元素依次前移,新元素添加到尾部。
在这里插入图片描述

三、代码实现

此处是我做CSAPP的CacheLab中的伪代码

   /*没有空位,使用LRU算法进行替换*/
    eviction_count++;
    int evictIndex = 0;
    int maxTime = 0;

    for (int i = 0; i < E; i++) {
        if (cacheSet[i].time > maxTime) {
            maxTime = cacheSet[i].time;
            evictIndex = i;
        }
    }
    cacheSet[evictIndex].tag = tagIndex;
    cacheSet[evictIndex].time = 0;

总结

这就是我大概的理解,有点像我平时摞书,最近常看的书放到最顶上,不长看的书就慢慢放到底下了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1000882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华清远见第六课程day4作业

仿照string类&#xff0c;完成myString 类 #include <iostream> #include <cstring>using namespace std;class myString{ private:char *str;int size; public:myString():size(10){str new char[size];strcpy(str,"");}myString(const char*s){size …

mysql leetcode打题记录

文章目录 完成度基本语法高级语法连接日期 函数编写函数聚合函数 因为上过的数据库课实在太水了&#xff0c;所以打算先在菜鸟教程/CSDN/leetcode先学一下基本语法&#xff0c;然后去做Stanford数据库原理的课程CS145。 小目标&#xff1a;把leetcode上不用钱的mysql的题先做一…

RabbitMQ死信队列与延迟队列

死信队列 死信队列的定义 死信队列&#xff08;Dead Letter Queue&#xff09;&#xff1a; 死信队列是一种特殊的队列&#xff0c;用于存放不能被消费的消息。当消息满足某些条件时&#xff0c;比如消息过期、消息被拒绝消费或消息达到最大重试次数等&#xff0c;RabbitMQ 会…

实现数组去重的七种方法

实现数组去重的 7 种方式 1. 方法一&#xff1a;利用两层循环数组的splice方法 通过两层循环对数组元素进行逐一比较&#xff0c;然后通过splice方法来删除重复的元素。此方法对NaN是无法进行去重的&#xff0c;因为进行比较时NaN ! NaN。 let arr [1, 2, 2, abc, abc, true,…

Mac系统 AndroidStudio Missing essential plugin:org.jetbrains.android报错

打开Android Studio,提示 Missing essential plugin:org.jetbrains.android错误&#xff0c;产生的原因是Kotlin被禁用。 解决的方法是删除disabled_plugins.txt&#xff0c;Mac OS对应的路径为&#xff1a; /Users/xzh/Library/Application Support/Google/AndroidStudio202…

C#中async/await的线程ID变化情况

一、简单的起步 Console.WriteLine($"主线程开始ID&#xff1a;{Thread.CurrentThread.ManagedThreadId}");//aawait Task.Delay(100);//cConsole.WriteLine($"主线程结束ID&#xff1a;{Environment.CurrentManagedThreadId}");//b 结果&#xff1a; …

MySQL复合查询(查询直接看这里)

回顾基本查询 查询工资高于500或岗位为TOM的雇员&#xff0c;同时还要满足他们的姓名首字母为大写的J select * from EMP where(sale > 500 or job TOM) and ename like J%;按照部门号升序而雇员的工资降序排序 select * from EMP order by deptno, sal desc;最后&#…

CANoe中的工作模式之争:由一段简单的代码引出的问题

1、引子 有网友问我一个CAPL中timer定时器的代码问题。他在CANoe工程中写了一段代码:每5秒循环触发一次定时器事件程序,输出一句文本信息到Write窗口。但是执行后发现并不是每5秒触发一次定时器事件程序,而是非常快的触发定时器事件程序。当他把这段代码复制到一个新的CANo…

【integrin + vWFa vWF】

CR3 ; CR4 ; 也有 vWFA CD11 CD18 vWF --Crystal structure and substrate-induced activation of ADAMTS13 神奇&#xff01; HGNC:12726 vWF 12p13.31 HGNC: 7 a2M 12p13.31

微服务之流控、容错组件sentinel

背景 2012年阿里巴巴研发的流量治理组件&#xff0c;核心功能流控、容错 有什么功能 流量控制 流量控制 网关控制 黑白名单 熔断降级 熔断 保护分布式系统防止因为调用下有服务时产生故障或者请求超时等异常影响上游服务&#xff0c;使用熔断方案&#xff0c;类似断路器…

城市内涝监测预警系统:有效降低内涝风险,保障城市安全

近日&#xff0c;受台风“海葵”的影响&#xff0c;福建广东多地遭遇了持续性强降雨的袭击&#xff0c;道路积水严重&#xff0c;“城市看海”模式再次开启&#xff0c;不少网友纷纷调侃房子已经升级为海景房。近年来受极端天气影响&#xff0c;城市内涝灾害越发凸显&#xff0…

vscode 画流程图

文章目录 1、安装插件 draw2、新建文件3、开始画图4、另存为图片 vscode可以画流程图了&#xff0c;只需要安装插件就可以了。 1、安装插件 draw 2、新建文件 3、开始画图 4、另存为图片

小程序中如何查看会员的等级及变更记录

会员等级变更记录是了解用户购买行为和消费习惯的重要依据。下面就将介绍如何怎么查看会员的等级以及等级变更记录。 1. 找到指定的会员卡。在管理员后台->会员管理处&#xff0c;找到需要查看等级和记录的会员卡。也支持对会员卡按卡号、手机号和等级进行搜索。在这个页面…

后端太卷,我不玩了!

作者&#xff1a;阿秀 InterviewGuide大厂面试真题网站&#xff1a;https://top.interviewguide.cn 这是阿秀的第「303」篇原创 小伙伴们大家好&#xff0c;我是阿秀。 校招岗位形势是一直在变化的&#xff0c;并不是一成不变的&#xff0c;从18、19、20年这三年里的算法岗大热…

1-2 AUTOSAR规范文档

目录 一、AUTOSAR文档下载 二、AUTOSAR文档分类 三、软件设计规范文档解读&#xff08;SWS&#xff09; 一、AUTOSAR文档下载 AUTOSAR规范文档下载可以到AUTOSAR官网&#xff08;Home AUTOSAR&#xff09;进行下载。 下载操作如下图所示&#xff1a; 二、AUTOSAR文档分类 AU…

golang面试题:json包变量不加tag会怎么样?

问题 json包里使用的时候&#xff0c;结构体里的变量不加tag能不能正常转成json里的字段&#xff1f; 怎么答 如果变量首字母小写&#xff0c;则为private。无论如何不能转&#xff0c;因为取不到反射信息。如果变量首字母大写&#xff0c;则为public。 不加tag&#xff0c…

【C++11】{}初始化、std::initializer_list、decltype、STL新增容器

文章目录 1. C11简介2. 统一的列表初始化2.1 &#xff5b;&#xff5d;初始化2.2 std::initializer_list 3. 声明3.1 auto3.2 decltype 4. nullptr5. 范围for循环6. 智能指针7. C11STL中的一些变化8. 演示代码 1. C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1…

Kotlin面向对象基础使用方法(继承、接口、Lambda、空指针检查机制等)

三、面向对象 1、继承 1.1 open改变类的继承属性 在kotlin设计时默认所有的非抽象类是无法被继承的&#xff0c;如果想要使得一个非抽象类可以被继承&#xff0c;我们需要使用open关键字。 open class Person {var name "";var age 0;fun eat() {println(name …

入门人工智能 ——自然语言处理介绍,并使用 Python 进行文本情感分析(5)

入门人工智能 ——自然语言处理介绍&#xff0c;并使用 Python 进行文本情感分析&#xff08;5&#xff09;&#xff09; 入门人工智能 ——自然语言处理介绍&#xff0c;并使用 Python 进行文本情感分析介绍自然语言处理的挑战NLP的基本任务NLP的基本技术NLP的应用领域 使用 P…

RHCSA Linux环境搭建

目录 一、安装Linux操作系统 二、创建虚拟机 1、成功激活后&#xff0c;开始“创建新的虚拟机” 新建虚拟机 2、自定义--根据我们的需求来创建 3、默认即可 4、选择稍后安装操作系统&#xff08;可自定义设置某些选项&#xff09; 5、选择Linux操作系统&#xff0c;版本…