【发布时间】:2016-04-02 17:10:18
【问题描述】:
据我从书中读到(纠正我错了),在编译器将编译后的代码放入存储后,CPU 创建逻辑地址,这些逻辑地址通过 MMU(内存管理单元)映射到物理内存.另外我知道CPU不能直接访问物理内存以外的任何东西。
那么CPU首先是如何为进程产生逻辑地址的呢?
【问题讨论】:
标签: operating-system
据我从书中读到(纠正我错了),在编译器将编译后的代码放入存储后,CPU 创建逻辑地址,这些逻辑地址通过 MMU(内存管理单元)映射到物理内存.另外我知道CPU不能直接访问物理内存以外的任何东西。
那么CPU首先是如何为进程产生逻辑地址的呢?
【问题讨论】:
标签: operating-system
听起来你对事情的作用有点困惑。
操作系统通过设置页表来定义逻辑地址空间,将逻辑页设置为物理页框。操作系统加载 CPU 的硬件寄存器,以便知道它已定义的页表。
使用页表来定义逻辑地址空间是现代 CPU 不可或缺的一部分。在某些系统中,物理地址的唯一用途是在页表中。
编译器生成一个目标代码文件,描述使用和创建的指令和数据。
链接器将目标代码组合成一个可执行文件,该文件定义程序将如何加载到内存中。
加载程序读取可执行文件中的指令并设置逻辑地址空间以运行程序。加载程序调用系统例程来设置页表以定义逻辑地址空间。
例如,在可执行文件有只读数据的情况下,加载程序将调用操作系统例程在逻辑地址空间中创建只读页面,并将它们映射到可执行文件中的数据。
【讨论】: