关于缺页中断后快表的变更时机的疑问
题目:
某分页式虚拟存储系统,用于页面交换的磁盘的平均访问及传输时间是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)。
请牛友帮忙分析下哪种解释比较合理,感谢不尽!