Skip to content

虚拟存储性能与改进

考情分析

抖动(颠簸)是高频选择题考点,EAT 计算在计算题中出现过。🔥🔥 中高频。

页面置换算法的选择直接影响缺页率,而缺页率哪怕只有 0.1% 也能让有效访存时间暴增 40 倍。当系统整体缺页率失控时,会发生什么?

抖动(Thrashing)

抖动(也叫颠簸):进程频繁地换入换出页面,大部分时间都花在页面调度上,几乎无法推进实际计算。就像一个人桌子太小,放上这本书就得撤掉那本,结果全部时间都花在搬书上,根本没空看书。

抖动的产生

这是一个恶性循环:CPU 利用率越低 → OS 引入更多进程 → 每个进程的页框更少 → 缺页更严重 → CPU 利用率更低。

CPU 利用率与多道程度的关系

CPU利用率

    |        ╱‾‾╲
    |      ╱      ╲
    |    ╱          ╲
    |  ╱              ╲ ← 抖动开始
    |╱                  ╲____
    +------------------------→ 多道程度

存在一个最优多道程度,超过这个点后 CPU 利用率急剧下降。

产生抖动的根本原因

所有进程的工作集之和 > 可用物理内存。

i|WSi|>可用页框总数

预防和解决抖动

方法一:工作集策略

监控每个进程的工作集大小,确保分配的页框数 ≥ 工作集大小。

  • |WSi| > 可用内存 → 挂起某些进程(降低多道程度)
  • 被挂起进程的页框释放给其他进程

方法二:缺页频率(PFF)策略

直接监控进程的缺页率来调整页框分配:

缺页率情况操作
缺页率 > 上限给进程增加页框
缺页率 < 下限回收部分页框
无法增加且缺页率仍高挂起该进程
缺页率

    |  ╲
    |    ╲‾‾‾‾‾‾  上限
    |      ╲
    |        ╲__  下限
    |           ╲___
    +----------------→ 页框数

方法三:控制多道程度

通过 L=S 准则来判断系统是否处于合理状态:

  • L:缺页的平均间隔时间
  • S:处理一次缺页的平均时间
  • L ≈ S 时,磁盘和 CPU 都能充分利用
  • L >> S:磁盘空闲,可增加多道程度
  • L << S:磁盘忙不过来,应降低多道程度

影响缺页率的因素

因素影响
页面大小页面越大 → 缺页率越低(但内部碎片增大)
分配的页框数页框越多 → 缺页率越低
页面置换算法OPT > LRU > CLOCK > FIFO
程序的局部性局部性越好 → 缺页率越低

程序局部性的影响

同样的数组访问,按行优先和按列优先的缺页率可能差异巨大:

c
// 按行优先 —— 局部性好,缺页少
for (int i = 0; i < 1024; i++)
    for (int j = 0; j < 1024; j++)
        a[i][j] = 0;

// 按列优先 —— 局部性差,缺页多
for (int j = 0; j < 1024; j++)
    for (int i = 0; i < 1024; i++)
        a[i][j] = 0;

C 语言数组按行存储,按行遍历时连续页面会被反复利用(空间局部性好)。按列遍历则每次访问跳到不同页面,缺页率大幅上升。

有效访存时间回顾

EAT=(1f)×tmem+f×tfault

其中 tfault 包含:

  1. 缺页中断处理时间
  2. 将页面从磁盘读入内存的时间(主要开销)
  3. 重新启动指令的时间

典型值:tmem = 200ns,tfault = 8ms。即使 f = 0.001(千分之一),EAT 也会增大约 40 倍。

考研高频考点

  • 🔥🔥🔥 抖动(颠簸)的定义与产生原因
  • 🔥🔥🔥 抖动的根本原因:工作集之和 > 可用物理内存
  • 🔥🔥 工作集策略预防抖动
  • 🔥🔥 缺页频率(PFF)策略
  • 🔥🔥 程序局部性对缺页率的影响(行优先 vs 列优先)
  • 🔥 影响缺页率的四个因素
  • 🔥 L=S 准则

到这里,内存管理章节就全部结束了。下一章进入文件系统——数据在磁盘上如何组织、如何存取。

真题练习

相关真题(6题)

2026Q29选择题2分

访存优化:TLB加速地址转换,工作集和页缓冲降低缺页率

2024Q30选择题2分

缺页率影响因素:页缓冲队列降低的是磁盘I/O延迟而非缺页率

2021Q29选择题2分

EAT计算:缺页率、磁盘读写、内存访问、缺页处理CPU时间都影响

2016Q29选择题2分

工作集:窗口内最近访问的不同页面集合

2014Q28选择题2分

TLB加速:增大TLB容量和页表常驻内存都能加快地址转换

2011Q29选择题2分

抖动处理:撤销部分进程减少多道程度是有效措施