首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >页面替换和LRU

页面替换和LRU
EN

Stack Overflow用户
提问于 2020-01-08 16:15:19
回答 1查看 57关注 0票数 0

如果发生页面错误,那么我们必须替换请求帧的进程中最近最少使用的页面,还是必须替换整个主内存中最近最少使用的页面?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-01-10 02:25:09

理论

假设有N页数据,其中包括:

  • 所有属于所有进程的数据
  • 磁盘上的所有文件数据(可以预取到虚拟文件系统高速缓存中)
  • 所有DNS查找信息(可以预取到某种DNS高速缓存中)
  • 所有静态HTML页、图像等(可以预取到某种网页映射中否则您可以在软件需要它之前进行预取

< cache)

  • anything >H113所有可以由软件预先生成的数据(例如质数筛子、从字体、mipmap生成的高速缓存像素数据,...)

目标是用来自所有可能来源的“下一步最有可能需要的”数据填充RAM。请注意,这可能包括(例如)将属于某个进程的最近使用的数据从RAM发送到交换空间,以便您可以使用该RAM从internet预取未被请求的数据(如果您知道该数据可能比进程中的数据更早需要)。

主要有3个问题:

一些数据是由正常进程控制的,而不是由操作系统控制的;并且没有标准的方法来允许正常进程参与操作系统的“

  • the most to be RAM the next data”scheme.
  • often你不能准确地预测未来。请注意,您可以查看调用"sleep()“后进程何时唤醒这样的事情,以准确预测未来的一小部分;您可以跟踪统计数据,以不准确地预测其他事情(例如,如果您知道用户在过去10天中的9天在午餐时间访问了某个网站,那么您可以预测他们有90%的可能性会在今天的午餐时间访问该网站)。当然,(在某些情况下)“最近使用”是“最有可能很快再次被使用”的合理预测指标;
  • 存在与传输数据相关联的成本,其中成本取决于数据现在所在的位置以及当前获取数据所需的硬件的繁忙程度(例如,当网卡什么都不做时,从快速互联网连接获取数据可能很便宜,但当网卡忙于做许多其他事情时,从快速互联网连接获取数据可能很昂贵)

Practice

你可以尝试解决所有的问题(例如,跟踪很多事情并拥有奇特的预测算法;在决定做什么时考虑传输和/或生成数据的成本;并提供某种“当前内存压力通知”,正常进程可以使用它来参与操作系统的“保持RAM充满最有可能需要的数据”方案);但这一切都是复杂和困难的(例如,你想确保找出什么应该/不应该在RAM中的开销不会让你付出更多的性能代价,而不是你获得的收益),所以操作系统通常会做一些更简单、效率更低的事情。

具体地说,一个非常简单的操作系统可能只做“驱逐最近最少使用的操作系统”(没有预取,没有考虑传输成本,并且根本没有正常进程参与);尽管非常糟糕,但这可能被认为是“足够好的”。

如果发生页面错误,那么我们必须替换请求帧的进程中最近最少使用的页面,还是必须替换整个主内存中最近最少使用的页面?

理想情况下,您应该尝试从所有内存中清除“最不可能很快被需要的”数据(可能包括属于内核本身的数据);但是妥协是不可避免的,没有什么可以说“尽管非常糟糕,足够好”的操作系统不能仅仅从当前进程中清除最近最少使用的页面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59649861

复制
相关文章
lru算法和redis的lru
LRU-K中的K代表最近使用的次数,因此LRU可以认为是LRU-1。LRU-K的主要目的是为了解决LRU算法“缓存污染”的问题,其核心思想是将“最近使用过1次”的判断标准扩展为“最近使用过K次”。
earthchen
2020/09/24
4060
【LRU】一文让你弄清 Redis LRU 页面置换算法
Q:一天同事问,我放在 redis 中的 key,为什么有时候过一段时间数据就没有了,我并没有设置过期时间呀??😳😳
阿兵云原生
2023/09/25
2010
【LRU】一文让你弄清 Redis LRU 页面置换算法
JavaScript案例:页面背景替换
页面背景替换 效果演示 点击查看操作效果 案例分析 练习给一组元素注册事件 给四个图片利用循环注册事件 点击那个图片,页面背景替换为那个图片 核心算法:把当前图片的src路径取过来,给body作为背景即可 代码实现 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="view
岳泽以
2022/10/26
6140
JavaScript案例:页面背景替换
缓存算法(页面置换算法)-FIFO、LFU、LRU
  FIFO(First in First out),先进先出。其实在操作系统的设计理念中很多地方都利用到了先进先出的思想,比如作业调度(先来先服务),为什么这个原则在很多地方都会用到呢?因为这个原则简单、且符合人们的惯性思维,具备公平性,并且实现起来简单,直接使用数据结构中的队列即可实现。
哲洛不闹
2019/06/05
2.9K0
前端页面替换文本的方法和一些小技巧
在前端页面替换文本有几种做法,不假思索的答案通常是直接用JavaScript。但你有没有想过这完全可以用CSS实现呢? 背景 在前端页面上,有的时候我们需要根据用户行为,替换的显示文本。比如 “显示/隐藏”、“展开/收起”。这是一个很常见的功能,实现起来也没有太大的难度。 CSS Tricks 有一篇文章谈及“替换文本的五种方法”(Swapping Out Text, Five Different Ways)。在这篇文章里,作者总结了使用五种实现方法,并且在评论里和很多读者进行了一些讨论分析。我在这里总
ThoughtWorks
2018/04/18
2.3K0
【Oracle】-【LRU和DBWR】-LRU算法与DBWR中的应用
Oracle体系结构中经常看到LRU算法,Least Recently Used,也有叫“最近最少使用页面置换算法”,简单讲,Oracle会将内存中最近不用的数据库移出内存以腾出空间来加载另外的数据。算法的实现虽然无法获取,但对于我们很多人来说,也没有必要了解。更重要、更实际地是知道它的作用,以及基于此对一些问题的分析与判断。 关于这个算法,有一种最理想的计算,就是每次调换出的内存是所有内存中最迟将被使用的,可以最大限度地推迟内存调换,但这种算法是理想内存置换,无法实现。为了减少与理想算法的差距,又出现了各种精妙的算法,LRU就是其中一个。它是基于:前面内存中的数据很可能在后面频繁使用,反过来说,已经很久没用的内存中数据可能在未来较长时间内不会被用到,这是著名的局部性原理,比内存速度还要快的cache,也是基于同样的原理运行的。因此我们只需要在每次内存调换时,找到最近最少使用的内存数据调出内存,这就是LRU算法的内容。 有的书中提到的“如果数据库空运转,最终DBWR会将全部缓冲区存储区写入磁盘”,DBWR会将dirty缓冲区写入磁盘,使用的是LRU算法,如上原理所述,根据DBWR触发的若干条件,外加LRU算法,DBWR当然会将全部buffer cache写入磁盘。
bisal
2019/01/29
6750
lru_cache和cache原理
LRU LRU (Least Recently Used) 是缓存置换策略中的一种常用的算法。当缓存队列已满时,新的元素加入队列时,需要从现有队列中移除一个元素,LRU 策略就是将最近最少被访问的元素移除,从而腾出空间给新的元素。
玖柒的小窝
2021/10/23
1K0
可替换元素和非替换元素
可替换元素replaced element也称作可置换元素,其展现效果不是由CSS来控制的,这些元素是一种外部对象,它们外观的渲染,是独立于CSS的。非置换元素non-replaced element也称作非替换元素,其内容由CSS渲染直接表现给客户端。
WindRunnerMax
2020/08/27
2K0
[搞懂Java集合类5]深入理解LinkedHashMap和LRU缓存
今天我们来深入探索一下LinkedHashMap的底层原理,并且使用linkedhashmap来实现LRU缓存。
Java技术江湖
2019/09/25
4460
Python列表模拟页面调度LRU算法(京东2016笔试题)
问题描述:一进程刚获得3个主存块的使用权,若该进程访问页面的次序是1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5。当采用LRU算法时,发生的缺页次数是多少? 解析:所谓LRU算法,是指在发生缺页并且没有空闲主存块时,把最近最少使用的页面换出主存块,腾出地方来调入新页面。 在下面的代码中,应重点理解列表切片模拟LRU算法的用法。 def LRU(pages, maxNum): temp = [] times = 0 for page in lst: nu
Python小屋屋主
2018/04/16
1K0
LRU 算法
LRU 是 Least Recently Used 的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最久未使用的页面予以淘汰。-百科 上面是对操作系统中 LRU 算法的阐述,本文说的 LRU 主要是指该算法在业务层的缓存算法中的应用,总而言之,基本的实现逻辑是一样的。
haifeiWu
2020/02/10
7790
LRU算法
LRU算法是最近使用最少算法(LeastRecently Used)。我们不仅考虑最近是否用过,还要考虑最近使用的频率。此处我们使用的哲学理念仍是拿过去的数据来预测将来:如果一个页面被访问的频率低,那么以后很可能也用不到。
宇宙之一粟
2020/10/26
3550
What is LRU?
LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。
用户3467126
2019/10/14
4720
What is LRU?
LRU算法
LRU(Least Recently Used)基于一种假设——最近最少使用,也就是说最近使用得少的数据,在未来使用到的几率也不大,那么当资源不够用时,就可以选择移除那些最近最少使用的数据
晚上没宵夜
2022/05/09
5310
LRU算法
LRU算法
这两种算法均常用于缓存替换策略,其目的是保证缓存的优化性能,保证缓存透明性。当缓存中的空间被填满后,缓存替换策略将选择缓存中某些单元从缓存中剔除,并将现在需要使用的单元填入缓存。缓存替换策略在执行过程中会导致一定的延迟,延迟公式如下:
狼啸风云
2022/06/08
4210
LRU算法
LRU && LFU
package handlers; import com.sun.org.apache.bcel.internal.generic.LUSHR; import java.util.LinkedHashMap; import java.util.Map; class LRU<K,V> extends LinkedHashMap<K,V>{ public LRU(){ super(max_entires, 0.75f, true); } public st
大学里的混子
2019/03/13
5250
LRU算法
内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,操作系统会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。
233333
2018/12/25
8720
LRU实现基于map和双向链表实现
前面我们已经看到了单链表的数据结构:数据域和节点域node。而双向链表则是:数据域和节点域(包含前驱节点和后继节点)。
路行的亚洲
2021/04/09
5680
LeetCode - 查找和替换模式
原题地址:https://leetcode-cn.com/problems/find-and-replace-pattern/
晓痴
2019/07/30
8490
点击加载更多

相似问题

页面替换算法:最优、FIFO和LRU

20

MFU和LRU页面替换算法的比较

26

LRU页面替换算法C#

16

LRU页面替换算法的实现

20

LRU和FIFO页面替换在这里是否正确?

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文