lru - LRU算法中的页面错误

标签 lru page-fault page-replacement

我无法理解编程讲座中的某些内容。我知道页面替换算法存在页面错误。

LRU算法中,什么时候会发生页面错误?是没有剩余空闲帧的时候吗?是不是框架已经存在但也已经被使用了?

我的讲座演示中有这张图片(我只裁剪了重要部分,因为原件是另一种语言):

enter image description here

这张图中的问题是“只有4帧,如果采用LRU算法,什么时候会出现缺页?”正如我所看到的,前 3 行有一个 x。这就是为什么我要问当还有空闲帧时是否会发生页面错误?或者,当我们需要“踢出”一个框架时,页面错误是否发生在红色 X 中?

最佳答案

当页面尚未位于其中一个框架中时,就会发生页面错误。

因此,如果还剩下一些空闲帧并且我们需要输入一个新页面,则会发生页面错误,因为该页面尚未位于其中一个帧中。 这意味着页面错误将不断发生,直到我们遇到已经存在于其中一个帧中的相同页面(编号)。这就是为什么图片的前 3 行中有一个“x”。第四行没有“x”,因为该页面已经在其中一个框架中。

如果所有框架都已包含页面并且我们要输入的新页面尚未在其中一个框架中,则发生页面错误,我们需要“踢出”一个框架以释放一个框架为新页面。这可以通过不同的算法来完成,例如最近最少使用、先进先出等。这就是为什么在图片中,一些“X”是红色的,因为发生了页面错误并且我们踢出了一个框架。

感谢@Blorgbeard 帮助我回答。

关于lru - LRU算法中的页面错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23878637/

相关文章:

caching - 寻找一个FIFO/LRU文件存储系统

跟踪缓存变量/函数依赖关系的 Pythonic 方法

algorithm - FIFO 页面替换策略是否有可能胜过 LRU?

Python lru_cache : how can currsize < misses < maxsize?

c - 如何从任意虚拟地址转储内存,忽略 SIGSEGV

delphi - 在 D2006 应用程序中获取外部异常 C0000006 - 如何强制 delphi 加载整个可执行文件?

linux - Linux 内核中的主要页面错误处理程序

c - 进入无限循环

operating-system - 虚拟内存页面替换算法