5.4 “抖动”与工作集

L31

学习目标

抖动是因多道程序度过高导致频繁缺页、CPU 利用率急剧下降的现象,可用工作集模型和多种预防方法加以控制。

  • 抖动(Thrashing):频繁缺页导致大部分时间用于页面换入换出,CPU 利用率急剧下降。
  • 抖动的原因:多道程序度过高,每个进程分配的物理块数不足。
  • 工作集:进程在某段时间内频繁访问的页面集合,工作集大小随时间变化。
  • 抖动的预防方法:采用局部置换策略、引入工作集算法、L=S 准则调节缺页率、挂起部分进程。

原理 · 深入理解

抖动:页故障率随多道升高 缺页率 多道程度 → 工作集装不下 ⇒ 抖动 对策:降多道、工作集模型、局部置换

5.4 “抖动”与工作集

本节概览:先建立「“抖动”与工作集」的框架,再依次展开下列小节。

  1. 多道程序度与“抖动”
  2. 工作集
  3. “抖动”的预防方法

5.4.1 多道程序度与“抖动”

抖动是因多道程序度过高、物理块过少导致进程频繁缺页、几乎无法有效工作的现象;工作集描述进程在某段时间实际访问的页面集合,是预防抖动的重要概念。

  1. 多道程序度与抖动
  2. 工作集
  3. 抖动的预防方法
图5-9 处理机的利用率 CPU 多道太高会抖动,利用率反而掉
图5-9 处理机的利用率

产生“抖动”的原因

发生“抖动”的根本原因是,同时在系统中运行的进程太多,由此分配给每一个进程的物理块太少,不能满足进程正常运行的基本要求,致使每个进程在运行时,频繁地出现缺页,必须请求系统将所缺的页调入内存。这会使得在系统中排队等待页面调进/调出的进程数目增加。

显然,对磁盘的有效访问时间也随之急剧增加,造成每个进程的大部分时间都用于页面的换进/换出,而几乎不能再去做任何有效的工作,从而导致发生处理机的利用率急剧下降并趋于0的情况。我们称此时的进程是处于“抖动”状态。

5.4.2 工作集

抖动是因多道程序度过高、物理块过少导致进程频繁缺页、几乎无法有效工作的现象;工作集描述进程在某段时间实际访问的页面集合,是预防抖动的重要概念。

  1. 多道程序度与抖动
  2. 抖动的预防方法
图5-10 缺页率与物理块数之间的关系 缺页率 块越多缺页越少,但有饱和
图5-10 缺页率与物理块数之间的关系

工作集的定义

工作集是指在某段时间间隔Δ里,进程实际所要访问页面的集合。Denning指出,虽然程序只需要少量的几页在内存便可运行,但为了较少地产生缺页,应将程序的全部工作集装入内存中。然而我们无法事先预知程序在不同时刻将访问哪些页面,故仍只有像置换算法那样,用程序的过去某段时间内的行为作为程序在将来某段时间内行为的近似。

图5-11 窗口为3、4、5时进程的工作集 Δ 工作集 3 最近 3 次访问的页 4 5
图5-11 窗口为3、4、5时进程的工作集

5.4.3 “抖动”的预防方法

Denning于1980年提出L=S准则调节多道程序度:L为缺页之间平均时间,S为平均缺页服务时间(置换一页所需时间)。

L远大于S说明很少缺页,磁盘能力未充分利用;L小于S说明频繁缺页,缺页速度超过磁盘处理能力。

当L接近S时,磁盘和处理机都可达到最大利用率。

当多道程序度偏高已影响处理机利用率时,为防止抖动系统必须减少多道程序数目,选择暂停某些进程。

被暂停进程的物理块可重新分配给其他进程,使其工作集得到满足,从而消除抖动。

当多道程序度过高影响处理机利用率时,为防止“抖动”,系统必须减少多道程序的数目,即挂起部分进程。

Denning 于 1980 年提出“L=S”准则调节多道程序度:L 是缺页之间的平均时间,S 是平均缺页服务时间。

L 远大于 S 说明很少缺页,磁盘能力未充分利用;L 小于 S 说明频繁缺页,缺页速度超过磁盘处理能力。只有 L 接近 S 时,磁盘和处理机利用率都较高。

做 · 交互动画

  • 根据「学习目标」列出 3 个关键词,对照原理段落解释给自己听。
  • 交互动画复习;写三句「虚存理论→MCU 实践」对照。

“抖动”与工作集

io-layers

用控件单步操作;日志区记下每一步发生了什么。

总结与提升

  • 能指出 SOWL 至少一个外设的控制路径。
  • 能用自己的话复述学习目标,并指出概念与板上实验的对应。
  • 能默写 I/O 软件分层。
  • 能向同伴解释为何第五章几乎全是动画课。
  • 能用工作集解释为何不能无限多任务。

延伸思考

  • WS2812 时序敏感,适合中断还是关中断硬刷?
  • 如果把本节机制拿到 Linux 或完整 OpenHarmony 上,会多出哪些硬件假设?
  • 裸机实验跳过了哪几层?
  • 若未来板卡带完整 MMU,哪一课应首先改成实验?

← 本阶段封面 · 课程列表