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