Algorithm 关于FIFO页面替换算法的一个实际例子的困惑?

Algorithm 关于FIFO页面替换算法的一个实际例子的困惑?,algorithm,memory,memory-management,fifo,Algorithm,Memory,Memory Management,Fifo,我正在用不同的页面替换算法做一些理论示例,以便更好地理解我实际编写代码的时间。我对这个例子有点困惑 下面给出的是一个具有4个分片(4个部分?)的物理内存。依次访问以下页面: R=1,2,3,2,4,5,3,6,1,4,2,3,1,4 在具有4个磁贴的R上运行FIFO页面替换算法 我知道当一个页面需要换入时,操作系统会将内存中最长时间的页面换出。实际上,我会: Time 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Page 1 2 3 2 4 5 3 6 1 4

我正在用不同的页面替换算法做一些理论示例,以便更好地理解我实际编写代码的时间。我对这个例子有点困惑

下面给出的是一个具有4个分片(4个部分?)的物理内存。依次访问以下页面:

R=1,2,3,2,4,5,3,6,1,4,2,3,1,4

在具有4个磁贴的R上运行FIFO页面替换算法

我知道当一个页面需要换入时,操作系统会将内存中最长时间的页面换出。实际上,我会:

Time    1 2 3 4 5 6 7 8 9 10 11 12 13 14
Page    1 2 3 2 4 5 3 6 1 4  2  3  1  4
Tile 1  1 1 1 1 1 5 5
Tile 2    2 2 2 2 2 2
Tile 3      3 3 3 3 3
Tile 4          4 4 4
我不确定时间=8时发生了什么。我知道它不会取代第5页和第4页,但我不确定第3页和第2页之间的内容。因为在时间=4时,我们有一个2,这是否意味着第3页将被替换?或者是因为在时间=4时,我们的内存中已经有2个,因此在时间=8时,我们将替换2?

FIFO(先进先出)在这里的意思是:如果新条目需要空间,则将替换最旧的条目。这与LRU(最近一次使用)形成对比,即更换最长时间未使用的条目。在时间5考虑四个瓦片的内存:

Tile  Page   Time of loading
1     1      1
2     2      2
3     3      3
4     4      5
在时间6时,需要为第5页留出空间,因此必须替换内存中的一页。根据先进先出原则,此处替换第1页:

Tile  Page   Time of loading
1     5      6
2     2      2
3     3      3
4     4      5
此事件在时间8时重复,将替换内存中最旧的页:

Tile  Page   Time of loading
1     5      6
2     6      8
3     3      3
4     4      5

因此,在这里写下作业时的创建时间很有帮助。

我不知道为什么你认为t=4是一个特殊的时间。在FIFO缓存中,分片以循环方式填充(逐出上一页)。瓷砖1,2,3,4,1,2,3,4,1,2等。感谢您的清理!我只是对当你必须“两次”替换内存中的一个页面时会发生什么感到困惑——就像在一开始它被添加,我们有一个页面错误,但后来我们有一个页面被点击,因为该页面已经存在于内存中。