首页 > 试题广场 >

用空白链记录内存空白块的主要缺点是()。

[单选题]
用空白链记录内存空白块的主要缺点是()。
  • 链指针占用了大量的空间
  • 分配空间时可能需要一定的查链时间
  • 不好实现"首次适应法"
  • 不好实现"最佳适应法"
链式存储,查表得从头到尾的查,所以慢
发表于 2017-09-12 21:15:48 回复(0)
答案为B选项
选项C,D
C 首次适应,是按地址排序,然后依次找到大小满足要求(比需要的大即可)的内存块,划分出一定大小,剩下空闲块的还在链上。
D 最佳适应,空闲块还是从小到大排序,找到大小最接近的内存块。摘链,多出来的再插入链表。
对于选项C,D,空间地址是递增的,每个空白块的大小不确定,所以这两个算法只需在链表中查找所需大小的空白块,没有好不好实现一说。
对于选项A,指针大小4字节(32位),和指针所指向的空白块相比,其大小基本可以忽略,就算指针很多,占用了空间,但也说明了空白块也很多,所以对比下,指针所占空间基本可以忽略。
B选项:在分配空间的时候,会进行空白块的查找。根据算法的不同,欲分配空间大小的不同,其查找的时间总是不容易计算的。

编辑于 2017-04-07 18:22:42 回复(0)
这里说的空白链的缺点,主要是跟其他空闲内存管理方式做对比吧。用空白链,把所有的空白区域串起来,这样子空白的空间会很零散;而如果用指针碰撞的方法分配内存,那么空白的空间是一整块的,是没有碎片的,一个指针指着已使用内存和未使用内存的分界线。分配内存的时候只需挪动指针,讲分界线往未使用的区域挪,就分配出了新的空间了,这种方式就免去寻找合适的空闲区域了。
发表于 2018-10-07 13:20:37 回复(0)
空白链是有序的。
发表于 2017-12-01 13:36:35 回复(0)
答案是A。管理空闲内存主要有位图和空闲链表两种方法。使用位图方法,首先要将内存分为大小不等的分配单元,每个分配单元只占一位,所以位图的好处是节省内存。如果以1表示占用,0表示空闲,新来一个内存大小占k个分配单元,需要在位图中找到k个连续的0,查找位图中指定长度的0串是非常耗时的操作,所以位图比链表的主要优势并不是节省时间。链表每个指针占4字节,是位图中一位的32倍,链表的主要缺点是链指针占了比较多的空间。
编辑于 2017-03-09 17:20:11 回复(0)
浪费大量空间 大量不对,指针大小4字节(32位),和指针所指向的空白块相比,其大小基本可以忽略,就算指针很多,占用了空间,但也说明了空白块也很多,所以对比下,指针所占空间基本可以忽略。
发表于 2022-02-23 21:55:00 回复(0)
所谓动态分区分配 就是在处理作业的过程中,建立分区,依用户请求的大小分配分区。在分区回收的过程中会涉及一个空间利用效率相关的放置策略,即选择空闲区的策略。常用的放置策略:首次匹配(首次适应算法)最佳匹配(最佳适应算法)最坏匹配(最坏适应算法) 一、首次适应算法(First Fit):该算法从空闲分区链首开始查找,直至找到一个能满足其大小要求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存分配给请求者,余下的空闲分区仍留在空闲分区链 中。 特点: 该算法倾向于使用内存中低地址部分的空闲区,在高地址部分的空闲区很少被利用,从而保留了高地址部分的大空闲区。显然为以后到达的大作业分配大的内存空间创造了条件。 缺点:低地址部分不断被划分,留下许多难以利用、很小的空闲区,而每次查找又都从低地址部分开始,会增加查找的开销。 二、最佳适应算法(Best Fit):该算法总是把既能满足要求,又是最小的空闲分区分配给作业。为了加速查找,该算法要求将所有的空闲区按其大小排序后,以递增顺序形成一个空白链。这样每次找到的第一个满足要求的空闲区,必然是最优的。孤立地看,该算法似乎是最优的,但事实上并不一定。因为每次分配后剩余的空间一定是最小的,在存储器中将留下许多难以利用的小空闲区。同时每次分配后必须重新排序,这也带来了一定的开销。 特点:每次分配给文件的都是最合适该文件大小的分区。 缺点:内存中留下许多难以利用的小的空闲区。 三、最坏适应算法(Worst Fit):最坏适应算法是将输入的作业放置到主存中与它所需大小差距最大的空闲区中。空闲区大小由大到小排序。 特点:尽可能地利用存储器中大的空闲区。 缺点:绝大多数时候都会造成资源的严重浪费甚至是完全无法实现分配。
发表于 2021-05-15 11:49:35 回复(0)
如果用邻近的那个方***出现查找慢么?
发表于 2020-07-19 12:43:02 回复(0)
发表于 2020-05-14 10:22:09 回复(0)
答案为B选项
选项C,D
对于选项A,指针大小4字节(32位),和指针所指向的空白块相比,其大小基本可以忽略,就算指针很多,占用了空间,但也说明了空白块也很多,所以对比下,指针所占空间基本可以忽略。
B选项:在分配空间的时候,会进行空白块的查找。根据算法的不同,欲分配空间大小的不同,其查找的时间总是不容易计算的。
C 首次适应,是按地址排序,然后依次找到大小满足要求(比需要的大即可)的内存块,划分出一定大小,剩下空闲块的还在链上。
D 最佳适应,空闲块还是从小到大排序,找到大小最接近的内存块。摘链,多出来的再插入链表。
对于选项C,D,空间地址是递增的,每个空白块的大小不确定,所以这两个算法只需在链表中查找所需大小的空白块,没有好不好实现一说。

发表于 2017-04-20 20:21:25 回复(0)
链式存储的缺点:随机访问性能差。很明显
发表于 2017-04-16 18:03:09 回复(0)
我觉得这题目的答案选择A也有一定的道理,因为和位图相比较,采用链表肯定要占用的空间会更大。
发表于 2016-12-09 00:52:31 回复(0)
1.在空闲区比较多的情况下,确实会占用比较多的空间,对于有的朋友说"对于选项A,指针大小4字节(32位),和指针所指向的空白块相比可以忽略",我认为这个还是有待考虑,指针所指的空白块也不一定都很大,也有可能有很多很小的块(分区存储严重的碎片问题) ,而且比例也不是绝对的评价标准.
2.确实查找链也不占优势,那位朋友也提到了" 根据算法的不同,欲分配空间大小的不同, 其查找的时间总是不容易计算的",不过这也说明了改善这些因素也是可以减少时间消耗的,不一定是一个不利的导向.但是也有其他朋友提出来了,插入和删除较快,因为空闲区的变动很频繁,那么插入和删除的优势就很明显.
3.具体到主要,这个比较复杂了,换个角度,可以看看为了解决这个问题在技术的发展方向上,是采用什么样的解决或替代方案,主要针对的是哪一个方面.
---我也还没想得很清楚,就讲这一些作为讨论,抛砖引玉,请大家指正.-_-
发表于 2016-11-19 14:20:59 回复(0)
我觉得,应该是链式在进行插入删除和操作的时候很快,所以保持有序比其他存储方式会好很多。
C 首次适应,是按地址排序,然后依次找到大小满足要求(比需要的大即可)的内存块,划分出一定大小,剩下的还在链上。
D 最佳适应,空闲块还是从小到大排序,找到大小最接近的内存块。摘链,多出来的再插入链表。
这些都是链表的删除和插入操作,所以会很快。
链表在查找的时候不占什么优势,所以,我也不知道B该怎么说。
发表于 2016-04-13 11:43:47 回复(0)
链式的一定是有序的吗?如果不是B、D是不是也是缺点呢
发表于 2015-09-03 22:46:22 回复(1)