48

问答题 48 /58

为什么静态重定位后的程序在内存中不能移动?为什么动态重定位的程序在内存中可以移动?

参考答案

静态重定位后的程序在内存中不能移动的原因如下:静态重定位后的程序的代码发生了变化,由原来逻辑地址的程序已经变为物理地址的程序,按物理地址的方式运行,因此不能再进行移动。动态重定位的程序在内存中可以移动的原因如下:动态重定位是在程序运行过程中由硬件进行地址变换,变换的结果存放在内存地址寄存器中。程序代码并没有发生变化,仍然是逻辑地址的代码,按逻辑地址的方式运行。因此,在内存中移动程序代码之后,仅需要根据代码新的起始位置,重新设定基地址寄存器的值。
牛客网,程序员必备求职神器
QQ群:169195721
微 信:www_nowcoder_com 关注
微 博:牛客网 关注

扫一扫,把题目装进口袋