我写了一个页面替换的模拟程序,其中Clock算法(使用1位使用位)与FIFO完全相同,这让我非常困惑。
这里我有一个简单的案例来复制我的难度:
Say I have page 1 3 5 7 in memory, and initially memory is like:
1 use=1 <- handle
3 use=1
5 use=1
7 use=1
When 2 needs to be inserted, clock handle travels through all the pages and
at last substitute 1:
1 use=0 <- handle
3 use=0
5 use=0
7 use=0
To:
2 use=1
3 use=0 <- handle
5 use=0
7 use=0
Then I need to insert 4:
2 use=1
4 use=1
5 use=0 <- handle
7 use=0
Then after 6 and 8:
2 use=1 <- handle
4 use=1
6 use=1
8 use=1
假设FIFO驱逐首页(第一个),并插入到结尾。在这个例子中,Clock与FIFO完全相同,它总是驱逐最旧的(前)页面。
我不知道我做错了什么,有人可以指出来吗?
凌源
答案 0 :(得分:0)
你没有做错任何事。只要再次请求已经在内存中的页面,时钟/秒偶然算法将与FIFO相同。此时,参考位被设置为1,并且下一次该页面将被替换,而不是替换它,参考位被设置为零,并且以相同的方式检查下一个候选受害者页面。所以,你可以说带有翻转位的页面被赋予了...... 第二次机会。