3

将 32 位字加载到寄存器中的机器语言指令包含要加载的字的 32 位地址。该指令可能导致的最大页面错误数是多少?

(塔南鲍姆,操作系统,Q 44)

看起来很简单,它只会导致 1 页错误。当它试图访问 32 位字时。(我关于这个问题的理论,请随意忽略它,因为它可能包含许多错误或混淆的事实。)

请告诉我这个问题的正确解决方案是什么。

4

2 回答 2

5

单个读取指令可能会触发多个页面错误。理论上从跨越两个不存在的页面的地址读取。

于 2017-05-12T14:54:32.273 回答
2

我发现接受的答案很奇怪,因为我不明白页表可能不在主内存中 - 那你怎么知道在哪里寻找它?:\

我上网并找到了这两个 链接,我想现在我或多或少地得到了可持续的答案。

答案背后的想法是地址指令可以以某种方式(跨越边界)属于两个页表。

因此,当包含地址的这两个页面都不在主内存中时,会发生 2 个页面错误,而当您尝试寻址位于您之前尝试访问的单词中的虚拟地址时,会发生另外 2 个页面错误 - 总共 4 个。

我仍然不太确定答案,但这个版本似乎比假设页表可能不在主内存中的公认答案版本更简单(奥卡姆剃刀)。希望这会有所帮助。

于 2018-11-20T21:20:51.050 回答