Operating system 为什么LRU不';不要迟到';什么是异常?

Operating system 为什么LRU不';不要迟到';什么是异常?,operating-system,theory,Operating System,Theory,我有一个关于页面替换算法的问题。FIFO受到了影响,但LRU没有。有人知道为什么LRU不受苦吗?我一直在互联网上寻找原因,但运气不好。因为FIFO认为,仅仅是一个页面占用内存很长时间的事实,替换它才是最安全的,而事实并非如此。相反,FIFO失败的地方在于统计上,如果一个页面被频繁调用,它比最近被调用的另一个页面更有可能再次被调用。换句话说,频率是比年龄更好的页面加载决定因素 因为LRU是一种堆叠算法,使用k帧将始终是LRU的k+n帧的子集。因此,k+n帧可能出现的任何页面错误也会出现在k帧上,这

我有一个关于页面替换算法的问题。FIFO受到了影响,但LRU没有。有人知道为什么LRU不受苦吗?我一直在互联网上寻找原因,但运气不好。

因为FIFO认为,仅仅是一个页面占用内存很长时间的事实,替换它才是最安全的,而事实并非如此。相反,FIFO失败的地方在于统计上,如果一个页面被频繁调用,它比最近被调用的另一个页面更有可能再次被调用。换句话说,频率是比年龄更好的页面加载决定因素

因为LRU是一种堆叠算法,使用k帧将始终是LRU的k+n帧的子集。因此,k+n帧可能出现的任何页面错误也会出现在k帧上,这反过来意味着LRU不会出现Belady的异常。

与Caspar的答案类似,但我发现我的教科书(略经编辑)中的解释更为清晰

[LRU]属于一类称为堆栈算法的页面替换算法,[LRU]永远不会表现出Belady的异常

堆栈算法是一种算法,可以证明内存中N帧的页面集始终是内存中N+1帧的页面集的子集。[因此,额外的帧不会导致额外的页面错误。]

对于LRU替换,内存中的页面集将是N个最近引用的页面。如果帧数增加,这N个页面仍将是最近引用的页面,因此仍将在内存中


西尔伯沙茨,A.,加尔文,p.B.,和加涅,G.(2014)。操作系统概念(第9版)。新加坡:Wiley。

这是一个纯粹的技术问题,属于StackOverflow(请不要在那里重新发布它-如果有足够多的人投票关闭它,它将自动迁移)。你没有回答这个问题。我的理解是,在LRU中,堆栈中的元素是按最近使用的元素排序的,这意味着a中的前k个元素(k+n)-大小堆栈与k-size堆栈中的k元素相同。@RafaelJ在我看来,你说的和Caspar说的一样,可能更清楚一点。我认为这是一个很好的解释。@DonHatch,是的,我是。我一开始不明白,所以我把我的版本放在这里了。也许它可以帮助别人?