【操作系统】分区存储管理(固定/动态分区、碎片)
考点频率★★★★☆选择题常考是理解后续页式/段式存储的基础难度⭐⭐建议重点掌握两种分区方式的特点、碎片的分类、四种分配算法的优缺点1️⃣ 什么是分区存储管理分区存储管理是最早的多道程序存储管理方式也是最直观的内存管理方式将内存划分为若干个连续区域每个区域装入一道程序。分区存储的核心问题每个分区应该多大分区数量应该是多少早期解决这两个问题的思路出现了两种方案——固定分区和动态分区。2️⃣ 固定分区Fixed Partitioning2.1 原理操作系统在运行前将内存划分为若干个大小固定的分区。每个分区可以装入一个程序分区大小在系统运行期间不能改变。当程序到达时系统将它分配到能够容纳它的最小分区中。2.2 分区数量与大小分区数量在系统生成时确定如分为4个区8MB、16MB、32MB、64MB分区大小可以相等也可以不等通常不等以适应不同大小的程序2.3 优缺点优点缺点实现非常简单管理开销极小内部碎片程序比分配到的分区小分区内剩余空间被浪费且无法被其他程序利用例如程序10MB分区16MB浪费6MB分配速度快只需查表分区数量固定多道程序并发度受限适用于单道批处理或嵌入式系统程序不能大于最大分区否则无法运行2.4 内部碎片Internal Fragmentation分配给程序的存储区域中未被程序使用的那部分空间。它属于某个分区内部无法被其他程序利用。固定分区是内部碎片的典型来源。3️⃣ 动态分区Dynamic Partitioning3.1 原理分区不是预先固定的而是按程序的实际需求动态创建。程序装入时系统从空闲内存中分配一个恰好能满足需求的连续区域。3.2 分配过程程序到达时系统在空闲区列表中寻找一个足够大的空闲块如果找到将该空闲块的一部分分配给程序剩余部分继续作为空闲区程序运行结束后释放整个分区与相邻的空闲区合并3.3 优缺点优点缺点没有内部碎片分区大小完全匹配程序需求外部碎片经过多次分配和释放后内存中会出现许多不连续的小空闲块内存利用率比固定分区高分配算法比固定分区复杂程序大小不受分区大小限制需要定期进行紧缩Compaction来整理碎片3.4 外部碎片External Fragmentation内存中散布的、总和可能很大但每个碎片都不够大、无法满足任何程序加载需求的零散空闲块。外部碎片只有通过紧缩Compaction将内存中散布的空闲块汇集到一处才能消除但紧缩需要大量的CPU时间代价昂贵。4️⃣ 固定分区 vs 动态分区对比项固定分区动态分区分区大小固定不变按程序需求动态创建分区数量固定动态变化内部碎片有无外部碎片无有内存利用率较低较高是否需要紧缩否是外部碎片积累到一定程度时硬件复杂度低较高5️⃣ 动态分区的空闲区分配算法这是软考中一个相对独立的考点。当系统需要为一个新程序分配空闲区时可以从空闲区列表中选择一个合适的块分配算法的好坏直接影响外部碎片的产生速度和内存利用率。算法思路优点缺点首次适应First Fit从头开始查找选择第一个能满足要求的空闲区简单、速度较快大块保留在尾部可能在低地址产生大量碎片最佳适应Best Fit从所有空闲区中选择与程序需求最接近即剩余最小的空闲区尽量保留大块空闲区产生大量极小的碎片难以利用查找速度慢最坏适应Worst Fit选择最大的空闲区分割后剩余的仍然较大碎片相对均匀不易产生“难以利用的小碎片”查找速度较快会破坏大块空闲区可能使大程序无法装入循环首次适应Next Fit从上次查找结束的位置开始查找第一个能满足要求的空闲区分配更均匀避免低地址被“重点关照”导致碎片集中高地址部分可能很快被消耗掉软考常考给定空闲区列表和程序大小要求选择对应的分配结果。6️⃣ 碎片问题的总结易混淆点碎片类型产生场景能否消除消除方法内部碎片固定分区、分页存储最后一页无法消除只能减少分区大小合理设置、减小页大小外部碎片动态分区、分段存储可以消除紧缩内存搬移一句话区分内部碎片是“分区内部没用的空间”外部碎片是“分区之间散落的零碎空间”。7️⃣ 经典例题例题1下列哪个存储管理方式会产生外部碎片A. 固定分区B. 动态分区C. 分页存储管理D. 固定分区 分页混合解析固定分区产生内部碎片动态分区产生外部碎片分页存储管理后续会讲无外部碎片。选B。例题2计算某动态分区系统中初始空闲区为1024KB。现有进程按以下顺序到达依次P1申请300KBP2申请200KBP3申请400KBP1释放P4申请150KB。采用首次适应First Fit算法求P1释放后空闲区的分布。解析初始[1024]P1分配300KB空闲区[724]P2分配200KB空闲区[524]P3分配400KB空闲区[124]P1释放300KB空闲区变为[300][124]按地址顺序300KB空闲块在前124KB空闲块在后答案空闲区为两个块300KB 和 124KB按地址顺序。8️⃣ 记忆口诀固定分区内碎片动态分区外碎片。首次适应找首个最佳适应找最小。最坏适应找最大循环适应接着找。9️⃣ 小测验评论区对答案某动态分区系统采用首次适应算法空闲区列表按地址顺序为[50KB, 120KB, 80KB, 200KB]。现有三个进程依次到达并请求内存P1请求60KBP2请求100KBP3请求70KB。分配完成后空闲区列表变为 。A.[50KB, 20KB, 80KB, 100KB]B.[50KB, 20KB, 10KB, 100KB]C.[50KB, 20KB, 10KB, 80KB]D.[50KB, 20KB, 80KB]本专栏日更2篇点击头像 → 专栏《软考中级高频考点》订阅第一时间接收新内容#软考中级 #软件设计师 #分区存储 #固定分区 #动态分区 #碎片 #操作系统