地址重定位

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

## 2. 为什么重定位
由于一个作业装入到与其地址空间不一致的存储空间,所以对有关地址部分进行调整

## 3. 何时重定位

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

## 4. 重定位类型
### 1) 静态重定位
在程序执行之前进行重定位,它根据作业将要装入的内存起始位置,直接修改作业中的有关使用地址的指令。地址变换通常是在装入时一次完成的,以后不再改变。

*优点:*

* 无需硬件支持


*缺点:*

* 程序重定位之后就不能在内存中移动;
* 要求程序有**连续**的存储空间;
* 用户之间难以共享主存中的同一程序副本

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

*优点:*

* 用户程序在执行过程中,可以动态申请存储空间和在主存中移动

*缺点:*

* 需要硬件的支持


 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值