【问题标题】:What is meant by "CPU generates logical address space"?“CPU生成逻辑地址空间”是什么意思?
【发布时间】:2016-04-02 17:10:18
【问题描述】:

据我从书中读到(纠正我错了),在编译器将编译后的代码放入存储后,CPU 创建逻辑地址,这些逻辑地址通过 MMU(内存管理单元)映射到物理内存.另外我知道CPU不能直接访问物理内存以外的任何东西。

那么CPU首先是如何为进程产生逻辑地址的呢?

【问题讨论】:

    标签: operating-system


    【解决方案1】:

    听起来你对事情的作用有点困惑。

    操作系统通过设置页表来定义逻辑地址空间,将逻辑页设置为物理页框。操作系统加载 CPU 的硬件寄存器,以便知道它已定义的页表。

    使用页表来定义逻辑地址空间是现代 CPU 不可或缺的一部分。在某些系统中,物理地址的唯一用途是在页表中。

    编译器生成一个目标代码文件,描述使用和创建的指令和数据。

    链接器将目标代码组合成一个可执行文件,该文件定义程序将如何加载到内存中。

    加载程序读取可执行文件中的指令并设置逻辑地址空间以运行程序。加载程序调用系统例程来设置页表以定义逻辑地址空间。

    例如,在可执行文件有只读数据的情况下,加载程序将调用操作系统例程在逻辑地址空间中创建只读页面,并将它们映射到可执行文件中的数据。

    【讨论】:

    • 非常感谢您的回答。但我想知道何时真正发生加载。我知道当我们输入 gcc 时,它会创建一个目标代码并将其与库链接,但加载是现在发生还是仅在我们输入 ./a.out 之后发生。跨度>
    • 只有在运行程序后才会加载。
    • 我(可能)读了同一本书并在同一点上感到困惑。答案让我很满意。还有一张纸条;加载可能以惰性或急切的方式发生。
    猜你喜欢
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 2013-04-12
    相关资源
    最近更新 更多