在操作系统中存储器的重定位分为两种:静态重定位和动态重定位。所谓的重定位即把逻辑地址转换成绝对地址。
(1)静态重定位
在装入一个作业时,把作业中的指令地址和数据地址全部转换成绝对地址。这种转换工作是在作业开始前集中完成的,在作业执行过程中无需再进行地址转换。所以称为“静态重定位”。
静态重定位优点:无需硬件支持
(2)动态重定位
在装入一个作业时,不进行地址转换,而是直接把作业装到分配的主区域中。在作业执行过程中,每当执行一条指令时都由硬件的地址转换机构转换成绝对地址。这种方式的地址转换是在作业执行时动态完成的,所以称为动态重定位。
动态重定位由软件(操作系统)和硬件(地址转换机构)相互配合来实现。动态重定位的系统支持“程序浮动”,而静态重定位则不能。
动态重定位的优点是:
·程序可在内存中移动,当程序移动后,只要将新的主存区域的首地址放进基址寄存器中就可以了;
·易实现程序共享;
·有可能提供虚拟存储空间。
采用动态重定位的系统支持程序浮动,而采用静态重定位的系统不支持程序浮动。