🏷️ 知识点:动态内存管理

共 4 道相关题目

2017 年第 25 题 操作系统 选择题

某计算机按字节编址,其动态分区内存管理采用最佳适应算法,每次分配和回收内存后都对空闲分区链重新排序。当前空闲分区信息如下表所示。

分区起始地址20K500K1000K200K
分区大小40KB80KB100KB200KB

回收起始地址为 60K、大小为 140KB 的分区后,系统中空闲分区的数量、空闲分区链第一个分区的起始地址和大小分别是( )。

动态内存管理

A. 3、20K、380KB B. 3、500K、80KB C. 4、20K、180KB D. 4、500K、80KB

[tag_link]

正确答案:B

参考 动态内存内存回收过程 ,回收起始地址为 60K、大小为 140KB 的分区时,它与表中第一个分区和第四个分区合并,成为起始地址为 20K、大小为 380KB 的分区,剩余 3 个空闲分区。在回收内存后,算法会对空闲分区链按分区大小由小到大进行排序,表中的第二个分区排第一。所以选择 B。


2024 年第 27 题 操作系统 选择题

回收分区时,仅合并大小相等的空闲分区的算法是()。

动态内存管理

A. 伙伴算法 B. 最佳适应算法 C. 最坏适应算法 D. 首次适应算法

[tag_link]

正确答案:A

A. 伙伴算法 是一种特殊的内存分配算法,他在分配和回收内存时,只合并大小相等的空闲分区。这种算法的优点是简单且执行速度快,但可能会导致内存碎片: B. 最佳适应算法:它在分配内存时,会选择大小最接近所需的空闲分区。这种算法的优点是可以减少内存的浪费,但可能会导致大量的小碎片。 C. 最坏适应算法:它在分配内存时,会选择最大的空闲分区。这种算法的优点是可以减沙内存的碎片,但可能会导致大量的大碎片。 D.首次适应算法:它在分配内存时,会选择第一个满足所需的空闲分区。这种算法的优点是简单且执行速度快,但可能会导致内存的碎片。动态分区分配算法具体参考该节


模拟卷 年第 28 题 操作系统 选择题

某个计算机采用动态分区来分配内存,经过一段时间的运行,现在内存中依地址从小到大存在 100KB、450KB、250KB、200KB 和 600KB 的空闲分区。分配指针现指向地址起始点,继续运行还会有 212KB、417KB、112KB 和 426KB 的进程申请使用内存,那么,能够完全完成分配任务的算法是( )。

A. 首次适应算法 B. 邻近适应算法 C. 最佳适应算法 D. 最坏适应算法

动态内存管理

[tag_link]

正确答案:C

首先,分析四种动态分区分配算法对给定内存请求序列的处理情况。 初始空闲分区按地址顺序为:100KB、450KB、250KB、200KB、600KB。 进程申请序列为:212KB、417KB、112KB、426KB。 总申请内存为 1167KB,小于总空闲内存 1600KB,但分配成功与否取决于算法策略和分区匹配。

对于首次适应算法,从起始地址搜索:212KB 分配至 450KB 分区(剩余 238KB),417KB 分配至 600KB 分区(剩余 183KB),112KB 分配至 238KB 分区(剩余 126KB),但 426KB 无法找到足够大分区(最大剩余为 250KB),因此分配失败。

对于邻近适应算法,从当前指针搜索(初始在起始点):212KB 分配至 450KB 分区(指针移至其后),417KB 分配至 600KB 分区(指针移至末尾后循环回起始),112KB 分配至 238KB 分区(剩余 126KB),但 426KB 搜索时从剩余分区中找不到足够大空间(最大为 250KB),因此分配失败。

对于最佳适应算法,每次选择最小足够大的分区:212KB 分配至 250KB 分区(剩余 38KB),417KB 分配至 450KB 分区(剩余 33KB),112KB 分配至 200KB 分区(剩余 88KB),426KB 分配至 600KB 分区(剩余 174KB),所有请求均成功分配。

对于最坏适应算法,每次选择最大分区:212KB 分配至 600KB 分区(剩余 388KB),417KB 分配至 450KB 分区(剩余 33KB),112KB 分配至 388KB 分区(剩余 276KB),但 426KB 请求时最大剩余分区为 276KB,不足分配,因此失败。

综上,只有最佳适应算法能够完全完成所有分配任务。


2019 年第 32 题 操作系统 选择题

在下列动态分区分配算法中,最容易产生内存碎片的是( )。

动态内存管理

A. 首次适应算法 B. 最坏适应算法 C. 最佳适应算法 D. 循环首次适应算法

[tag_link]

正确答案:C

最佳适应 算法总是匹配与当前大小要求最接近的空闲分区,但是大多数情况下空闲分区的大小不可能完全和当前要求的大小相等,几乎每次分配内存都会产生很小的难以利用的内存块,所以最佳适应算法最容易产生最多的内存碎片,选项 C 正确。