解决碎片问题,以及使程序可浮动的最好的办法是采用()技术。
A.静态重定位 B.动态重定位
C.内存静态分配 D.内存动态分配
A. 静态重定位:静态重定位是在程序加载到内存时一次性完成的,一旦完成,程序的各个部分在内存中的位置就固定了,不能再移动。因此,静态重定位不能解决碎片问题,也不能使程序可浮动。
B. 动态重定位:动态重定位是在程序运行时,每执行一条指令,都需要进行一次地址变换。这种方式允许程序在内存中移动,因此可以有效地解决碎片问题,并且使程序可浮动。通过动态重定位,操作系统可以在内存中移动程序,进行内存紧凑操作,从而消除碎片。
C. 内存静态分配:内存静态分配是指在程序编译或加载时,就为程序分配固定大小的内存空间。这种方式不能解决碎片问题,因为一旦分配,内存空间就不能再改变。
D. 内存动态分配:内存动态分配是指在程序运行时根据需要动态地分配和释放内存空间。虽然这种方式可以提高内存的利用率,但它本身并不能解决碎片问题,也不能使程序可浮动。
故而正确答案是 B. 动态重定位。
动态重定位才能实现类似分段存储和分页存储解决碎片问题,动态内存分配的算法还会有外部碎片的问题。个人理解
链接:/questionTerminal/50298e6f4efd42cd885a0912a59d2cbc
静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变。
动态重定位即在程序运行过程中要访问数据时再进行逻辑地址与物理地址的变换(即在逐条指令执行时完成地址映射。
动态内存分配是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不象数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。
内存的静态分配和动态分配的区别主要是两个: 一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。 二是空间不同。堆都是动态分配的,没有静态分配的堆。
我不理解
B
用户登录可进行刷题及查看答案
登录后提交答案