关于缺页中断后快表的变更时机的疑问

题目:

        某分页式虚拟存储系统,用于页面交换的磁盘的平均访问及传输时间是20ms。页表保存在主存,访问时间为1μs,即每引用一次指令或数据,需要访问两次内存。为改善性能,可以增设一个关联寄存器,如果页表项在关联寄存器里,则只要访问一次内存就可以。假设80%的访问其页表项在关联寄存器中,剩下的20%中,10%的访问(即总数的2%)会产生缺页。请计算有效访问时间。

 

答案1有效访问时间 = 80% * 1微秒 + (1-80%)((1-10%) * 1微秒 * 2 + 10% * (1微秒 * 3 + 20毫秒)) = 401.22微秒

答案2:有效访问时间 = 80% * 1微秒 + (1-80%)((1-10%) * 1微秒 * 2 + 10% * (1微秒 * 2 + 20毫秒)) = 401.2微秒

 

参考答案给的是答案2,解释如下:

       …访问TLB(不计时间)+ 访问内存中的页表(1us+ 缺页中断(20ms+ 访问TLB(不计时间)+ 访问物理地址中的数据(1us);

按照答案的意思,缺页中断后立即发生了页表和快表的更新,因此之后只要再访问一次快表即可很多类似题目的答案也都是按照这个思路解释的  可是我觉得这与汤子丹的教材中给出的流程不同,教材中好像是说快表的修改在成功访问页表之后。

按下图汤子丹教材给出的流程图分析,我个人认为答案1是正确的,原因如下:

先访问TLB(不计时间),访问了一次页表(1us),缺页中断(20ms),再次访问TLB(不计时间)(此时TLB还未更新),访问页表(1us),修改TLB,访问物理地址中的数据(1us)。

 

请牛友帮忙分析下哪种解释比较合理,感谢不尽!


#悬赏#
全部评论
在计算机统考408的2009年真题里也有一道类似的题(题号46),答案也是按在缺页中断处理后TLB必中算的。我做这道题的时候特地翻了一下书,因为不知道在缺页中断处理过程中改不改TLB。王道操作系统单科书上附的图也是这张,然后我就做错了。CS的某些知识点在不同的书上就是不统一,如唐朔飞和蒋本珊的组相联映射组号的计算方式。某年的408碰巧考了这个知识点,当初我只知道唐朔飞版的组相联映射组号的计算方式,一对答案发现做错了。我算完那道题就觉得Cache的换入换出很怪异,以致于Cache的命中率很怪异。结果答案告诉我组号的计算方式有两种。所以,我觉得还是应该以考试指定的参考书目为准。如果你这道题是汤小丹书上的,且答案依据的是TLB必中,那有理由认为是这个流程图有疏漏。而且逻辑上确实说不过去啊,既然还要重新执行产生缺页中断的指令,那为什么不更新TLB让它执行得快一点呢?
3 回复 分享
发布于 2020-08-22 20:24
图有问题
点赞 回复 分享
发布于 2021-11-03 19:00
尼玛b的你害人不浅!
点赞 回复 分享
发布于 2021-11-03 19:05
汤子瀛第三版教材
点赞 回复 分享
发布于 2021-12-14 19:08

相关推荐

听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
5 4 评论
分享
牛客网
牛客企业服务