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