一个主存储器最多可以保留 4 页。如果 LRU 算法用于按顺序排列的后续页面,哪个页面将是第一个出现页面错误的页面?
1,2,3,1,2,4,1,2,3
这是一个我认为没有答案的测试问题。主内存可以保留 4 个页面,并且由于存在页面 1、2、3、4,因此不应该发生页面错误。
答案是第 4 页,但我不明白为什么。
一个主存储器最多可以保留 4 页。如果 LRU 算法用于按顺序排列的后续页面,哪个页面将是第一个出现页面错误的页面?
1,2,3,1,2,4,1,2,3
这是一个我认为没有答案的测试问题。主内存可以保留 4 个页面,并且由于存在页面 1、2、3、4,因此不应该发生页面错误。
答案是第 4 页,但我不明白为什么。
唯一似乎有意义的方法是,如果该序列中的数字是内存中的页码,而不是从磁盘检索的页面。
换句话说,它们是为加载页面而选择的页码。这(至少默认)由短语“如果在以下页面上使用 LRU 算法,则按顺序”支持。
LRU 算法用于选择要丢弃和重新使用的页面,因此,如果选择了第 1 页,那么这将导致页面被换出以进行替换。
所以这个意义上的第四页是:
1,2,3,1
^
|
+-- this one.
并且,因为第一个内存页面已经在使用中,所以会发生页面错误以将新页面引入其中。
我想不出任何其他甚至接近匹配该答案的情况。
第一个'1'将是第一个页面错误,因为框架在开始时是空的,当第一次调用'1'时,它将显示页面错误,因为框架是空的。页面错误总数为 4。
(即使发布,我只是添加一些其他答案中未描述的见解)LRU 是由 Unix 通过维护所有页面的链接列表来实现的。这个列表将在前面有最近使用的页面,而在后面(尾部)有最近最少使用的页面因为列表在每个内存引用上重新组织,所以最后的 4 页顺序是我们感兴趣的 4,1,2,3。
在给定的页面序列中,4 是最近最少使用的页面,而 3 是最近使用的页面。所以第 4 页将在列表的后面。任何导致其中一页被清除的事件都将分页第 4 帧,因为它位于列表的后面