首页/操作系统/03-memory/FIFO页面置换 🔗 在 Obsidian 中打开
操作系统 · 03-memory

FIFO页面置换

重要度 ★★ FIFO先进先出Belady异常
速查
FIFO(先进先出)选最早进入内存的页面淘汰,用队列管理:调入加队尾,置换淘汰队头。独有 Belady 异常:增加物理块反使缺页率上升。

速查

项目
核心概念FIFO 选最早进入内存的页面淘汰,用一个队列维护内存中的页面
关键特性实现简单;可能出现 Belady 异常

核心概念

FIFO(先进先出)是最简单的页面置换算法。当需要置换页面时,选择最早进入内存的页面淘汰。

实现方式:用一个队列维护当前在内存中的页面——调入时加入队尾,置换时淘汰队头。

关键特性

  • 实现简单,只需一个队列
  • 性能较差:最早进入的页面可能频繁使用
  • Belady 异常:分配更多物理块后缺页率反而增加
Belady 异常 FIFO 独有:增加物理块改变了页面在队列中的相对位置,可能更频繁地替换热点页面。LRU 和 OPT 不会出现(满足 stack property)。

关键性质

算法选择标准Belady异常
FIFO最早进入内存会出现
LRU最久未使用不会
OPT将来最久不用不会

常见考法

考法解题套路
FIFO 手算维护队列,命中无操作,缺页淘汰队头、新页入队尾
Belady 异常对比 3块/4块的缺页次数,FIFO 可能逆增
与 LRU 对比FIFO 看"何时进入",LRU 看"最近是否使用"

易错点

注意
  • FIFO 只按进入时间淘汰,不考虑使用频率
  • 只有 FIFO 会出现 Belady 异常
  • 一个页面可能很久前调入却一直被频繁使用,FIFO 仍会淘汰它

核心结论

必背
  1. FIFO 选最早进入内存的页面淘汰,队列管理(调入队尾、置换队头)
  2. 实现简单但性能较差,可能淘汰热点页面
  3. FIFO 独有 Belady 异常:物理块增多缺页率反升
  4. LRU/OPT 因满足 stack property 不会出现 Belady 异常

记忆卡片

FIFO 核心思想?
选择最早进入内存的页面淘汰;队列管理:调入加队尾,置换淘汰队头。
什么是 Belady 异常?
增加物理块后缺页率不降反升;只有 FIFO 出现,LRU/OPT 不会。
FIFO 的优缺点?
优点:实现简单;缺点:不考虑使用频率,可能淘汰热点页,且有 Belady 异常。
FIFO 与 LRU 的根本区别?
FIFO 看"何时进入";LRU 看"最近是否使用"。
FIFO 手算步骤?
①维护队列;②访问先查是否在队列;③命中无操作;④缺页有空闲则调入,无空闲则淘汰队头、新页入队尾。

交互动画 · FIFO 队列置换

访问序列 7,0,1,2,0,3,0,4,2,3 | 物理块=3
点击「下一步」逐步处理访问序列,观察 FIFO 队列的淘汰
队头(左侧描边)是最早进入的页面,将被优先淘汰
本例缺页 9 次(缺页率 90%);该序列下 FIFO 缺页多于 LRU。

相关知识点

lru-page-replacement opt-page-replacement clock-page-replacement

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。