2017-02-14 57 views
0

我只是在学习分页,并想知道我为我的页面替换所做的是否正确,因为我在网上找到的教程看起来有点遍地。我主要是想澄清我是否做错了什么,想要解释而不是直接联系别的东西,我必须进一步解释并不真正帮助的事情。在这里LRU和FIFO页面替换是否正确完成?

我已经做了一个与存储器的序列3帧, 0,3,1,2,3,2,0,1,0,1,3,0,2,3,1

Screenshot of my working

Y =有故障和N =无故障。

UPDATE:试图固定我的FIFO, new working for FIFO

+0

你的lru是正确的。你的fifo看起来和lru完全一样,为什么?当第二个零来(#7)帧是3,1和2.当你删除第1页时,它是正确的,但不是由fifo。在fifo中,您应该已经删除了第3页。请参见第1页在步骤#3中介绍,因此它比步骤#2中引入的第3页更加年轻。第2步是在步骤#4中引入的最年轻的。在fifo中,替换最老的,即。第3页。在lru取代最老的未受影响的。 – inquisitive

+0

@inquisitive所以我再次完成了FIFO,并不完全确定这次我是否正确。 – Kyle

+1

在fifo中,替换最旧的。检查步骤#11。第3页与第1页(#3),第2页(第4页)和第0页(#7)竞争。为什么你应该删除第1页时删除第0页? – inquisitive

回答

0

sequence of steps for fifo operation

虽然做的FIFO,在每一步中,我们复制以前的缓存状态。请注意,高速缓存插槽是从最左到最右,以最老到最小。根据命中或错过,我们执行以下两件事之一:

如果命中,则什么都不做。

如果错过,则删除最左边的缓存条目。在右侧添加新条目。

在做lru的过程中,除了命中时,我们将命中的项目移动到最右侧的插槽。这意味着该项目成为同行中最年轻的一员。