清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 静态重定位的优点是不需要硬件支持。但是,使用 静态重定位方法进行地址变换无法实现虚拟存储器 这是因为,虚拟存储器呈现在用户面前的是一个在 物理上只受内存和外存总容量限制的存储系统,这 要求存储管理系统只把进程执行时频繁使用和立即 需要的指令与数据等存放在内存中,而把那些暂时 不需要的部分存放在外存中,待需要时自动调入, 以提高内存的利用率和并行执行的作业道数。显然, 这是与静态重定位方法矛盾的,静态重定位方法将 程序一旦装入内存之后就不能再移动,并且必须在 程序执行之前将有关部分全部装入 静态重定位的另一个缺点是必须占用连续的内存空 间,这就难以做到程序和数据的共享
静态重定位的优点是不需要硬件支持。但是,使用 静态重定位方法进行地址变换无法实现虚拟存储器。 这是因为,虚拟存储器呈现在用户面前的是一个在 物理上只受内存和外存总容量限制的存储系统,这 要求存储管理系统只把进程执行时频繁使用和立即 需要的指令与数据等存放在内存中,而把那些暂时 不需要的部分存放在外存中,待需要时自动调入, 以提高内存的利用率和并行执行的作业道数。显然, 这是与静态重定位方法矛盾的,静态重定位方法将 程序一旦装入内存之后就不能再移动,并且必须在 程序执行之前将有关部分全部装入。 静态重定位的另一个缺点是必须占用连续的内存空 间,这就难以做到程序和数据的共享
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 2.动态地址重定位 动态地址重定位( dynamic address relocation)是在 程序执行过程中,在CPU访问内存之前,将要访问 的程序或数据地址转换成内存地址。动态重定位依 靠硬件地址变换机构完成。 地址重定位机构需要一个(或多个基地址寄存器BR 和一个(或多个程序虚拟地址寄存器VR。指令或数 据的内存地址MA与虚拟地址的关系为 MA=(BR)+(r) 这里,(BR与(VR分别表示寄存器BR与VR中的内 容。 动态重定位过程可参看图53
2. 动态地址重定位 动态地址重定位(dynamic address relocation)是在 程序执行过程中,在CPU访问内存之前,将要访问 的程序或数据地址转换成内存地址。动态重定位依 靠硬件地址变换机构完成。 地址重定位机构需要一个(或多个)基地址寄存器BR 和一个(或多个)程序虚拟地址寄存器VR。指令或数 据的内存地址MA与虚拟地址的关系为: MA=(BR)+ (VR) 这里,(BR)与(VR)分别表示寄存器BR与VR中的内 容。 动态重定位过程可参看图5.3
清华大学出版社 TSINGHUA UNIVERSITY PRESS BR1100 LOAD A500 1000 VR 100 LOAD A500 500 1500 500 12345 12345 虚拟空间 内存空间 图53动态地址重定位
图5.3 动态地址重定位
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 其具体过程是: (1)设置基地址寄存器BR,虚拟地址寄存器VR (2)将程序段装入内存,且将其占用的内存区首地址 送BR中。例如,在图53中,(BR=1006 (3)在程序执行过程中,将所要访问的虚拟地址送入 VR中,例如在图53中执行 LOADA500语句时, 将所要访问的虚拟地址500放入VR中。 (4)地址变换机构把ⅤR和BR的内容相加,得到实际 访问的物理地址
其具体过程是: (1) 设置基地址寄存器BR,虚拟地址寄存器VR。 (2) 将程序段装入内存,且将其占用的内存区首地址 送BR中。例如,在图5.3中,(BR)=1000 (3) 在程序执行过程中,将所要访问的虚拟地址送入 VR中,例如在图5.3中执行LOAD A 500语句时 , 将所要访问的虚拟地址500放入VR中。 (4) 地址变换机构把VR和BR的内容相加,得到实际 访问的物理地址
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 动态重定位的主要优点有: (1)可以对内存进行非连续分配。显然,对于同一进 程的各分散程序段,只要把各程序段在内存中的首 地址统一存放在不同的BR中,则可以由地址变换 机构变换得到正确的内存地址。 (2)动态重定位提供了实现虚拟存储器的基础。因为 动态重定位不要求在作业执行前为所有程序分配内 存,也就是说,可以部分地、动态地分配内存。从 而,可以在动态重定位的基础上,在执行期间采用 请求方式为那些不在内存中的程序段分配内存,以 达到内存扩充的目的。 (3)有利于程序段的共享
动态重定位的主要优点有: (1) 可以对内存进行非连续分配。显然,对于同一进 程的各分散程序段,只要把各程序段在内存中的首 地址统一存放在不同的BR中,则可以由地址变换 机构变换得到正确的内存地址。 (2) 动态重定位提供了实现虚拟存储器的基础。因为 动态重定位不要求在作业执行前为所有程序分配内 存,也就是说,可以部分地、动态地分配内存。从 而,可以在动态重定位的基础上,在执行期间采用 请求方式为那些不在内存中的程序段分配内存,以 达到内存扩充的目的。 (3) 有利于程序段的共享