【发布时间】:2015-01-12 19:08:09
【问题描述】:
我正在阅读一本关于操作系统 (Galvin) 的书。在解释 Demand Paging 时,它说
在极端情况下,我们可以开始执行一个没有页面的进程 记忆。当操作系统将指令指针设置为第一个 进程的指令,它位于非内存驻留页面上,进程 页面立即出错。
我的问题是操作系统如何为内存中甚至没有单页的进程设置指令指针(因为指令指针中的地址不能是磁盘或辅助内存地址,它必须是主内存地址但是0 页表示内存中没有任何内容)。
【问题讨论】:
我正在阅读一本关于操作系统 (Galvin) 的书。在解释 Demand Paging 时,它说
在极端情况下,我们可以开始执行一个没有页面的进程 记忆。当操作系统将指令指针设置为第一个 进程的指令,它位于非内存驻留页面上,进程 页面立即出错。
我的问题是操作系统如何为内存中甚至没有单页的进程设置指令指针(因为指令指针中的地址不能是磁盘或辅助内存地址,它必须是主内存地址但是0 页表示内存中没有任何内容)。
【问题讨论】:
这就是虚拟内存。这意味着在已知且恒定的逻辑地址与瞬态的物理地址之间存在临时映射。然后,正常级别的处理纯粹在逻辑地址中工作,而不必知道物理上发生了什么。
所以操作系统会例如假设二进制 A 在地址 N 处逻辑可用。然后它将在虚拟映射中标记覆盖 N 到 N+(二进制大小)的页面当前是错误的。将 PC 设置为 N(或任何入口点)后,只要 CPU 尝试从 PC 读取,MMU 就会触发故障。到那时,分页机制将捕获故障并执行通常的操作。
【讨论】: