Appearance
408
操作系统
OS-03-08 页框分配策略
一、定位信息
- 所属圈层:核心层
- 前置知识回顾:理解请求页式管理的基本流程(缺页中断、页面置换),知道物理内存由若干页框组成,进程的页面按需调入内存。
- 知识网络位置:本单元解决"每个进程应该分到多少个页框"的问题,是页面置换算法(OS-03-09)的前提。页框分配策略直接影响系统性能——分配太少会导致频繁缺页,分配太多会减少可并发的进程数。
- 考点热度等级:M级(中频常考)——分配策略的基本概念和驻留集概念常出现在选择题中。
二、知识点讲解
2.1 驻留集(Resident Set)
驻留集是指每个进程当前在内存中的页面集合。驻留集大小的确定是页框分配策略的核心问题。
驻留集太小:进程频繁缺页,产生抖动(Thrashing)。 驻留集太大:占用过多内存,减少并发进程数,降低CPU利用率。
2.2 固定分配 vs 可变分配
根据进程驻留集大小是否可变,分为:
| 分配策略 | 说明 | 优点 | 缺点 |
|---|---|---|---|
| 固定分配 | 进程创建时确定驻留集大小,运行期间不变 | 实现简单,可预测 | 不灵活,无法适应程序行为变化 |
| 可变分配 | 根据进程缺页率动态调整驻留集大小 | 灵活,性能更好 | 实现复杂 |
2.3 局部置换 vs 全局置换
当需要置换页面时,选择范围不同:
| 置换范围 | 说明 | 优点 | 缺点 |
|---|---|---|---|
| 局部置换 | 只能从该进程自己的页面中选择牺牲页 | 不影响其他进程 | 可能无法充分利用内存 |
| 全局置换 | 可以从所有进程的页面中选择牺牲页 | 内存利用率高 | 可能影响其他进程的性能 |
组合方式:
- 固定分配 + 局部置换:每个进程有固定的页框数,只能替换自己的页面
- 可变分配 + 全局置换:最灵活的方式,进程缺页时可以从任何进程获取页框
- 可变分配 + 局部置换:根据缺页率调整进程的页框数,但只能替换自己的页面
2.4 分配算法
平均分配:将可用页框平均分配给所有进程。简单但不合理——小程序浪费,大程序不够。
按比例分配:根据进程大小按比例分配页框。设进程 的大小为 ,所有进程总大小为 ,可用页框总数为 ,则进程 分配的页框数 。
优先级分配:根据进程优先级分配页框,高优先级进程获得更多页框。
2.5 调入策略
预调页(Pre-paging):在调入缺页时,同时调入相邻的若干页面。利用空间局部性,减少未来的缺页次数。缺点是可能调入不需要的页面。
请求调页(Demand Paging):只在需要时才调入页面。简单可靠,但缺页次数可能较多。
三、记忆与理解辅助
1. 类比记忆:页框分配就像图书馆给每个读者分配书架空间——固定分配是每人一个书架,可变分配是根据借书量动态调整。局部置换是只能还自己的书来腾空间,全局置换是可以借别人还的书。
2. 口诀:"驻留集大小要适中,太小抖动太大浪费;固定可变两策略,局部全局两范围。"
3. 分配策略组合对比表:
| 组合 | 驻留集大小 | 置换范围 | 灵活性 | 典型应用 |
|---|---|---|---|---|
| 固定+局部 | 固定 | 自己的页面 | 低 | 简单系统 |
| 可变+全局 | 可变 | 所有进程 | 高 | Unix |
| 可变+局部 | 可变 | 自己的页面 | 中 | 部分实时系统 |
4. 预调页 vs 请求调页对比:
| 对比项 | 预调页 | 请求调页 |
|---|---|---|
| 调入时机 | 提前调入相邻页面 | 仅在缺页时调入 |
| 利用原理 | 空间局部性 | - |
| 缺页次数 | 较少 | 较多 |
| 浪费风险 | 可能调入不需要的页面 | 无浪费 |
| 实现复杂度 | 较高 | 简单 |
四、例题与精解
例题1(基础巩固)
题目:某系统有 个空闲页框,现有3个进程A、B、C,大小分别为 页、 页、 页。若采用按比例分配策略,每个进程应分配多少个页框?
命题意图:考查按比例分配算法的计算。
精解:
1. 审题分析:总页框数 ,进程大小分别为200、300、500,总大小 。
2. 解题思路:按公式 计算。
3. 完整步骤:
- 进程A: 个页框
- 进程B: 个页框
- 进程C: 个页框
- 验证: ✓
4. 方法反思:按比例分配比平均分配更合理——大进程获得更多页框。但这种静态分配无法适应进程运行时行为的变化,可变分配策略更灵活。
例题2(中等提升)
题目:某系统采用可变分配+局部置换策略。进程P当前有 个页框,缺页率为 。系统设定的缺页率上限为 ,下限为 。每次调整增减 个页框。问: (1)系统应如何调整进程P的页框数? (2)若调整后缺页率降为 ,是否需要继续调整?
命题意图:考查可变分配策略中根据缺页率动态调整的机制。
精解:
1. 审题分析:当前缺页率 远高于上限 ,需要增加页框。调整后 在 范围内。
2. 解题思路:比较缺页率与上下限,决定增减页框。
3. 完整步骤:
(1)当前缺页率 上限 :
- 系统为进程P增加 个页框,变为 个页框
- 若缺页率仍高于 ,继续增加,直到缺页率降至 范围内
(2)调整后缺页率 ,在 范围内:
- 不需要继续调整。驻留集大小维持在当前水平。
4. 方法反思:可变分配的核心思想是"缺页率驱动"——缺页率高了就多给页框,低了就回收页框。这是一种反馈控制机制,类似于CPU调度中的多级反馈队列。
五、考情分析
- 考查频次:页框分配策略在近5年真题中出现约2-3次。
- 常见题型:选择题(分配策略判断、驻留集概念)、综合题(与置换算法结合)。
- 分值占比:选择题2分。
- 命题趋势:单独出题较少,常作为虚拟内存综合题的背景知识。需要理解固定/可变分配、局部/全局置换的区别。基于大纲与命题规律推测。
六、易错点提醒
错误表现:混淆"固定分配"和"可变分配"与"局部置换"和"全局置换"的组合关系。 错误原因:将两个维度的分类混为一谈。 正确理解/做法:这是两个独立的维度——"分配"决定每个进程有多少页框,"置换"决定从哪个范围选牺牲页。常见组合有固定+局部、可变+全局、可变+局部。
错误表现:认为按比例分配一定比平均分配好。 错误原因:忽略了按比例分配也有局限性。 正确理解/做法:按比例分配虽然考虑了进程大小,但没有考虑进程的访问特征。一个大进程如果大部分页面不活跃,分配太多页框是浪费。
错误表现:认为预调页一定比请求调页好。 错误原因:只看到预调页减少缺页次数的优点,忽略了可能调入不需要页面的缺点。 正确理解/做法:预调页利用空间局部性,但如果预调入的页面不被访问,就浪费了磁盘I/O和内存空间。实际系统中通常结合使用两种策略。
七、来源标注
- 依据2026考研统考408大纲
- 依据《操作系统概念》(Operating System Concepts, Silberschatz)第10章
- 依据汤小丹《计算机操作系统》第4版第3章