Memory management 执行时地址绑定方案中的逻辑和物理地址空间

Memory management 执行时地址绑定方案中的逻辑和物理地址空间,memory-management,operating-system,Memory Management,Operating System,我正在阅读一本操作系统书籍,发现以下信息我无法理解: 逻辑地址和物理地址在编译时和 加载时间地址绑定方案;逻辑(虚拟)和物理 地址在执行时间上不同“地址绑定方案” 那么,这是否意味着在将符号地址转换为物理地址或可重定位地址的编译时地址绑定和将可重定位地址转换为物理地址的加载时地址绑定中,程序处理物理地址,CPU直接生成物理地址 在执行时地址绑定方案中,程序在主存中的位置可能会改变,因此会有分离的地址空间 这就是我的想法还是我遗漏了什么?您阅读的是哪个操作系统文本;例如,什么日期 传统的UNIX工

我正在阅读一本操作系统书籍,发现以下信息我无法理解:

逻辑地址和物理地址在编译时和 加载时间地址绑定方案;逻辑(虚拟)和物理 地址在执行时间上不同“地址绑定方案”

那么,这是否意味着在将符号地址转换为物理地址或可重定位地址的编译时地址绑定和将可重定位地址转换为物理地址的加载时地址绑定中,程序处理物理地址,CPU直接生成物理地址

在执行时地址绑定方案中,程序在主存中的位置可能会改变,因此会有分离的地址空间


这就是我的想法还是我遗漏了什么?

您阅读的是哪个操作系统文本;例如,什么日期

传统的UNIX工具包括一个编译器(ccN),它将源代码转换为asm;一个汇编器(as),它将asm转换为可重新定位的目标代码或可执行文件;以及一个加载器(ld),它将目标代码文件组合成已解析的可执行文件

请注意,如果所有符号都已解析,则汇编程序可以创建一个可执行文件:约定
a.out
就是这样的产物

其他系统,尤其是IBM大型机和更高版本的MSDO,将
加载
称为
链接编辑
,这是一个没有区别的区别

ld
解析(分配)可执行文件的地址时,这些地址是虚拟的;尽管在实践中可能是物理的。ld不在乎,它的工作是将N个对象文件合并成一个完全解析的可执行文件,可能遵循如下规则:
.text=0x0,.data=.text+size(.text),…
。如果我有一个只有物理地址的嵌入式系统,我可以用其他规则引导
ld

结果,
a.out
有一个关于所有事物地址的概念,在现代设备上(现代指1978年以来的任何重要计算机),这些是虚拟地址,将可执行文件映射到内存中的操作系统将其解析为其他物理内存地址

在更现代的系统中,(大约从2003年开始),
a.out
不包含确切的地址,而是包含相对地址和内部映射表。这使操作系统能够在每次运行程序时更改程序地址,以阻止一些简单的恶意软件攻击