当我正在考虑进行网络寻呼(从远程节点请求错误页面)时,我得到了这个问题:
首先,让我们考虑以下步骤:
1) 用户空间程序尝试访问内存 X。
2)MMU遍历页表找到X的物理地址。
3) 遍历页表时,发现页表项无效。
4) CPU 陷阱并被 Linux 陷阱向量捕获。(在ARM的情况下,但我认为x86也是一样的,对吧?)
5)此时,我可以从远程节点检索适当的数据,复制到某个物理地址并将其映射到页表中。
6)问题来了:在这一点之后,在 X 处发生缺页的程序会安全地读取数据吗?那么,这是否意味着 MMU 或 CPU 以某种方式记住了缺页页表条目并返回到该条目并恢复页表的行走?
如果有任何步骤不对,请赐教。