【考研复习】操作系统NRU置换算法小题

题目来源王道书

一进程已分配到4个页帧,现在进程访问到第四页发生缺页,问若使用NRU算法应该换出哪一页。

虚拟页号页帧装入时间最近访问时间访问位修改位
206016101
1113016000
022616210
332016311

 

答案是虚拟页号2,页帧0的那一页。

题目中说到使用NRU,按照答案的说法应该是标准的NRU,而不是改进的CLOCK算法。

为了标准,下面的页号均是页帧号。

按照最近访问时间,访问顺序应该是1,0,2,3。

所以在没有发生缺页时,相对应的访问位和修改位是

1(1,0)
0(1,1)
2(1,0)
3(1,1)

此时访问第四页,发生了缺页,指针将按页表中的顺序进行查找。我们看到在题目给出的表中0和1号页的访问位已经变成了0,而2和3号页的访问位还是1,可以说明此时指针指向的是1号页,并且已经完成对1号页的处理,即将指向2号页。

但是这个过程还没完,现在我们需要的是访问位为0的页,扫描过了0号和1号,没有找到,所以要继续扫描。

扫描完了2号和3号,都没有发现访问位为0的页,所以此时第一轮扫描完成,将进行第二轮扫描。

因为此时0号页的访问位在第一次扫描的时候已经被置为0,所以根据NRU算法,0号页将会被换出。

我个人感觉这道题出的有问题,因为缺页之前0到3号页面的访问位都为1,但是题目里面0和1号页的访问位已经为0,说明clock算法已经执行一部分了。如果按照装入顺序来扫描,应该先扫描3和2才对;如果按最近访问顺序扫描,应该是1,0,2,3这个顺序,因为1和0的访问位已经为0,所以下一个应该到2,这种情况该替换的应该是1号,和答案也不一样。只有按照页表顺序0,1,2,3扫描才能得到书上的答案.


那如果是改进的CLOCK算法呢?

第一轮扫描要找(0,0)的页面,没找到;第二轮要找(0,1)的页面,也没找到。

0(0,1)
1(0,0)
2(0,0)
3(0,1)

 

此时页面访问位和修改位是这样的。

第三轮扫描和第一轮一样,要找(0,0)的页面,此时1号页符合,所以将1号页换出。


这个题虽然题目里说了要用NRU,但是表格里给了修改位,让人很自然的直接按改进的CLOCK算法去做了。做题的时候一定要注意审题啊!!!

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值