Skip to content

408

操作系统

OS-03-10 抖动与工作集


一、定位信息

  • 所属圈层:核心层
  • 前置知识回顾:理解请求页式管理和页面置换算法的基本原理,知道缺页中断需要磁盘I/O,耗时远大于内存访问。了解驻留集的概念。
  • 知识网络位置:本单元是虚拟内存管理的"极端情况"分析,解释了当内存不足时系统性能急剧下降的原因和对策。抖动与工作集理论是页框分配策略(OS-03-08)的理论依据。
  • 考点热度等级M级(中频常考)——抖动的概念和工作集模型常出现在选择题中。

二、知识点讲解

2.1 抖动(Thrashing)

抖动是指系统花费大量时间在页面的调入调出上,而实际用于执行进程指令的时间很少。CPU利用率随着并发进程数的增加反而急剧下降。

产生原因:系统中并发进程过多(或进程的驻留集太小),每个进程分配到的页框不足以容纳其工作集,导致频繁缺页。一个进程等待页面调入时,CPU切换到另一个进程,该进程也很快缺页……形成恶性循环。

抖动的恶性循环

  1. 进程缺页 → 需要磁盘I/O
  2. 磁盘I/O期间CPU空闲 → 调度另一个进程
  3. 另一个进程也缺页 → 也需要磁盘I/O
  4. 所有进程都在等磁盘 → CPU利用率极低
  5. OS误以为CPU利用率低是因为进程数不够 → 增加更多进程
  6. 情况更加恶化

2.2 工作集(Working Set)

工作集是指进程在某段时间窗口 Δ\Delta 内实际访问的页面集合。工作集模型由Denning提出,用于确定进程所需的最小页框数。

工作集窗口 Δ\Delta:一个时间参数,表示"最近 Δ\Delta 次内存访问"。

工作集的含义:如果一个进程的工作集大小为 WW,那么该进程至少需要 WW 个页框才能避免频繁缺页。

工作集模型的应用

  • 若进程的驻留集 ≥ 工作集大小,缺页率低
  • 若进程的驻留集 < 工作集大小,缺页率急剧上升(抖动)
  • OS可以监控每个进程的工作集,确保分配的页框数 ≥ 工作集大小

2.3 抖动的预防与解决

方法一:工作集模型

  • 跟踪每个进程的工作集大小
  • 确保进程的驻留集 ≥ 工作集大小
  • 若内存不足以容纳所有进程的工作集之和,则挂起某些进程

方法二:缺页率(PFF, Page Fault Frequency)控制

  • 设定缺页率的上限和下限
  • 缺页率 > 上限:增加该进程的页框数
  • 缺页率 < 下限:减少该进程的页框数
  • 无法再增加页框时,挂起该进程

方法三:减少并发进程数

  • 当检测到抖动时,挂起部分进程
  • 减少内存竞争,使剩余进程获得足够页框

三、记忆与理解辅助

1. 类比记忆:抖动就像一群人挤在一间小房间里抢座位——人越多,每个人分到的座位越少,大家不断站起来让座(缺页),结果所有人都在忙着换座位,没人能坐下来看书(执行指令)。

2. 口诀:"抖动是恶性循环,缺页太多CPU闲;工作集看窗口内,页面够用不抖动;缺页率高加页框,实在不行挂进程。"

3. 工作集 vs 驻留集对比

对比项工作集驻留集
定义进程实际需要的页面集合进程当前在内存中的页面集合
由谁决定程序运行行为(客观需求)OS分配策略(主观分配)
是否可变随时间变化可由OS调整
关系驻留集应 ≥ 工作集驻留集 < 工作集 → 抖动

4. 抖动的因果链

并发进程过多 → 每进程页框不足 → 缺页率上升 → 磁盘I/O繁忙
→ CPU等待I/O → CPU利用率下降 → OS增加进程 → 更多缺页 → 抖动

四、例题与精解

例题1(基础巩固)

题目:某系统有 44 个物理页框,运行两个进程A和B。进程A的工作集为 {1,2,3}\{1, 2, 3\},进程B的工作集为 {4,5,6}\{4, 5, 6\}。当前页框分配: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(中等提升)

题目:某进程在时间窗口 Δ=10\Delta = 10 内的页面访问序列为 1,2,3,2,1,4,5,4,3,21, 2, 3, 2, 1, 4, 5, 4, 3, 2。 (1)该进程的工作集是什么? (2)若系统为该进程分配 22 个页框,是否会发生抖动?

命题意图:考查工作集的计算方法。

精解

1. 审题分析:窗口大小 Δ=10\Delta = 10,需要找出最近10次访问中涉及的不重复页面。

2. 解题思路:统计窗口内访问的不同页面集合。

3. 完整步骤

(1)最近10次访问的页面序列:1,2,3,2,1,4,5,4,3,21, 2, 3, 2, 1, 4, 5, 4, 3, 2

  • 不重复的页面集合:{1,2,3,4,5}\{1, 2, 3, 4, 5\}
  • 工作集 = {1,2,3,4,5}\{1, 2, 3, 4, 5\},大小为 55

(2)驻留集 = 2 < 工作集 = 5:

  • 会发生抖动。该进程需要至少5个页框才能避免频繁缺页,只有2个页框远远不够。

4. 方法反思:工作集的计算看似简单,但实际系统中 Δ\Delta 的选择很关键。Δ\Delta 太小不能反映真实的页面需求,Δ\Delta 太大可能包含不再需要的页面。实际系统通常使用近似方法(如定期采样)来跟踪工作集。


五、考情分析

  • 考查频次:抖动与工作集在近5年真题中出现约2-3次。
  • 常见题型:选择题(抖动判断、工作集计算、缺页率控制)、偶尔在综合题中出现。
  • 分值占比:选择题2分。
  • 命题趋势:近年来倾向于将抖动与页框分配策略、页面置换算法结合考查,形成完整的性能分析场景。基于大纲与命题规律推测

六、易错点提醒

  1. 错误表现:认为抖动就是"缺页率高"。 错误原因:对抖动的定义理解不准确。 正确理解/做法:抖动不仅是缺页率高,更是一种恶性循环——所有进程都在等磁盘I/O,CPU利用率极低,系统几乎无法做有效工作。偶尔的高缺页率不等于抖动。

  2. 错误表现:认为工作集是固定不变的。 错误原因:忽略了程序不同阶段的页面需求不同。 正确理解/做法:工作集随程序运行阶段变化。例如程序从"计算阶段"进入"I/O阶段"时,工作集可能发生剧烈变化。这也是可变分配策略比固定分配策略更合理的原因。

  3. 错误表现:认为增加并发进程数可以提高CPU利用率。 错误原因:忽略了抖动的可能。 正确理解/做法:在内存充足时,增加并发进程数确实可以提高CPU利用率。但当内存不足以容纳所有进程的工作集时,增加并发进程会导致抖动,CPU利用率反而急剧下降。存在一个最优的并发进程数。


七、来源标注

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

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