当前位置: 首页 > news >正文

操作系统

1、页面置换算法:FIFO 、LRU、LFU

腾讯面试时被问了,“怎么设计服务器缓存”,“你是指硬件上的吗?”,“都一样”!!!

Cache是个传统的课题,在处理机、操作系统和数据库等领域都有深入的研究.传统的cache替换算法有LFU(least frequency used)和LRU(least recently used)及LRU的变种LRFU和LRU-K等. LRU是将上一次使用时间最短的数据优先存放在cache中. LFU则是将过去使用频率高的数据优先保存在cache中.这两种算法代表了两个极端,LFU使用数据的访问频率,有利于数据的总体优化使用,但不利于数据访问方式的变化和猝发访问.LRU依据最近一次的访问时间,能较好地适应数据访问的变化,但只是在访问时间上的局部优化,没有考虑数据长期的访问特性.有一些算法试图在数据的访问时间和访问频率两方面达到平衡.如LRFU算法给近几次访问时间乘上一个与访问频率有关的权重,以加权值来取得两者之间的平衡.LRU-K算法则是使用最后第K次访问时间来扩展LRU算法,依靠K值的大小进行平衡.它们都是对访问时间的修正,是对LRU算法的改进.

 

LRU和LFU是不同的!

LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!

LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!

比如,第二种方法的时期T为10分钟,如果每分钟进行一次调页,主存块为3,若所需页面走向为2 1 2 1 2 3 4

注意,当调页面4时会发生缺页中断

若按LRU算法,应换页面1(1页面最久未被使用) 但按LFU算法应换页面3(十分钟内,页面3只使用了一次)

可见LRU关键是看页面最后一次被使用到发生调度的时间长短,

而LFU关键是看一定时间段内页面被使用的频率!

 

也就是说:
LRU算法适合:较大的文件比如游戏客户端(最近加载的地图文件)
LFU算法适合:较小的文件和教零碎的文件比如系统文件、应用程序文件
其中:LRU消耗CPU资源较少,LFU消耗CPU资源较多。

 

转载于:https://www.cnblogs.com/fridayc/p/4029866.html

相关文章:

  • 《Java编程思想》读书笔记-对象导论
  • 烟波钓叟歌
  • React-setState杂记
  • Android开发学习笔记:浅谈GridView
  • 我从来不理解JavaScript闭包,直到有人这样向我解释它...
  • ExtJs自学教程(1):一切从API開始
  • Create React App 使用
  • 演练5-5:Contoso大学校园管理系统5
  • [USACO12DEC]逃跑的BarnRunning Away From…
  • SpiderData 2019年2月13日 DApp数据排行榜
  • css按钮渐变色
  • 如何胜任知名企业的商业数据分析师?
  • 网站优化技术
  • AI和ML自动化测试是骗人的营销手段吗?
  • C# U盘扫描
  • #Java异常处理
  • [LeetCode] Wiggle Sort
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • gops —— Go 程序诊断分析工具
  • hadoop集群管理系统搭建规划说明
  • Java多态
  • JDK 6和JDK 7中的substring()方法
  • jquery cookie
  • nodejs:开发并发布一个nodejs包
  • npx命令介绍
  • Travix是如何部署应用程序到Kubernetes上的
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 前端代码风格自动化系列(二)之Commitlint
  • 如何利用MongoDB打造TOP榜小程序
  • 如何设计一个微型分布式架构?
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 深入浏览器事件循环的本质
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • #Java第九次作业--输入输出流和文件操作
  • (6)STL算法之转换
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (九)c52学习之旅-定时器
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net MySql
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET 中让 Task 支持带超时的异步等待
  • .Net环境下的缓存技术介绍