我正在读一本关于操作系统(Galvin)的书。在解释请求寻呼时,它说
在极端情况下,我们可以开始执行一个没有页面的进程 内存。当操作系统将指令指针设置为第一条指令时 进程的指令,位于非内存驻留页上,进程 立即出现页面错误。
我的问题是操作系统如何为内存中甚至没有单页的进程设置指令指针(因为指令指针中的地址不能是磁盘或辅助内存地址,它必须是主内存地址,但是0 页意味着内存中没有任何内容)。
最佳答案
这就是虚拟内存。这意味着逻辑地址(已知且恒定)与物理地址( transient )之间存在短暂映射。然后,正常级别的处理纯粹在逻辑地址中进行,而不必了解物理上发生的情况。
所以操作系统会例如假设二进制文件 A 在地址 N 处逻辑上可用。然后它将在虚拟映射中标记覆盖 N 到 N+(二进制文件大小)的页面当前是错误的。将 PC 设置为 N(或任何入口点)后,一旦 CPU 尝试从 PC 读取数据,MMU 就会发出故障。此时分页机制将捕获故障并执行通常的操作。
关于linux - 进程可以从主内存中的 0 页开始执行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27909031/