什么决定了必须分配给虚拟内存环境中正在运行的进程的最小页框数。
我发现上述问题的答案是instruction set architecture
但无法理解其背后的原因。
请解释。
编辑: 问题在以下链接http://www.geeksforgeeks.org/archives/4036(见问题3)上,我无法理解答案背后的逻辑。
什么决定了必须分配给虚拟内存环境中正在运行的进程的最小页框数。
我发现上述问题的答案是instruction set architecture
但无法理解其背后的原因。
请解释。
编辑: 问题在以下链接http://www.geeksforgeeks.org/archives/4036(见问题3)上,我无法理解答案背后的逻辑。
是的,ISA 确实发挥了作用。
想象一下这种假设条件,如果 ISA 支持一条指令(如 x86 中的 mov),该指令可以在 3 级间接后获取操作数(回忆 x86 的间接寻址模式)。让我们将此系统称为 A。
在另一个系统上,您最多可以有 2 个间接级别,称为 B。
在 A 和 B 上,如果我们给出 4 作为最小帧数,看看会发生什么。B 运行良好而不是 A 这就是原因:
当将操作数中具有 3 级间接性的指令加载到 cpu 中执行时,请记住我们只有 4 帧用于此进程,假设此场景
第 1 帧将用于指令本身.
框架 2 将用于第一级间接操作数位于另一个页面
框架 3 将用于第二级间接可能这不在先前分配的帧的地址范围内。
第 4 帧同样发生在下一级别的间接中。
现在回想一下管道,只有在操作数获取完成后我们才能进入下一个执行阶段,但是我们没有最终的操作数,我们只有第 4 帧中的地址,现在你得到一个页面错误,所以您删除了先前分配的帧之一以处理并重新启动导致故障的指令,但同样的事情再次发生。B系统没有这个问题。
据我记得,这是 ISA 在决定进程的最小帧数方面发挥作用的方式。参考 galvin 我认为这本书在虚拟内存部分涵盖了这一点。
但这是理论上的,我不知道这个过程在像linux这样的真实系统中是怎样的。
干杯:)
编辑:-正如您指出的链接中给出的指令可能会跨越页面边界