【操作系统】页面置换算法(CLOCK/改进型CLOCK)
考点频率★★★★☆选择题常考是LRU的工程实现方案难度⭐⭐⭐建议重点掌握CLOCK算法的指针扫描过程理解改进型CLOCK中访问位和修改位的组合策略1️⃣ 为什么需要CLOCK算法上一篇文章讲了LRU最近最久未使用它性能很好但存在一个实际问题LRU需要记录每个页面的精确访问顺序如维护一个访问链表或时间戳硬件开销大实现成本高。能不能用更简单的硬件机制实现近似LRU的效果CLOCK算法就是这样一个经典方案。它用一个指针和一个“使用位”访问位来近似判断哪些页面最近被访问过被广泛应用于实际操作系统如Linux、Windows的页置换。2️⃣ 基本CLOCK算法又称NRUNot Recently Used2.1 数据结构内存中的页面排成一个循环队列每个页面有一个使用位Reference BitR位页面被访问时R位被硬件置为1页面未被访问时R位保持为0系统维护一个指针Hand指向当前要检查的位置2.2 算法步骤发生缺页时检查指针当前指向的页面如果R 0选择该页面换出淘汰指针指向下一个位置如果R 1将R位清零清为0指针指向下一个位置继续检查重复步骤1直到找到一个 R 0 的页面进行置换核心逻辑给每一个页面一个“第二次机会”。被访问过的页面R1指针经过时不清除相当于“保留一次”。如果一轮循环后所有页面都刚被访问过指针转了一圈自然会把第一个遇到的R0页面即最早被清0的淘汰。2.3 算法执行示例假设内存中有3个页面页框指针初始指向页框0访问序列中发生缺页时操作如下页框初始R位指针指向缺页处理过程结果页框01指针→页框0R1 → 清0指针移向页框1继续扫描页框11指针→页框1R1 → 清0指针移向页框2继续扫描页框20指针→页框2R0 →淘汰页框2装入新页R1指针移向页框0完成置换注意到R0的页面被淘汰后指针指到了下一个位置页框0而不是原地。这保证了公平性。2.4 优点与缺点优点缺点硬件开销小只需要一个访问位只是LRU的近似不能精确区分页面的访问时间先后顺序实现简单性能稳定如果所有页面的R位都为1需要扫描一整圈才能淘汰一个页面最坏情况3️⃣ 改进型CLOCK算法增强型NRU基本CLOCK算法只考虑了页面是否被访问过但没有考虑页面是否被修改过。如果换出一个被修改过的页面脏页需要写回磁盘代价比换出干净页要大得多。改进型CLOCK在R位的基础上增加了修改位Modified BitM位也称脏位根据R和M的组合决定淘汰优先级。3.1 四种页面类别类别R位M位含义淘汰优先级第1类00最近未访问且未被修改最高最优淘汰第2类01最近未访问但已被修改中等换出前需写回磁盘第3类10最近被访问但未被修改较低给第二次机会第4类11最近被访问且已被修改最低最不希望淘汰3.2 算法扫描过程改进型CLOCK执行多轮扫描每次扫描寻找不同类别的页面第一轮扫描寻找(R0, M0)的页面找到即淘汰。扫描过程中将遇到的R1的页面置为0给它们第二次机会但M位不变。第二轮扫描如果第一轮没找到寻找(R0, M1)的页面找到即淘汰。第三轮扫描如果还没找到重新扫描一遍此时所有R位都已被清零。再次寻找(R0, M0)并淘汰因为第一轮时R1的页面已被清0。第四轮扫描如果仍然没有再次寻找(R0, M1)并淘汰必能找到。3.3 为什么第四轮一定能找到经过前三轮所有的R位都已经是0且页面的M位非0即1。因此第四轮扫描时(0,0)和(0,1)两类页面必然存在至少能找到一类。这是算法终止的保障。4️⃣ 基本CLOCK vs 改进型CLOCK对比项基本CLOCK改进型CLOCK使用位仅R位访问位R位访问位 M位修改位淘汰依据仅看是否最近被访问同时考虑是否被访问和是否被修改是否考虑磁盘I/O代价否是优先淘汰干净页扫描轮数通常1轮最多4轮实现复杂度低中等5️⃣ 经典例题例题1某系统采用基本CLOCK置换算法内存中有4个页面R位依次为[1, 0, 0, 1]指针当前指向第0个页面。发生缺页中断时被淘汰的页面是哪个解析检查页0R1 → 清0指针→页1检查页1R0 → 淘汰页1答案页1例题2某系统采用改进型CLOCK算法某时刻内存中4个页面的R位和M位分别为页0: (1,0)页1: (0,1)页2: (0,0)页3: (1,1)指针指向页0。发生缺页时淘汰哪个页面解析第一轮扫描查找(0,0)页0: (1,0) → R清0变成(0,0)指针→页1页1: (0,1) → 不是目标指针→页2页2: (0,0) →找到淘汰页2答案页2例题3概念改进型CLOCK算法相比基本CLOCK算法主要改进之处在于 。A. 增加了R位B. 增加了M位优先淘汰未被修改的页面C. 用链表代替循环队列D. 淘汰页面时不需要扫描解析改进型CLOCK增加了修改位M位优先淘汰(0,0)类页面未被访问且未被修改以减少磁盘I/O开销。选B。6️⃣ 记忆口诀时钟算法循环查R位为零就换它。R位为一清零走二次机会给一下。改进加上M位判优先替换干净页。零零最优零一次一一最差放一边。7️⃣ 小测验评论区对答案某系统采用基本CLOCK置换算法内存中有3个页面R位依次为[0, 1, 1]指针当前指向页0。发生缺页中断时被淘汰的页面是 。经过这次淘汰后指针指向 。A. 页0页1B. 页0页2C. 页1页2D. 页2页0本专栏日更2篇点击头像 → 专栏《软考中级高频考点》订阅第一时间接收新内容#软考中级 #软件设计师 #CLOCK算法 #页面置换 #NRU #操作系统

相关新闻

高Tg PCB材料(Tg≥170°C)在无铅制程中的5项性能实测与失效分析

高Tg PCB材料(Tg≥170°C)在无铅制程中的5项性能实测与失效分析

高Tg PCB材料在无铅制程中的性能实测与失效机理深度解析1. 高Tg材料的核心价值与测试方法论在当今电子工业向高密度、高可靠性发展的趋势下,PCB材料的玻璃化转变温度(Tg)已成为衡量基板性能的关键指标。不同于普通FR-4材料(130-150C),Tg≥170C的高性能基…

2026/7/6 3:34:19阅读更多 →
Linux 源码安装 Redis 6.0.10 超详细教程(含编译报错、SCL源失效解决方案)

Linux 源码安装 Redis 6.0.10 超详细教程(含编译报错、SCL源失效解决方案)

一、前期准备 1.1 环境依赖 Redis 基于 C 语言开发,源码编译安装必须依赖 GCC 编译环境,未安装需提前执行命令安装基础编译依赖: yum install gcc-c1.2 安装包下载 官方下载地址:https://redis.io/download 选择 Stable 稳定…

2026/7/6 3:29:19阅读更多 →
村长团队GTA5 室内MLO分房间+摆物品+范围音乐详细教程(3D Max + GIMS Evo)

村长团队GTA5 室内MLO分房间+摆物品+范围音乐详细教程(3D Max + GIMS Evo)

GTA5 室内MLO分房间摆物品范围音乐 完整超详细教程(3D Max GIMS Evo 版)工具与插件安装配置1.先把电脑上的杀毒软件、防火墙、电脑管家全部关闭,避免插件被拦截、文件被隔离、导出到一半卡死报错,2.下载安装3D Max 2021正式版&am…

2026/7/6 3:29:19阅读更多 →
伺服电机死区效应:5次/7次谐波成因分析与3种软件补偿策略实测

伺服电机死区效应:5次/7次谐波成因分析与3种软件补偿策略实测

伺服电机死区效应:5次/7次谐波成因分析与3种软件补偿策略实测1. 死区效应与谐波问题的工程背景在伺服电机控制系统中,逆变器的IGBT开关器件在切换过程中必须设置死区时间(通常为数百纳秒至数微秒),以防止上下桥臂直通短…

2026/7/6 5:54:30阅读更多 →
微信客户端自动化的技术突围:用wxauto解放你的双手

微信客户端自动化的技术突围:用wxauto解放你的双手

微信客户端自动化的技术突围:用wxauto解放你的双手 【免费下载链接】wxauto Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人 项目地址: https://gitcode.com/gh_mirrors/wx/…

2026/7/6 5:54:30阅读更多 →
MCP Server 压测实录:一次优化让响应时间从 8s 降到 800ms

MCP Server 压测实录:一次优化让响应时间从 8s 降到 800ms

起因:生产环境 MCP Server 突然变慢了 上周四下午,运维同事在群里 @ 我:「你那 MCP Server 是不是挂了?前端等数据等到超时。」 我第一反应是网络问题,ssh 上去看了下——CPU 正常、内存正常、连接数也不高。重启服务,问题依旧。 这 MCP Server 是我用 TypeScript 写的…

2026/7/6 5:54:29阅读更多 →
观鸟记录数据挖掘:从个人观察到生态规律的技术实践

观鸟记录数据挖掘:从个人观察到生态规律的技术实践

1. 项目概述:当观鸟不只是“看”,而是一场数据解谜 如果你和我一样,是个观鸟爱好者,那你手机里一定存满了各种观鸟App的记录,从“懂鸟”到eBird,从“中国观鸟记录中心”到个人Excel表格。我们乐此不疲地记录…

2026/7/6 5:54:29阅读更多 →
《HarmonyOS技术精讲-Core File Kit》第13篇:文件访问框架深入——统一API层解析

《HarmonyOS技术精讲-Core File Kit》第13篇:文件访问框架深入——统一API层解析

《HarmonyOS技术精讲-Core File Kit》第13篇:文件访问框架深入——统一API层解析 很少有人注意到的“跨平台”陷阱 HarmonyOS NEXT 的文件访问框架,有个很重要的设计:抽象层。但很多开发者只把它当成一个普通的沙箱文件封装,遇到…

2026/7/6 5:54:29阅读更多 →
构建桌面AI工作流:Chatbox智能助手的完整解决方案

构建桌面AI工作流:Chatbox智能助手的完整解决方案

构建桌面AI工作流:Chatbox智能助手的完整解决方案 【免费下载链接】chatbox Powerful AI Client 项目地址: https://gitcode.com/GitHub_Trending/ch/chatbox 在现代软件开发中,如何高效整合多种AI模型、管理对话上下文、保障数据隐私已成为技术团…

2026/7/6 5:49:29阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/6 4:26:20阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/6 2:48:33阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/6 0:10:35阅读更多 →
Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 技术架构先行:官方接口的合规应用 你是否曾在BP阶段手忙脚乱&#x…

2026/7/6 0:03:39阅读更多 →
多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理 【免费下载链接】mRemoteNG mRemoteNG is the next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager. 项目地址: https://gitcode.com/gh_m…

2026/7/6 0:03:39阅读更多 →
COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南在数据分析和处理领域,去重统计是最基础也是最频繁使用的操作之一。当数据量达到亿级规模时,不同的去重统计方法在性能上可能产生天壤之别。本文将基于 5 亿行数据的实…

2026/7/6 0:03:39阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/6 4:45:01阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/6 4:45:01阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/6 4:45:03阅读更多 →