Appearance
408
操作系统
OS-03-10 抖动与工作集
一、定位信息
- 所属圈层:核心层
- 前置知识回顾:理解请求页式管理和页面置换算法的基本原理,知道缺页中断需要磁盘I/O,耗时远大于内存访问。了解驻留集的概念。
- 知识网络位置:本单元是虚拟内存管理的"极端情况"分析,解释了当内存不足时系统性能急剧下降的原因和对策。抖动与工作集理论是页框分配策略(OS-03-08)的理论依据。
- 考点热度等级:M级(中频常考)——抖动的概念和工作集模型常出现在选择题中。
二、知识点讲解
2.1 抖动(Thrashing)
抖动是指系统花费大量时间在页面的调入调出上,而实际用于执行进程指令的时间很少。CPU利用率随着并发进程数的增加反而急剧下降。
产生原因:系统中并发进程过多(或进程的驻留集太小),每个进程分配到的页框不足以容纳其工作集,导致频繁缺页。一个进程等待页面调入时,CPU切换到另一个进程,该进程也很快缺页……形成恶性循环。
抖动的恶性循环:
- 进程缺页 → 需要磁盘I/O
- 磁盘I/O期间CPU空闲 → 调度另一个进程
- 另一个进程也缺页 → 也需要磁盘I/O
- 所有进程都在等磁盘 → CPU利用率极低
- OS误以为CPU利用率低是因为进程数不够 → 增加更多进程
- 情况更加恶化
2.2 工作集(Working Set)
工作集是指进程在某段时间窗口 内实际访问的页面集合。工作集模型由Denning提出,用于确定进程所需的最小页框数。
工作集窗口 :一个时间参数,表示"最近 次内存访问"。
工作集的含义:如果一个进程的工作集大小为 ,那么该进程至少需要 个页框才能避免频繁缺页。
工作集模型的应用:
- 若进程的驻留集 ≥ 工作集大小,缺页率低
- 若进程的驻留集 < 工作集大小,缺页率急剧上升(抖动)
- OS可以监控每个进程的工作集,确保分配的页框数 ≥ 工作集大小
2.3 抖动的预防与解决
方法一:工作集模型
- 跟踪每个进程的工作集大小
- 确保进程的驻留集 ≥ 工作集大小
- 若内存不足以容纳所有进程的工作集之和,则挂起某些进程
方法二:缺页率(PFF, Page Fault Frequency)控制
- 设定缺页率的上限和下限
- 缺页率 > 上限:增加该进程的页框数
- 缺页率 < 下限:减少该进程的页框数
- 无法再增加页框时,挂起该进程
方法三:减少并发进程数
- 当检测到抖动时,挂起部分进程
- 减少内存竞争,使剩余进程获得足够页框
三、记忆与理解辅助
1. 类比记忆:抖动就像一群人挤在一间小房间里抢座位——人越多,每个人分到的座位越少,大家不断站起来让座(缺页),结果所有人都在忙着换座位,没人能坐下来看书(执行指令)。
2. 口诀:"抖动是恶性循环,缺页太多CPU闲;工作集看窗口内,页面够用不抖动;缺页率高加页框,实在不行挂进程。"
3. 工作集 vs 驻留集对比:
| 对比项 | 工作集 | 驻留集 |
|---|---|---|
| 定义 | 进程实际需要的页面集合 | 进程当前在内存中的页面集合 |
| 由谁决定 | 程序运行行为(客观需求) | OS分配策略(主观分配) |
| 是否可变 | 随时间变化 | 可由OS调整 |
| 关系 | 驻留集应 ≥ 工作集 | 驻留集 < 工作集 → 抖动 |
4. 抖动的因果链:
并发进程过多 → 每进程页框不足 → 缺页率上升 → 磁盘I/O繁忙
→ CPU等待I/O → CPU利用率下降 → OS增加进程 → 更多缺页 → 抖动四、例题与精解
例题1(基础巩固)
题目:某系统有 个物理页框,运行两个进程A和B。进程A的工作集为 ,进程B的工作集为 。当前页框分配:A有2个,B有2个。 (1)是否会发生抖动?为什么? (2)应如何调整页框分配?
命题意图:考查工作集与驻留集的关系及抖动判断。
精解:
1. 审题分析:进程A需要3个页框(工作集大小=3),当前只有2个;进程B同理。
2. 解题思路:比较驻留集与工作集大小,判断是否抖动。
3. 完整步骤:
(1)会发生抖动。
- 进程A的驻留集(2)< 工作集(3):A会频繁缺页
- 进程B的驻留集(2)< 工作集(3):B会频繁缺页
- 两个进程都在频繁缺页,磁盘I/O成为瓶颈,形成抖动
(2)调整方案:
- 进程A分配3个页框,进程B分配1个页框 → A正常,B抖动
- 进程A分配3个页框,进程B分配3个页框 → 需要6个页框,当前只有4个,不够
- 最佳方案:将进程B挂起(或换出到磁盘),将4个页框全部分配给A。待A运行完再运行B。
4. 方法反思:抖动的根本原因是物理内存不足以容纳所有活跃进程的工作集之和。解决方法要么增加内存,要么减少并发进程数。在内存有限的情况下,"挂起进程"是最直接的解决方案。
例题2(中等提升)
题目:某进程在时间窗口 内的页面访问序列为 。 (1)该进程的工作集是什么? (2)若系统为该进程分配 个页框,是否会发生抖动?
命题意图:考查工作集的计算方法。
精解:
1. 审题分析:窗口大小 ,需要找出最近10次访问中涉及的不重复页面。
2. 解题思路:统计窗口内访问的不同页面集合。
3. 完整步骤:
(1)最近10次访问的页面序列:
- 不重复的页面集合:
- 工作集 = ,大小为
(2)驻留集 = 2 < 工作集 = 5:
- 会发生抖动。该进程需要至少5个页框才能避免频繁缺页,只有2个页框远远不够。
4. 方法反思:工作集的计算看似简单,但实际系统中 的选择很关键。 太小不能反映真实的页面需求, 太大可能包含不再需要的页面。实际系统通常使用近似方法(如定期采样)来跟踪工作集。
五、考情分析
- 考查频次:抖动与工作集在近5年真题中出现约2-3次。
- 常见题型:选择题(抖动判断、工作集计算、缺页率控制)、偶尔在综合题中出现。
- 分值占比:选择题2分。
- 命题趋势:近年来倾向于将抖动与页框分配策略、页面置换算法结合考查,形成完整的性能分析场景。基于大纲与命题规律推测。
六、易错点提醒
错误表现:认为抖动就是"缺页率高"。 错误原因:对抖动的定义理解不准确。 正确理解/做法:抖动不仅是缺页率高,更是一种恶性循环——所有进程都在等磁盘I/O,CPU利用率极低,系统几乎无法做有效工作。偶尔的高缺页率不等于抖动。
错误表现:认为工作集是固定不变的。 错误原因:忽略了程序不同阶段的页面需求不同。 正确理解/做法:工作集随程序运行阶段变化。例如程序从"计算阶段"进入"I/O阶段"时,工作集可能发生剧烈变化。这也是可变分配策略比固定分配策略更合理的原因。
错误表现:认为增加并发进程数可以提高CPU利用率。 错误原因:忽略了抖动的可能。 正确理解/做法:在内存充足时,增加并发进程数确实可以提高CPU利用率。但当内存不足以容纳所有进程的工作集时,增加并发进程会导致抖动,CPU利用率反而急剧下降。存在一个最优的并发进程数。
七、来源标注
- 依据2026考研统考408大纲
- 依据《操作系统概念》(Operating System Concepts, Silberschatz)第10章
- 依据汤小丹《计算机操作系统》第4版第3章