为什么静态重定位后的程序在内存中不能移动?为什么动态重定位的程序在内存中可以移动?
静态重定位是在程序执行之前由装配程序完成逻辑地址到物理地址的映射,在程序执行过程中按照物理地址寻址,因此程序不能移动。
动态重定位是在程序执行过程中,通过硬件地址变换机构实现逻辑地址向物理地址的转换,因此程序可以移动,只要在移动后更改基址寄存器的值就可以保证程序正常运行。
答:静态重定位后的程序在内存中不能...
用户登录可进行刷题及查看答案
答:静态重定位后的程序在内存中不能移动的原因如下:
静态重定位后的程序的代码发生了变化,由原来逻辑地址的程序已经变为物理地址的程序,按物理地址的方式运行,因此不能再进行移动。
动态重定位的程序在内存中可以移动的原因如下:
动态重定位是在程序运行过程中由硬件进行地址变换,变换的结果存放在内存地址寄存器中。程序代码并没有发生变化,仍然是逻辑地址的代码,按逻辑地址的方式运行。因此,在内存中移动程序代码之后,仅需要根据代码新的起始位置,重新设定基地址寄存器的值。
登录后提交答案