什么是重定位?重定位有哪几种类型2为什么要进行重定位?

什么是重定位?重定位有哪几种类型2为什么要进行重定位?,第1张

1.什么是重定位?由于一个作业装入到与其地址空间不一致的存储空间,对有关地址部分的调整过程称为重定位。2.重定位有哪几种类型?分为静态重定位和动态重定位两种类型。3.为什么要进行重定位?我们写正困做常程序的时候根本不用去关心源尺明变量(常量)的位置,因为源程序在编译的时候它的内存中的位置郡被计算好了。程序装入内存时,系统不会为它重定位。我们需要用到变量雹告 (常量)的时候直接用变量名访问它就行了。有的程序不可避免也要用到变量 (常量),各个变量 (常量)在内存中的位置自然也不相同。既然这些变量没有固定的地址,那么程序在运行的过程中只有重定位,才可以正常地访问相关资源。

将逻辑地址空间重定位到物理地址空间的时机有三种:

1、程序编译连接时。

2、程序装入内存时。

3、程序执行时。

重定位就是把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程。它是实现多道程序在内存中同时运行的基础。重定位有两种,分别是动态重定位与静态重定位。

分类

对程序进行重定位的技术按重定位的时机可分为两种:静态重定位和动态重定位。

静态重定位:是在目标程序装入内存时,由装入程序对目标程序中的指令和数据的地址进行修改,即把程序的逻辑地址都改成实际的地址。对每个程序来说,这种地址变换只是在装入旅弊时一次完成,在程序运行期间不再进行重定位。

动态重定位:是在程序执行期间每次访问内存之拆好族前进行重定位。这种变换是靠硬件地址变换机构实现的。通常采用一个重定位寄存器,其中放有当前正在执行的程序在内存空间中的起始地址,而地址空间中的代袜稿码在装入过程中不发生变化。

静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变,故称为静态重定位。

动态重定位:它不是在程序装入内存时完成的,而是CPU每次访问内存时 由动态地址变换机构(硬件)自动进行把相对地址转换为绝对地址。动态重定位需要软件和硬件相互配合完成。

扩展资料

在装入程序前,系统会计算未使用的内存,然后将程序装入,并记下开始地址。在执行有相对地址的指令时,会将所有的地址加个刚才记下的开御前逗始地址,就叫重定位。

程序放在不连续的实际物理空间中,要进行逻辑地址到物理地址的转换,实现动态重定位一般需要段页式存储管理,页式存储管理用的不是寄存器,使用的是称为page table(页表)的数据结构page table记录了所有逻辑地址到物理地址的转换信息,进程切换的时镇卖候需要冲洗硬件上的page table 。

参考资料来源:百度百科-动态重定位

参考资料来源:百度百科-重悔绝定位


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12494792.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存