【问题标题】:Maximum number of page faults a read instruction can cause?读取指令可能导致的最大页面错误数?
【发布时间】:2017-10-11 19:49:30
【问题描述】:
将 32 位字加载到寄存器中的机器语言指令
包含要加载的字的 32 位地址。是什么
这条指令可能导致的最大页面错误数?
(塔南鲍姆,操作系统,Q 44)
看起来很简单,它只会导致 1 个页面错误。当它试图访问 32 位字时。
(我对这个问题的理论,请随意忽略它,因为它可能包含许多错误或混淆的事实。)
请告诉我这个问题的正确答案是什么。
【问题讨论】:
标签:
memory-management
operating-system
paging
page-fault
【解决方案1】:
单个读取指令可能触发多个页面错误。理论上从跨越两个不存在的页面的地址读取。
【解决方案2】:
我发现接受的答案很奇怪,因为我不知道页表可能不在主内存中 - 那你怎么知道在哪里寻找它? :\
我在网上冲浪并找到了这些twolinks,我想现在我得到的答案或多或少是可持续的。
答案背后的想法是地址指令可以以某种方式(跨越边界)属于两个页表。
因此,当包含地址的这两个页面都不在主内存中时,会发生 2 个页面错误,而当您尝试寻址位于您之前尝试访问的单词中的虚拟地址时,会发生另外 2 个页面错误 - 总共 4 个。
我仍然不太确定答案,但这个版本似乎比假设页表可能不在主内存中的公认答案版本简单得多(奥卡姆剃刀)。希望这会有所帮助。