Skip to content

408

操作系统

OS-03-08 页框分配策略


一、定位信息

  • 所属圈层:核心层
  • 前置知识回顾:理解请求页式管理的基本流程(缺页中断、页面置换),知道物理内存由若干页框组成,进程的页面按需调入内存。
  • 知识网络位置:本单元解决"每个进程应该分到多少个页框"的问题,是页面置换算法(OS-03-09)的前提。页框分配策略直接影响系统性能——分配太少会导致频繁缺页,分配太多会减少可并发的进程数。
  • 考点热度等级M级(中频常考)——分配策略的基本概念和驻留集概念常出现在选择题中。

二、知识点讲解

2.1 驻留集(Resident Set)

驻留集是指每个进程当前在内存中的页面集合。驻留集大小的确定是页框分配策略的核心问题。

驻留集太小:进程频繁缺页,产生抖动(Thrashing)。 驻留集太大:占用过多内存,减少并发进程数,降低CPU利用率。

2.2 固定分配 vs 可变分配

根据进程驻留集大小是否可变,分为:

分配策略说明优点缺点
固定分配进程创建时确定驻留集大小,运行期间不变实现简单,可预测不灵活,无法适应程序行为变化
可变分配根据进程缺页率动态调整驻留集大小灵活,性能更好实现复杂

2.3 局部置换 vs 全局置换

当需要置换页面时,选择范围不同:

置换范围说明优点缺点
局部置换只能从该进程自己的页面中选择牺牲页不影响其他进程可能无法充分利用内存
全局置换可以从所有进程的页面中选择牺牲页内存利用率高可能影响其他进程的性能

组合方式

  • 固定分配 + 局部置换:每个进程有固定的页框数,只能替换自己的页面
  • 可变分配 + 全局置换:最灵活的方式,进程缺页时可以从任何进程获取页框
  • 可变分配 + 局部置换:根据缺页率调整进程的页框数,但只能替换自己的页面

2.4 分配算法

平均分配:将可用页框平均分配给所有进程。简单但不合理——小程序浪费,大程序不够。

按比例分配:根据进程大小按比例分配页框。设进程 ii 的大小为 sis_i,所有进程总大小为 SS,可用页框总数为 mm,则进程 ii 分配的页框数 ai=si/S×ma_i = \lceil s_i / S \times m \rceil

优先级分配:根据进程优先级分配页框,高优先级进程获得更多页框。

2.5 调入策略

预调页(Pre-paging):在调入缺页时,同时调入相邻的若干页面。利用空间局部性,减少未来的缺页次数。缺点是可能调入不需要的页面。

请求调页(Demand Paging):只在需要时才调入页面。简单可靠,但缺页次数可能较多。


三、记忆与理解辅助

1. 类比记忆:页框分配就像图书馆给每个读者分配书架空间——固定分配是每人一个书架,可变分配是根据借书量动态调整。局部置换是只能还自己的书来腾空间,全局置换是可以借别人还的书。

2. 口诀:"驻留集大小要适中,太小抖动太大浪费;固定可变两策略,局部全局两范围。"

3. 分配策略组合对比表

组合驻留集大小置换范围灵活性典型应用
固定+局部固定自己的页面简单系统
可变+全局可变所有进程Unix
可变+局部可变自己的页面部分实时系统

4. 预调页 vs 请求调页对比

对比项预调页请求调页
调入时机提前调入相邻页面仅在缺页时调入
利用原理空间局部性-
缺页次数较少较多
浪费风险可能调入不需要的页面无浪费
实现复杂度较高简单

四、例题与精解

例题1(基础巩固)

题目:某系统有 100100 个空闲页框,现有3个进程A、B、C,大小分别为 200200 页、 300300 页、 500500 页。若采用按比例分配策略,每个进程应分配多少个页框?

命题意图:考查按比例分配算法的计算。

精解

1. 审题分析:总页框数 m=100m = 100,进程大小分别为200、300、500,总大小 S=1000S = 1000

2. 解题思路:按公式 ai=si/S×ma_i = \lceil s_i / S \times m \rceil 计算。

3. 完整步骤

  • 进程A:aA=200/1000×100=20=20a_A = \lceil 200 / 1000 \times 100 \rceil = \lceil 20 \rceil = 20 个页框
  • 进程B:aB=300/1000×100=30=30a_B = \lceil 300 / 1000 \times 100 \rceil = \lceil 30 \rceil = 30 个页框
  • 进程C:aC=500/1000×100=50=50a_C = \lceil 500 / 1000 \times 100 \rceil = \lceil 50 \rceil = 50 个页框
  • 验证:20+30+50=10020 + 30 + 50 = 100

4. 方法反思:按比例分配比平均分配更合理——大进程获得更多页框。但这种静态分配无法适应进程运行时行为的变化,可变分配策略更灵活。

例题2(中等提升)

题目:某系统采用可变分配+局部置换策略。进程P当前有 55 个页框,缺页率为 20%20\%。系统设定的缺页率上限为 10%10\%,下限为 5%5\%。每次调整增减 11 个页框。问: (1)系统应如何调整进程P的页框数? (2)若调整后缺页率降为 8%8\%,是否需要继续调整?

命题意图:考查可变分配策略中根据缺页率动态调整的机制。

精解

1. 审题分析:当前缺页率 20%20\% 远高于上限 10%10\%,需要增加页框。调整后 8%8\%[5%,10%][5\%,10\%] 范围内。

2. 解题思路:比较缺页率与上下限,决定增减页框。

3. 完整步骤

(1)当前缺页率 20%>20\% > 上限 10%10\%

  • 系统为进程P增加 11 个页框,变为 66 个页框
  • 若缺页率仍高于 10%10\%,继续增加,直到缺页率降至 [5%,10%][5\%,10\%] 范围内

(2)调整后缺页率 8%8\%,在 [5%,10%][5\%,10\%] 范围内:

  • 不需要继续调整。驻留集大小维持在当前水平。

4. 方法反思:可变分配的核心思想是"缺页率驱动"——缺页率高了就多给页框,低了就回收页框。这是一种反馈控制机制,类似于CPU调度中的多级反馈队列。


五、考情分析

  • 考查频次:页框分配策略在近5年真题中出现约2-3次。
  • 常见题型:选择题(分配策略判断、驻留集概念)、综合题(与置换算法结合)。
  • 分值占比:选择题2分。
  • 命题趋势:单独出题较少,常作为虚拟内存综合题的背景知识。需要理解固定/可变分配、局部/全局置换的区别。基于大纲与命题规律推测

六、易错点提醒

  1. 错误表现:混淆"固定分配"和"可变分配"与"局部置换"和"全局置换"的组合关系。 错误原因:将两个维度的分类混为一谈。 正确理解/做法:这是两个独立的维度——"分配"决定每个进程有多少页框,"置换"决定从哪个范围选牺牲页。常见组合有固定+局部、可变+全局、可变+局部。

  2. 错误表现:认为按比例分配一定比平均分配好。 错误原因:忽略了按比例分配也有局限性。 正确理解/做法:按比例分配虽然考虑了进程大小,但没有考虑进程的访问特征。一个大进程如果大部分页面不活跃,分配太多页框是浪费。

  3. 错误表现:认为预调页一定比请求调页好。 错误原因:只看到预调页减少缺页次数的优点,忽略了可能调入不需要页面的缺点。 正确理解/做法:预调页利用空间局部性,但如果预调入的页面不被访问,就浪费了磁盘I/O和内存空间。实际系统中通常结合使用两种策略。


七、来源标注

  • 依据2026考研统考408大纲
  • 依据《操作系统概念》(Operating System Concepts, Silberschatz)第10章
  • 依据汤小丹《计算机操作系统》第4版第3章

考研全科复习资料 - 基于2026考研统考大纲