OS总结(五):页面置换算法
1、最优页面置换算法
1.1 页面置换的功能目标
(1)功能:当缺页中断发生,需要调入新的页面而内存已满时,选择内存当中哪个物理页面被置换。
(2)目标:尽可能减少页面的换入换出次数(即缺页中断的次数)。把未来不再使用的或短期内较少使用的页面换出,通常只能在局部性原理的指导下依据过去的统计技术来进行预测。
(3)页面锁定(Frame locking):用于描述必须常驻内存的操作系统的关键部分或时间关键(Time-critical)的应用进程。实现方法是在页表中添加锁定标志位(Lock bit)。
1.2 最优页面置换算法
基本思路:当一个缺页中断发生时,对于保存在内存中的每一个逻辑页面,计算在它的下一次访问之前,还需要等待多长时间,从中选择等待时间最长的那个,作为被置换的页面。不过,这只是一种理想情况,在实际中无法实现,因为操作系统无法知道每个页面要等待多长时间以后才能被再次访问。可用作其他算法的性能评价的依据(在一个模拟器上运行某个程序,并记录每一次的页面访问情况,在第二遍运行时即可使用最优算法)。
2、先进先出算法
3、最近最久未使用算法
4、时钟页面置换算法
5、二次机会法
如果是一次写操作,dirty bit会设置为1.说明内存访问这部分数据时是有写入操作的,和硬盘上原数据不一样,所以要写入硬盘,如果是0,对这部分内存没有写操作,那么说明内存和硬盘上内容是一样的,直接丢掉即可。目的就是减少对硬盘的写操作。如果used和dirty bit都是0,那么替换掉;如果其中一个是1,那么把这一位设置为0,指针往下走;如果都是1,那先把used换为0,说明有2次机会。
6、最不常用算法
缺点:初始化时访问次数多,而正常时访问次数少的帧。
7、Belaby现象,LRU、FIFO、Clock算法的比较
资源多了,反而缺页异常多了。
8、局部页替换算法的问题,工作集模型
常驻集概念
9、全局页面置换算法
根据缺页率的变化来调整常驻集的大小。
与工作集置换算法的区别
- 对页的调整时机不一样。这个方法只能在缺页中断时判断是否更改,而后者是在每次换入换出时都做判断。
- 都与局部页置换算法不一样。这两种涉及到工作集大小的调整。而局部只是在工作集满了之后才考虑换入换出。
- 全局页置换算法效果比局部页置换算法要好。
10、抖动问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现