乐趣区

关于后端:重定位

1. 什么是重定位

可执行文件中代码以及数据的运行时内存地址是链接器指定的,确定程序运行时地址的过程就是重定位 (Relocation)。
操作系统将逻辑地址转变为物理地址的过程,也就是对目标程序中的指令和数据进行批改的过程叫重定位。

2. 为什么重定位

因为一个作业装入到与其地址空间不统一的存储空间,所以对无关地址局部进行调整

3. 何时重定位

1) 程序编译连贯时
2) 程序装入内存。
3) 程序执行时

4. 重定位类型

1) 动态重定位

在程序执行之前进行重定位,它依据作业将要装入的内存起始地位,间接批改作业中的无关应用地址的指令。地址变换通常是在装入时一次实现的,当前不再扭转。

长处:

  • 无需硬件反对

毛病:

  • 程序重定位之后就不能在内存中挪动;
  • 要求程序有 间断 的存储空间;
  • 用户之间难以共享主存中的同一程序正本

2) 动静重定位

在程序执行过程中,CPU 每次拜访内存单元之前才进行地址变换,地址重定位。

长处:

  • 用户程序在执行过程中,能够动静申请存储空间和在主存中挪动

毛病:

  • 须要硬件的反对
退出移动版