【问题标题】:Can a process start executing with 0 Pages in main memory?一个进程可以从主内存中的 0 页开始执行吗?
【发布时间】:2015-01-12 19:08:09
【问题描述】:

我正在阅读一本关于操作系统 (Galvin) 的书。在解释 Demand Paging 时,它说

在极端情况下,我们可以开始执行一个没有页面的进程 记忆。当操作系统将指令指针设置为第一个 进程的指令,它位于非内存驻留页面上,进程 页面立即出错。

我的问题是操作系统如何为内存中甚至没有单页的进程设置指令指针(因为指令指针中的地址不能是磁盘或辅助内存地址,它必须是主内存地址但是0 页表示内存中没有任何内容)。

【问题讨论】:

    标签: linux operating-system


    【解决方案1】:

    这就是虚拟内存。这意味着在已知且恒定的逻辑地址与瞬态的物理地址之间存在临时映射。然后,正常级别的处理纯粹在逻辑地址中工作,而不必知道物理上发生了什么。

    所以操作系统会例如假设二进制 A 在地址 N 处逻辑可用。然后它将在虚拟映射中标记覆盖 N 到 N+(二进制大小)的页面当前是错误的。将 PC 设置为 N(或任何入口点)后,只要 CPU 尝试从 PC 读取,MMU 就会触发故障。到那时,分页机制将捕获故障并执行通常的操作。

    【讨论】:

    • 太棒了。只是为了提供信息,这是否也意味着该进程将在交换空间中?
    • @AkashMahajan 大多数操作系统可以直接将文件映射到特定地址范围,虚拟提示读取(和写入,如果相关)往返于该文件,而不是往返交换。因此,操作系统可能只会将原始可执行文件映射到该范围,而不是从二进制文件复制到交换中。
    • 知道了。感谢您的帮助。
    猜你喜欢
    • 2012-05-18
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多