Linux操作系统:地址空间与重定位

用户程序的地址空间内存也称主存 , 是指CPU能直接存取指令和数据的存储器 , 是现代计算机系统进行操作的中心 。
外存也称辅存 , 是指一些外部的存储设备 , 例如硬盘、软盘和磁带等存储器 。用户的程序和数据 , 通过I/O系统接口 , 从外部设备中读到内存中才能运行 。

Linux操作系统:地址空间与重定位

文章插图
 
典型存储器层次结构
按照速度、容量和成本划分 , 存储器系统构成一个层次结构 , 如下图所示 。
Linux操作系统:地址空间与重定位

文章插图
 
重定位的概念逻辑地址:用户程序的目标模块都以0为基地址顺序编址的 , 这种地址称为逻辑地址 , 也称为相对地址 。
物理地址:内存中各物理存储单元的地址是从统一的基地址开始顺序编址的 , 这种地址称为物理地址 , 也称为绝对地址 。
逻辑地址空间:由程序中逻辑地址组成的地址范围叫做逻辑地址空间 , 或简称为地址空间 。
物理地址空间:由内存中一系列存储单元所限定的地址范围称作物理地址空间 , 或简称为物理空间 , 内存空间 。
重定位:程序和数据装入内存时 , 需对目标程序中的地址进行修改 。这种把逻辑地址转变为内存物理地址的过程称作重定位 。
Linux操作系统:地址空间与重定位

文章插图
【Linux操作系统:地址空间与重定位】 
对程序进行重定位的技术按重定位的时机可分为静态重定位和动态重定位两种 。
静态重定位静态重定位是在目标程序装入内存时 , 由装入程序对目标程序中的指令和数据的地址进行修改 , 即把程序的逻辑地址都改成实际的内存地址 。静态重定位的时机是在程序装入时一次完成 , 在程序运行期间不再进行重定位 。
Linux操作系统:地址空间与重定位

文章插图
 
动态重定位动态重定位是在程序执行期间 , 每次访问内存之前进行重定位 。动态重定位靠硬件地址转换机构实现 。
Linux操作系统:地址空间与重定位

文章插图
 




    推荐阅读