动态重定位中,指令中的地址变换是在装入内存时进行的这句话对吗
时间: 2024-02-09 20:07:11 浏览: 100
这句话是不准确的。在动态重定位中,地址变换是在程序执行期间进行的。在装入内存时,程序的地址是未知的,因此需要在程序执行期间,通过一些机制来实现地址的动态重定位。具体地说,当程序中出现需要被重定位的地址时,首先会先计算出这个地址在内存中的实际位置,然后再进行相应的操作。这个计算实际位置的过程是在程序执行期间完成的。
相关问题
什么是静态地址重定位?什么是动态地址重定位?两者有什么区别?
静态地址重定位是指在程序编译时确定程序中每个变量和代码段的内存地址,并将其写入可执行文件中。这样,在程序加载时,操作系统将可执行文件中的内存地址映射到实际的内存地址,从而保证程序正常运行。
动态地址重定位是指程序在运行时需要访问的内存地址是在运行时才能确定的,因此需要在程序执行时进行地址重定位。通常,操作系统会为程序分配虚拟内存地址,程序在访问内存时先访问虚拟内存地址,然后由操作系统将虚拟地址转换成实际的物理内存地址。
两者的区别在于,静态地址重定位是在编译时确定内存地址,因此程序在加载时就知道每个变量和代码段的内存地址,运行时不需要进行地址重定位。而动态地址重定位是在程序运行时进行地址重定位,程序在访问内存时先访问虚拟内存地址,然后由操作系统将虚拟地址转换成实际的物理内存地址。
存储管理中,地址静态重定位的时机是
地址静态重定位是指程序被加载到内存中时,程序的绝对地址已经确定,不需要在运行时进行地址的修改。因此,地址静态重定位的时机是程序被加载到内存中的时候。
在程序被编译成目标代码后,需要进行链接操作将不同的目标文件组合成一个可执行文件。链接器会将目标文件中的相对地址转换为绝对地址,并将程序的入口地址等信息写入可执行文件的头部。在程序被加载到内存中时,操作系统会将可执行文件的头部信息读取到内存中,并根据头部信息将程序加载到指定的内存地址。此时,程序的绝对地址已经确定,不需要再进行地址的修改,因此地址静态重定位也就完成了。