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

页面替换和LRU
EN

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

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

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-01-10 10: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

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档