如果发生页面错误,那么我们必须替换请求帧的进程中最近最少使用的页面,还是必须替换整个主内存中最近最少使用的页面?
谢谢。
发布于 2020-01-10 02:25:09
理论
假设有N页数据,其中包括:
< cache)
目标是用来自所有可能来源的“下一步最有可能需要的”数据填充RAM。请注意,这可能包括(例如)将属于某个进程的最近使用的数据从RAM发送到交换空间,以便您可以使用该RAM从internet预取未被请求的数据(如果您知道该数据可能比进程中的数据更早需要)。
主要有3个问题:
一些数据是由正常进程控制的,而不是由操作系统控制的;并且没有标准的方法来允许正常进程参与操作系统的“
sleep()
“后进程何时唤醒这样的事情,以准确预测未来的一小部分;您可以跟踪统计数据,以不准确地预测其他事情(例如,如果您知道用户在过去10天中的9天在午餐时间访问了某个网站,那么您可以预测他们有90%的可能性会在今天的午餐时间访问该网站)。当然,(在某些情况下)“最近使用”是“最有可能很快再次被使用”的合理预测指标;Practice
你可以尝试解决所有的问题(例如,跟踪很多事情并拥有奇特的预测算法;在决定做什么时考虑传输和/或生成数据的成本;并提供某种“当前内存压力通知”,正常进程可以使用它来参与操作系统的“保持RAM充满最有可能需要的数据”方案);但这一切都是复杂和困难的(例如,你想确保找出什么应该/不应该在RAM中的开销不会让你付出更多的性能代价,而不是你获得的收益),所以操作系统通常会做一些更简单、效率更低的事情。
具体地说,一个非常简单的操作系统可能只做“驱逐最近最少使用的操作系统”(没有预取,没有考虑传输成本,并且根本没有正常进程参与);尽管非常糟糕,但这可能被认为是“足够好的”。
如果发生页面错误,那么我们必须替换请求帧的进程中最近最少使用的页面,还是必须替换整个主内存中最近最少使用的页面?
理想情况下,您应该尝试从所有内存中清除“最不可能很快被需要的”数据(可能包括属于内核本身的数据);但是妥协是不可避免的,没有什么可以说“尽管非常糟糕,足够好”的操作系统不能仅仅从当前进程中清除最近最少使用的页面。
https://stackoverflow.com/questions/59649861
复制相似问题