软件设计师 · 高频练习

伙伴系统最小块4KB,申请13KB时为什么分配16KB?

中级 单选题 第 1098 题 较难 软件设计师伙伴系统内存分配内部碎片操作系统
题目

某伙伴系统的最小内存块为4KB,可用块按2的幂次拆分。进程申请13KB内存,暂不计管理开销,系统应分配的块大小及块内未使用空间分别是()。

A 13KB,0KB
B 16KB,3KB
C 20KB,7KB
D 32KB,19KB
题目类型:原创高频练习题 用途:用于帮助理解软件设计师相关考点和答案解析,不等同于官方真题。
正确答案
B
答案解析

伙伴系统提供4、8、16、32KB等2的幂次块。13KB放不进8KB,向上取最近的16KB块,因此块内剩余16-13=3KB。

选项分析

A

错误。伙伴系统不提供任意13KB大小的标准块。

B

正确。向上取16KB,内部未使用3KB。

C

错误。20KB不是以4KB为最小单位的2次幂阶块。

D

错误。存在更小且足够容纳请求的16KB块,无需直接分配32KB。

本题为什么容易错

“按2的幂”不是把13向上取到2的幂16后再乘4,而是以最小块4KB为起点形成4、8、16、32序列。两种理解混淆会算到更大块。

先看结论

简短答案

伙伴系统最小块4KB,申请13KB时为什么分配16KB,正确答案是 B(16KB,3KB)。伙伴系统提供4、8、16、32KB等2的幂次块。13KB放不进8KB,向上取最近的16KB块,因此块内剩余16-13=3KB。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
13KB,0KB 本题干扰项 错误。伙伴系统不提供任意13KB大小的标准块。 看到该词不要急着选,先判断是否真正解决题干问题
16KB,3KB 本题正确答案 正确。向上取16KB,内部未使用3KB。 看到题干核心场景时优先联想到它
20KB,7KB 本题干扰项 错误。20KB不是以4KB为最小单位的2次幂阶块。 看到该词不要急着选,先判断是否真正解决题干问题
32KB,19KB 本题干扰项 错误。存在更小且足够容纳请求的16KB块,无需直接分配32KB。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 13KB,0KB:错误。伙伴系统不提供任意13KB大小的标准块。
  • 20KB,7KB:错误。20KB不是以4KB为最小单位的2次幂阶块。
  • 32KB,19KB:错误。存在更小且足够容纳请求的16KB块,无需直接分配32KB。
复习

知识点详解

伙伴系统从大块开始按一半拆分,每个块都有唯一伙伴,二者地址满足特定配对关系。申请进入能容纳它的最小阶次块;释放时若伙伴同阶且空闲,就合并为上一阶,重复检查。

备考速记

伙伴块只会对半拆,申请向上找最近一档;块里剩下的是内部碎片。

操作系统在操作系统场景中的作用

若最小块4KB,申请17KB就要进入32KB,内部碎片15KB。伙伴系统换来快速拆分与合并,但对刚超过阶次边界的请求可能浪费较多空间。

拓展

同类题怎么考

  • 根据请求大小确定伙伴系统分配阶次。
  • 计算块内碎片并判断释放后的伙伴合并。
操作系统在软件设计师软考中的考法

先确认最小块和阶次序列,再向上取整。问碎片时分清块内剩余是内部碎片,空闲块之间难以利用才是外部碎片。

解题思路

把可选块列出来就不容易错:4、8、16、32。13刚超过8,只能进入16;题目问块内未使用空间,所以是3KB,选B。它属于内部碎片,不是两块空闲区之间的外部碎片。

考点定位

伙伴系统通过不断二分大块获得合适阶次,释放时只有地址匹配的伙伴块都空闲才可逐级合并。

易错提醒

  • 把3KB称为外部碎片。
  • 释放16KB块后,见到任意相邻16KB空闲就合并,忽略必须是配对伙伴。
  • 申请恰好8KB时仍向上分到16KB。

备考提示

  • 先列阶次块,再找第一个不小于请求的块。
  • 复习合并时同时判断大小相同、地址配对和双方空闲。

你可能还想了解

  • 伙伴系统块大小怎么确定?
  • 13KB申请为什么不能分13KB?
  • 伙伴块满足什么条件才能合并?

本文小结

以4KB为最小块时,伙伴系统块序列为4、8、16、32KB;13KB申请进入16KB块,产生3KB内部碎片。