首页 > 试题广场 >

解决碎片问题,以及使程序可浮动的最好的办法是采用()技术。

[单选题]
解决碎片问题,以及使程序可浮动的最好的办法是采用()技术。
  • 静态重定位
  • 动态重定位
  • 内存静态分配
  • 内存动态分配
静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变。

动态重定位即在程序运行过程中要访问数据时再进行逻辑地址与物理地址的变换(即在逐条指令执行时完成地址映射。

动态内存分配是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不象数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。

内存的静态分配和动态分配的区别主要是两个:
一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。
二是空间不同。堆都是动态分配的,没有静态分配的堆。
发表于 2015-06-02 22:45:19 回复(1)
疑惑:
看到大家的解答,关于定义,大家解释的很清楚
只是为什么没有解答题目的问题?
为什么动态分配可以解决碎片和浮动问题?
个人觉得解决动态分配并不能解决碎片问题,动态重定位可以反倒可以解决浮动问题。
发表于 2016-09-24 09:22:09 回复(1)

 内存分配有静态分配和动态分配两种        静态分配在程序编译链接时分配的大小和使用寿命就已经确定,而应用上要求操作系统可以提供给进程运行时申请和释放任意大小内存的功能,这就是内存的动态分配。因此动态分配将不可避免会产生内存碎片的问题,那么什么是内存碎片?内存碎片即“碎片的内存”描述一个系统中所有不可用的空闲内存,这些碎片之所以不能被使用,是因为负责动态分配内存的分配算法使得这些空闲的内存无法使用,这一问题的发生,原因在于这些空闲内存以小且不连续方式出现在不同的位置。因此这个问题的或大或小取决于内存管理算法的实现上。为什么会产生这些小且不连续的空闲内存碎片呢?实际上这些空闲内存碎片存在的方式有两种:a.内部碎片 b.外部碎片 如何解决内存碎片参考:http://blog.csdn.net/pizi0475/article/details/17462399

程序浮动:除了一些特定的情况或者在早期的计算机中,程序在MEMORY中的位置是肯定的,比如会有BOOTLOADER把程序读到一个确定的位置,而现在的计算机基本上这种情况比较少见了,除了一些操作系统的引导过程,这就带来了一个问题,就是在程序(特别是用ASM写的程序)中制定的一些数据的位置是不确定的,比如你原来想读一个1500位置上的数据,但是实际上这个1500到底存了什么是不确定的,所以,采用了相对地址的策略,即所有的数据都是假设程序开始(ORG)位置为0的相对地址.... 所谓程序浮动,就是针对这样一种情况,在运行过程中采取相对地址的技术来实现的

编辑于 2016-08-16 20:57:28 回复(2)


网上有两种答案,不确定哪个正确呀。
编辑于 2016-09-06 14:57:54 回复(0)
解决内存碎片问题的一种有效的方法是移动内存中所有进程的存储区,使它版们相互邻接并权位于内存的某一端,而把全部空闲区留在另一端,形成一个大的空闲分区,这种技术称为“紧凑”。由于经过紧凑后的用户进程在内存中的位置发生了变化,必须采用动态重定位的方法,因此可重定位分区是解决内存碎片问题的有效方法。
发表于 2021-10-21 10:18:49 回复(0)
又是一道无聊的题,选项不是非黑即白而是很模糊,说对也行不对也行
编辑于 2017-09-08 01:18:28 回复(0)
静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变。

动态重定位即在程序运行过程中要访问数据时再进行逻辑地址与物理地址的变换(即在逐条指令执行时完成地址映射。

动态内存分配是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不象数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。

内存的静态分配和动态分配的区别主要是两个:
一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。
二是空间不同。堆都是动态分配的,没有静态分配的堆。
发表于 2017-04-19 19:46:12 回复(0)
静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变。

动态重定位即在程序运行过程中要访问数据时再进行逻辑地址与物理地址的变换(即在逐条指令执行时完成地址映射。

动态内存分配是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不象数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据程序的需要即时分配,且分配的大小就是程序要求的大小。

内存的静态分配和动态分配的区别主要是两个:
一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。
二是空间不同。堆都是动态分配的,没有静态分配的堆。
发表于 2016-09-06 17:14:50 回复(0)
答案错了吧,见试卷http://www.docin.com/p-1025354612.html第五题
发表于 2016-09-03 17:01:07 回复(0)
采用动态重定位目标模块装入内存时无需任何修改,因而装入之后再搬迁也不会影响其正确执行,这对于存储器紧缩、解决碎片问题是极其有利的
题目是要求最好的 是D吧
发表于 2016-06-30 22:52:45 回复(0)
B不是满足可浮动的条件吗
内存动态分配能解决碎片问题?能满足可浮动?动态分配后产生碎片,而且其也不满足可浮动,答案有问题
编辑于 2015-08-09 08:50:25 回复(0)