5.2.3 地址重定位与地址保护

1.相对地址和绝对地址

(1)相对地址

相对地址又称为逻辑地址或虚地址,用户编程序时所用的地址,是指程序中的每条指令和数据所在的位置,是相对于某个基准量编址时所使用的地址。它的基本单位可与内存的基本单位相同,也可以不相同。通常首地址为0。用户程序经过汇编或编译后产生的目标代码,通常采用相对地址的形式,但不能使用相对地址在内存中读取信息。

(2)绝对地址

绝对地址又叫做内存地址、物理地址或实地址,将内存分成若干个大小相等的存储单元,每个单元给一个编号,这个编号称为内存地址,它是确定实际存储单元在存储器中物理位置时使用的地址,即内存中存储单元的地址。绝对地址可以直接寻址。

2.作业地址空间

作业地址空间也称为程序地址空间、逻辑地址空间或虚地址空间。它是程序员编写程序时所使用地址的全体,或者编译或汇编程序对源程序加工处理后产生的目的程序所限定的地址的全体。它的编址总是从0开始的,可以是一维线性空间,也可以是多维空间。

3.存储空间

存储空间又称为物理地址空间。存储空间是内存中所有实际的物理存储单元的集合,是由存储地址总线扫描出来的空间,它是一个一维线性空间。存储空间的大小由存储器的实际内容来决定,它是程序运行的场所。

4.地址重定位

可执行程序装入内存时,逻辑地址与物理地址往往是不相符的,必须通过一种地址转换机制将逻辑地址转换成绝对地址,程序才能正确执行。将逻辑地址转换成物理地址的工作称为“重定位”或地址转换。实现该过程的机构称为重定位机构。根据重定位发生的时间不同,重定位的方式有“静态重定位”和“动态重定位”两种。

(1)静态重定位

在程序执行之前,将指令地址和数据地址全部转换成绝对地址,称为静态重定位。在其执行过程中不再进行地址转换。程序必须存放在连续的内存空间,不允许程序在执行期间移动位置。

(2)动态重定位

先将程序装入所分配的内存区域中,每执行一条指令时,由硬件地址转换机构进行重定位,即将重定位推迟到每条指令执行时才进行,称为动态重定位。程序不必存放在连续的内存空间,并允许程序在主存中移动。

5.存储保护

在多道程序环境下,主存中总是同时存在着多道程序。为了确保各道程序都能在系统指定的存储范围内操作,互不干扰,存储管理还应具有存储保护功能,以防止由于某道程序的错误而破坏系统程序的正常运行。存储保护涉及地址越界保护和信息存取保护,主要由硬件提供,但也要有相应的软件配合。许多系统采取多级保护方式。

地址越界保护就是操作系统对进程运行时所产生的所有主存访问地址进行检查,确保进程只能访问自己的主存区。信息存取保护就是当进程访问分配给自己的主存区时,要对其访问权限进行检查,确保数据的安全性和完整性。