news 2026/7/25 18:11:59

在虚拟内存管理中,页面置换算法用于决定当物理内存满时,应将哪个页面换出

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在虚拟内存管理中,页面置换算法用于决定当物理内存满时,应将哪个页面换出

一、页面置换算法(前文延伸)
在虚拟内存管理中,页面置换算法用于决定当物理内存满时,应将哪个页面换出。FIFO(先进先出)算法虽然直观,但存在Belady 异常现象:即为进程分配更多物理页面帧时,缺页中断次数反而增加。这一现象违背直觉,说明并非所有算法都满足“资源越多性能越好”的原则。

常见的页面置换算法包括:

  1. LRU(Least Recently Used,最近最少使用)

    • 基于局部性原理:近期未使用的页很可能在未来也不会被使用。
    • 实现方式可通过维护一个访问时间戳链表或使用栈结构,每次访问将该页移到栈顶。
    • 性能接近最优,但实现开销较大(需记录访问顺序)。
  2. LFU(Least Frequently Used,最不经常使用)

    • 统计每一页的访问频率,淘汰访问次数最少的页。
    • 问题:早期频繁访问但后期不再用的页可能无法及时淘汰。
  3. NUR(Not Recently Used,最近未使用)

    • 利用页表中的访问位和修改位进行粗略分类,优先淘汰“既未访问也未修改”的页。
    • 是一种简化版的近似 LRU,常用于实际系统中以降低开销。
  4. OPT(Optimal Page Replacement,最优置换)

    • 理论上的理想算法:淘汰在未来最长时间内不会被访问的页面。
    • 不可实现(需要预知未来),但作为评估其他算法性能的基准。

二、设备管理(核心内容)

设备管理的定义
操作系统对除 CPU 和主存外的所有外部设备进行统一管理,确保其高效、安全地被多个进程共享和使用。

主要功能包括:

  1. 提供进程与设备之间的接口

    • 操作系统通过设备驱动程序和 I/O 子系统为用户进程提供统一的操作接口(如 read/write 系统调用)。
  2. 设备分配

    • 根据设备类型(独占/共享)、状态及调度算法,合理分配设备资源。
    • 若设备不可用,请求进程进入等待队列,由设备分配程序进行调度。
  3. 实现设备与 CPU / 其他设备的并行操作

    • 利用中断机制和通道技术,使 CPU 在发起 I/O 请求后可继续执行其他任务,提升系统整体并发性。
  4. 缓冲区管理

    • 解决 CPU 与外设速度不匹配的问题。常见形式有单缓冲、双缓冲、循环缓冲、缓冲池等。
    • 减少 CPU 处理 I/O 的频率,提高吞吐量。
  5. 数据传输控制方式

    • 程序控制方式(轮询/Polling):CPU 主动查询设备状态,效率低,占用 CPU 时间多。
    • 中断驱动方式:设备完成操作后主动通知 CPU,适用于键盘、鼠标等低速设备。
    • DMA(Direct Memory Access,直接存储器存取):由 DMA 控制器接管总线,直接在内存与设备间传输数据,仅在整块数据传输完成后才中断 CPU。适用于磁盘、高速网卡等大数据量场景。
    • 通道控制方式:更高层次的独立处理器,能执行简单的 I/O 指令序列,实现复杂的自动化 I/O 操作,主要用于大型机系统。

这些内容构成了操作系统中内存管理和设备管理的核心理论体系,广泛应用于课程教学、考试复习和技术面试准备中。
LRU(Least Recently Used,最近最少使用)算法是一种性能优良的页面置换算法,其核心思想是:淘汰最长时间未被访问的页面。但由于需要维护完整的访问顺序,完全精确的 LRU 实现开销较大,因此在实际系统中通常采用近似实现方法。

一、硬件实现方法

  1. 栈结构法(Stack Implementation)

    • 使用一个特殊硬件栈来记录页面访问顺序。
    • 每当一个页面被访问时,它被移至栈顶,其他页面相应下移。
    • 栈底始终保存最久未使用的页面,作为替换候选。
    • 优点:无需扫描整个页表,更新快。
    • 缺点:硬件成本高,难以大规模部署。
  2. 寄存器位图 + 访问位追踪

    • 每个页表项设置一个时间戳字段或逻辑序号。
    • 每次访问页面时,硬件自动更新对应的时间戳为当前值。
    • 替换时查找时间戳最小的页面。
    • 需要额外的计数器和比较电路支持。
  3. 专用计数器阵列

    • 系统维护一组递增计数器,每次内存访问都更新对应页的计数值。
    • 虽然能准确反映访问顺序,但功耗和复杂度高,仅限于小型系统或嵌入式环境。

二、软件实现方法(近似 LRU)

由于纯硬件实现成本高,现代操作系统多采用软件模拟或近似 LRU的方式:

  1. 引用位(Reference Bit)机制

    • 每个页表项设有一个“引用位”(也称访问位),初始为 0。
    • CPU 每次访问该页时,硬件将其置为 1。
    • 操作系统周期性地清零所有引用位,并记录哪些页在此期间被访问过。
    • 在发生缺页中断时,优先淘汰引用位仍为 0 的页(表示近期未使用)。
    • 这是 NUR(Not Recently Used)算法的基础。
  2. 老化算法(Aging Algorithm)

    • 每个页面维护一个固定长度的“老化寄存器”(如 8 位)。
    • 定期检查引用位:
      • 将老化寄存器右移一位;
      • 将当前引用位的值插入最高位。
    • 示例:若某页最近多次被访问,则其老化值较高;长期未访问则趋近于 0。
    • 替换时选择老化值最小的页面。
    • 是对 LRU 的良好近似,适用于分页系统。
  3. 时钟算法(Clock Algorithm / Second-Chance)

    • 将所有页面组织成一个环形链表(像时钟指针一样循环扫描)。
    • 每个页面有引用位。
    • 当需替换页面时,指针逐个检查页面:
      • 若引用位为 0 → 直接淘汰;
      • 若引用位为 1 → 清零并继续下一轮(给一次“第二次机会”)。
    • 改进版:改进型时钟算法同时考虑“是否修改过”(脏页代价更高),优先淘汰访问位=0, 修改位=0的页面。
  4. 基于链表的 LRU 模拟(常用于缓存系统)

    • 在文件系统或数据库缓冲区管理中,可用双向链表维护页面访问顺序。
    • 每次访问页面时将其移到链表头部。
    • 淘汰时取链表尾部页面。
    • 虽然不是 OS 内核级实现,但在用户态缓存(如 Redis、LRU Cache)中广泛应用。

总结对比

方法精确度实现代价应用场景
硬件栈理论研究、专用系统
时间戳寄存器较高小规模系统
引用位 + 扫描基础操作系统
老化算法分页系统常用
时钟算法实际操作系统主流
双向链表模拟中(软件层)用户态缓存

⚠️ 注意:x86 架构本身不提供完整 LRU 支持,仅通过页表项中的“访问位”和“脏位”辅助实现近似算法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/25 7:28:50

asgiref终极指南:高效解决Python异步通信难题

asgiref终极指南:高效解决Python异步通信难题 【免费下载链接】asgiref ASGI specification and utilities 项目地址: https://gitcode.com/gh_mirrors/as/asgiref 在当今高并发的Web应用开发中,你是否经常面临同步代码阻塞异步流程、线程安全问题…

作者头像 李华
网站建设 2026/7/23 10:07:20

医学影像深度学习知识点总结

T1像和T2像的区别 T1像便于显示解剖结构,T2像便于显示病灶部位.FLAIR像便于显示结合水变化情况,人体内有自由水和结合水的分布,结合水的变化情况往往反映了局部组织出现梗塞情况,这种情况下采用FLAIR成像可以将这样的变化显示出来. FLAIR像(液体反转恢复),约等于T2成像 TR,TE,F…

作者头像 李华
网站建设 2026/7/24 12:18:31

从零到一:自动化3D建模的免代码解决方案

从零到一:自动化3D建模的免代码解决方案 【免费下载链接】nerfstudio A collaboration friendly studio for NeRFs 项目地址: https://gitcode.com/GitHub_Trending/ne/nerfstudio 还在为复杂的3D建模软件感到头疼吗?想象一下,你只需要…

作者头像 李华
网站建设 2026/7/25 9:44:28

Kali中生成被控端

操作步骤:生成的被控端提交到www.virustotal.com检测

作者头像 李华
网站建设 2026/7/24 11:53:18

13、Linux 文本编辑与命令操作实用指南

Linux 文本编辑与命令操作实用指南 1. XEmacs:强大的编辑器 XEmacs 是 GNU 超级编辑器 Emacs 的变体,包含在 Caldera OpenLinux 中。在图形环境(如 X (KDE))下使用时,XEmacs 有额外的增强功能,这也是它名字中 “X” 的由来。而在终端中,它与普通的 Emacs 几乎完全相同…

作者头像 李华
网站建设 2026/7/24 20:55:28

20、Linux 备份全攻略

Linux 备份全攻略 1. 备份介质选择 如今,备份介质的选择丰富多样,以下为你详细介绍常见的几种备份介质: | 备份介质 | 特点 | 容量 | 速度 | 价格 | 可靠性 | | — | — | — | — | — | — | | 软盘 | 系统可能自带驱动器,方便获取,但速度慢、价格相对高,适合少量…

作者头像 李华