某伙伴系统的最小内存块为4KB,可用块按2的幂次拆分。进程申请13KB内存,暂不计管理开销,系统应分配的块大小及块内未使用空间分别是()。
伙伴系统提供4、8、16、32KB等2的幂次块。13KB放不进8KB,向上取最近的16KB块,因此块内剩余16-13=3KB。
选项分析
错误。伙伴系统不提供任意13KB大小的标准块。
正确。向上取16KB,内部未使用3KB。
错误。20KB不是以4KB为最小单位的2次幂阶块。
错误。存在更小且足够容纳请求的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内部碎片。