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

珠江路在线   2020年8月5日  【 转载 】 

消费者程序的地址空间

内存也称主存,是指CPU能直接存取指令和数据的存储器,是现代计算机系统进行操作的 核心 。

外存也称辅存,是指一些外部的存储 设施,例如硬盘、软盘和磁带等存储器 。消费者的程序和数据,通过I/O系统接口,从外部 设施中读到内存中 能力运行 。

典型存储器 档次 构造

依照速度、容量和成本划分,存储器系统构成一个 档次 构造,如下图所示 。


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

重定位的概念

逻辑地址:消费者程序的 指标模块都以0为基地址顺序编址的,这种地址称为逻辑地址,也称为 绝对地址 。

物理地址:内存中各物理存储单元的地址是从统一的基地址开始顺序编址的,这种地址称为物理地址,也称为绝对地址 。

逻辑地址空间:由程序中逻辑地址构成的地址 规模叫做逻辑地址空间,或简称为地址空间 。

物理地址空间:由内存中一系列存储单元所限定的地址 规模称作物理地址空间,或简称为物理空间,内存空间 。

重定位:程序和数据装入内存时,需对 指标程序中的地址进行 批改 。这种把逻辑地址改变为内存物理地址的过程称作重定位 。

对程序进行重定位的技术按重定位的 机会可分为静态重定位和动态重定位两种 。

静态重定位

静态重定位是在 指标程序装入内存时,由装入程序对 指标程序中的指令和数据的地址进行 批改,即把程序的逻辑地址都改成实际的内存地址 。静态重定位的 机会是在程序装入时一次 实现,在程序运行期间不再进行重定位 。


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

动态重定位

动态重定位是在程序执行期间,每次 拜访内存之前进行重定位 。动态重定位靠硬件地址转换机构实现 。