题目
什么是重定位?静态重定位[1]和动态重定位[2]的区别是什么?各举一例说明。
什么是重定位?静态重定位[1]和动态重定位[2]的区别是什么?各举一例说明。
题目解答
答案
当用户程序要调入内存时,必须把相对地址[3]转换为绝对地址[4],同时要包括对程序中与地址有关的指令进行修改,这一过程称为重定位。
静态重定位是在程序装入时进行,一般通过处理机中一对界地址寄存器[5]来实现。
动态重定位是在程序执行过程中进行的,当处理器访问主存指令时由动态变换机构自动进行地址[6]转换。
解析
步骤 1:定义重定位
重定位是指在程序执行前或执行过程中,将程序中的相对地址转换为绝对地址的过程。相对地址是程序中使用的地址,而绝对地址是程序在内存中的实际地址。
步骤 2:静态重定位
静态重定位是在程序装入内存时进行的。在程序装入内存之前,操作系统会将程序中的相对地址转换为绝对地址,并修改程序中的指令和数据地址。静态重定位通常通过处理机中的界地址寄存器来实现。例如,当一个程序被加载到内存中时,操作系统会将程序中的所有相对地址转换为绝对地址,并将程序中的指令和数据地址修改为绝对地址。
步骤 3:动态重定位
动态重定位是在程序执行过程中进行的。在程序执行过程中,处理器会自动将程序中的相对地址转换为绝对地址。动态重定位通常通过动态变换机构来实现。例如,当处理器访问主存指令时,动态变换机构会自动将程序中的相对地址转换为绝对地址。
重定位是指在程序执行前或执行过程中,将程序中的相对地址转换为绝对地址的过程。相对地址是程序中使用的地址,而绝对地址是程序在内存中的实际地址。
步骤 2:静态重定位
静态重定位是在程序装入内存时进行的。在程序装入内存之前,操作系统会将程序中的相对地址转换为绝对地址,并修改程序中的指令和数据地址。静态重定位通常通过处理机中的界地址寄存器来实现。例如,当一个程序被加载到内存中时,操作系统会将程序中的所有相对地址转换为绝对地址,并将程序中的指令和数据地址修改为绝对地址。
步骤 3:动态重定位
动态重定位是在程序执行过程中进行的。在程序执行过程中,处理器会自动将程序中的相对地址转换为绝对地址。动态重定位通常通过动态变换机构来实现。例如,当处理器访问主存指令时,动态变换机构会自动将程序中的相对地址转换为绝对地址。