操作系统:页面置换算法(LRU、FIFO、OPT)
继续重温操作系统系列知识,页面置换的三种常见算法为:LRU(最近最久未使用)、FIFO(先进先出)、最佳置换。
部分公司的面试会考到LRU的知识。
LRU置换算法
所谓LRU置换算法,单看字面意思较为麻烦,实际上在进行页面置换的过程中,被替换的页面块只需要按照“很久之前使用了,但最近没有使用”的规则进行选取就可以了。不需要考虑后续页面走向是否又需要读入符合上述规则的页面,因为这正是LRU的缺点。
最佳置换算法
这种算法选取被替换页面的时候,遵循以下两点
1.某个页面后续走向永远不会访问到,所以它可以直接被置换。
2.某个页面需要过很久才会访问到,优先替换它。
这种算法的优点是理论上缺页率比较低。
先进先出算法
替换规则为替换当前走向所有的物理块中那个最早进入的页面。
例题
假设存在一个走向,4,1,2,5,3,4,6,3,1,2。当分配的物理块M=4时,分别求FIFO、LRU、最佳置换算法的页面走向(假设初始时为空块)。
例题LRU解法
走向 | 4 | 1 | 2 | 5 | 3 | 4 | 6 | 3 | 1 | 2 |
块1 | 4 | 4 | 4 | 4 | 3 | 3 | 3 | 3 | 3 | 3 |
块2 | 1 | 1 | 1 | 1 | 4 | 4 | 4 | 4 | 2 | |
块3 | 2 | 2 | 2 | 2 | 6 | 6 | 6 | 6 | ||
块4 | 5 | 5 | 5 | 5 | 5 | 1 | 1 | |||
缺页 | √ | √ | √ | √ | √ | √ | √ | √ | √ | |
置换 | √ | √ | √ | √ | √ |
(1).对于LRU,首先按照顺序填好走向,并填满前面的物理块,与其他算法一样。
很显然在一开始每次都需要调入所需页面。因此,前面几次都是缺页,但没有产生置换。
(2).开始进入置换过程。
对于接下来的走向页面3而言,块中无3说明缺页,块中已满调入3则说明需要置换。
通过观察我们可以得知最近的页面,无论是4、1、2、5,都只是调用了一次,因此我们需要替换最久未使用的4。
但有的时候并不会这么简单,那如果走向不再是4125,而是是4、1、4、5呢?有2个4,还要不要替换4?
那么答案是:则应该替换1,因为虽然4是最早入块的,但是最近4使用过,所以不再是最久未使用的。排除4后1最久未使用,5刚刚使用过。
本题走向为4、1、2、5,因此走向3的块序列为3、1、2、5.
对于接下来的走向页面4而言,因为上一次的序列为3、1、2、5很显然没有4,但又满物理块,所以既置换又缺页。
按照刚刚的示例,在前面的走向4、1、2、5、3中,很显然最久未使用的是1,所以需要替换1.
因此走向4的块序列为3、4、2、5.
对于接下来的走向6而言,最近最久未使用的是2(其实可以观察2和5的长度,在3、4、2、5中,又无重复项目,而2是最久未使用的)。所以替换2.
结果是3、4、6、5,很显然缺页6又置换2。
对于接下来的走向3而言,存在3,所以不需要置换、也不缺页。
对于1而言,最近的序列为(3、4、6、5),观察发现5和3的序列横向一样长,然而3刚刚调用过,所以需要替换5.
结果为3、4、6、1
对于接下来的走向2而言,我们发现最近的序列为(3、4、6、1),通过观察可以发现4-3-6-1走向中4最久未使用,所以替换4.
结果为3、2、6、1.
最终我们填写了整个LRU的置换表。
例题FIFO算法
走向 | 4 | 1 | 2 | 5 | 3 | 4 | 6 | 3 | 1 | 2 |
块1 | 4 | 4 | 4 | 4 | 3 | 3 | 3 | 3 | 3 | 2 |
块2 | 1 | 1 | 1 | 1 | 4 | 4 | 4 | 4 | 4 | |
块3 | 2 | 2 | 2 | 2 | 6 | 6 | 6 | 6 | ||
块4 | 5 | 5 | 5 | 5 | 5 | 1 | 1 | |||
缺页 | √ | √ | √ | √ | √ | √ | √ | √ | √ | |
置换 | √ | √ | √ | √ | √ |
按照先进的先被替换,雷打不动,就可以做出了,这道题答案基本上和LRU一样,就是最后一个走向有些区别。
解题时候遇到重复性的走向容易出错,规避即可。
例题最佳置换算法
页面 |
4 |
1 |
2 |
5 |
3 |
4 |
6 |
3 |
1 |
2 |
块1 |
4 |
4 |
4 |
4 |
4 |
4 |
6 |
|||
块2 |
1 |
1 |
1 |
1 |
1 |
1 |
||||
块3 |
2 |
2 |
2 |
2 |
2 |
|||||
块4 |
5 |
3 |
3 |
3 |
||||||
缺页否 |
√ |
√ |
√ |
√ |
√ |
√ |
||||
置换否 |
√ |
√ |
对于走向3而言,我们可以看到后面的走向46312,3、1、2是最久会再次调用的,可以替换2,因为2是最后要访问的。
那么对于走向3来说,4、1、2、5:3应该被用于替换谁?
由于块4的已经入块的5在后面是永远不会被再次调用的(46312是没有5的),所以不替换2,要替换5.
结果为4、1、2、3.
下一个走向含有4,因此不缺页也不置换。
接下来的走向6,很显然走向4的页面已经不再需要了(后续走向无4),所以替换走向4,最终结果很巧妙,完全不缺页也不置换。
以上就是三种常见的解法
操作系统:页面置换算法(LRU、FIFO、OPT)相关推荐
- 【南邮操作系统实验】页面置换算法(FIFO、LRU、OPT)图形化界面(JavaFx)
页面置换算法图形化界面 前言 运行效果 源码 FIFO LRU OPT FXML界面 控制器 启动类 前言 其实以前操作系统实验的时候我写过了三份了:(命令行) 页面置换算法 (FIFO.LRU.OP ...
- 操作系统之页面置换算法(FIFO、LFU、LRU、OPT算法)
操作系统之页面置换算法(FIFO.LFU.LRU.OPT算法) TIPS: 主存:实际上的物理内存. 虚存(虚拟内存):虚拟存储技术.虚拟内存使计算机系统内存管理的一种技术.它使得应用程序认为它拥有的 ...
- C++实现虚拟内存页面置换算法(FIFO, OPT, LRU)
虚拟内存页面置换算法(FIFO, OPT, LRU) 0x01 FIFO 置换策略:置换掉先来的页面(FIFO队列首元素) 优点: 简单易理解且易实现 缺点: 性能不理想,会发生Belady异常(页框 ...
- 操作系统页面置换算法(最佳置换算法,FIFO,LRU,Clock)
页面置换算法 为什么要页面置换 最佳置换算法 先进先出页面置换算法 LRU置换算法 Clock置换算法 为什么要页面置换 缺页中断: 在地址映射过程中,若在页表中发现所要访问的页面不在内存,则产生中断 ...
- 页面置换算法(FIFO、第二次机会、LRU)
页面置换算法 文章目录 页面置换算法 前言 一.最近未使用页面置换算法 二.先进先出页面置换算法 三.第二次机会页面置换算法 四.时钟页面置换算法 四.最近最少使用页面置换算法 四.最不常用算法 总结 ...
- 操作系统 页面置换算法模拟
据实验作业挑选了几种页面置换算法进行实验.(仅个人理解 1.先进先出页面置换算法(FIFO). 2.最近最久未被使用页面置换算法(LRU). 3.最佳页面置换算法(OPT). 4.最少使用页面置换算法 ...
- 页面置换算法-LRU
页面置换算法-LRU实验报告 目录 原创性声明 1 项目描述 2 系统结构分析 3 系统详细设计 4 系统主要算法 5 系统程序实现 6课程设计总结 附录:源程序 原创性声明 参考文献 <面向对 ...
- 操作系统——页面置换算法练习题
操作系统--页面置换算法练习题 1.设某计算机的逻辑地址空间和物理地址空间均为64KB,按字节编址.若某进程最多需要6页(Page)数据存储空间,页的大小为1KB,操作系统采用固定分配局部置换策略为此 ...
- 操作系统页面置换算法(opt,lru,fifo,clock)实现
选择调出页面的算法就称为页面置换算法.好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出. 常见的置换算法有以下四种(以下来自操作系统课本). ...
- 【南邮操作系统实验】页面置换算法(FIFO、LRU、OPT) C++ 版
页面置换算法 先进先出置换算法(FIFO) 最近最久未使用置换算法(LRU) 最佳置换算法(OPT) 写好了 Java 版和 Python 版的- Java版这里 Python版戳这里 帮女朋友舍友写 ...
最新文章
- 初学MyBatis-Plus
- delphi与java 类型转换_java中的数据类型转换
- rocketmq 消费者不能调用其他服务_Spring Cloud Alibaba RocketMQ - 构建异步通信的微服务...
- java安全编码指南之:输入注入injection
- linux下串口程序测试
- Spring Security OAuth2.0_实现分布式认证授权_扩展用户信息_Spring Security OAuth2.0认证授权---springcloud工作笔记156
- 怎样解决jsp:include标签在包括html文件时遇到的乱码问题
- SPOJ 196 动态规划
- 16.1 Class类与Java反射
- WebView的简单使用
- 灌浆料的弹性模量计算_防城港市(灌浆料)月度
- windows中判断注册表键值是否存在的一段函数
- 小强再会卢绍杰漂亮PEUGEOT
- so easy(并查集)
- Blazor预研与实战
- Android转换位图BUG,知其然不知其所以然
- server.context-path不是默认的时候的注意事项
- oracle查询年份的后两位,Oracle对2位年份的处理
- 2021-08-22 愿景和范围文档模板样例
- springboot通过ITextPDF写入模板并下载