继续重温操作系统系列知识,页面置换的三种常见算法为:LRU(最近最久未使用)、FIFO(先进先出)、最佳置换。

部分公司的面试会考到LRU的知识。

LRU置换算法

所谓LRU置换算法,单看字面意思较为麻烦,实际上在进行页面置换的过程中,被替换的页面块只需要按照“很久之前使用了,但最近没有使用”的规则进行选取就可以了。不需要考虑后续页面走向是否又需要读入符合上述规则的页面,因为这正是LRU的缺点。

最佳置换算法

这种算法选取被替换页面的时候,遵循以下两点

1.某个页面后续走向永远不会访问到,所以它可以直接被置换。

2.某个页面需要过很久才会访问到,优先替换它。

这种算法的优点是理论上缺页率比较低。

先进先出算法

替换规则为替换当前走向所有的物理块中那个最早进入的页面。

例题

假设存在一个走向,4,1,2,5,3,4,6,3,1,2。当分配的物理块M=4时,分别求FIFO、LRU、最佳置换算法的页面走向(假设初始时为空块)。

例题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)相关推荐

  1. 【南邮操作系统实验】页面置换算法(FIFO、LRU、OPT)图形化界面(JavaFx)

    页面置换算法图形化界面 前言 运行效果 源码 FIFO LRU OPT FXML界面 控制器 启动类 前言 其实以前操作系统实验的时候我写过了三份了:(命令行) 页面置换算法 (FIFO.LRU.OP ...

  2. 操作系统之页面置换算法(FIFO、LFU、LRU、OPT算法)

    操作系统之页面置换算法(FIFO.LFU.LRU.OPT算法) TIPS: 主存:实际上的物理内存. 虚存(虚拟内存):虚拟存储技术.虚拟内存使计算机系统内存管理的一种技术.它使得应用程序认为它拥有的 ...

  3. C++实现虚拟内存页面置换算法(FIFO, OPT, LRU)

    虚拟内存页面置换算法(FIFO, OPT, LRU) 0x01 FIFO 置换策略:置换掉先来的页面(FIFO队列首元素) 优点: 简单易理解且易实现 缺点: 性能不理想,会发生Belady异常(页框 ...

  4. 操作系统页面置换算法(最佳置换算法,FIFO,LRU,Clock)

    页面置换算法 为什么要页面置换 最佳置换算法 先进先出页面置换算法 LRU置换算法 Clock置换算法 为什么要页面置换 缺页中断: 在地址映射过程中,若在页表中发现所要访问的页面不在内存,则产生中断 ...

  5. 页面置换算法(FIFO、第二次机会、LRU)

    页面置换算法 文章目录 页面置换算法 前言 一.最近未使用页面置换算法 二.先进先出页面置换算法 三.第二次机会页面置换算法 四.时钟页面置换算法 四.最近最少使用页面置换算法 四.最不常用算法 总结 ...

  6. 操作系统 页面置换算法模拟

    据实验作业挑选了几种页面置换算法进行实验.(仅个人理解 1.先进先出页面置换算法(FIFO). 2.最近最久未被使用页面置换算法(LRU). 3.最佳页面置换算法(OPT). 4.最少使用页面置换算法 ...

  7. 页面置换算法-LRU

    页面置换算法-LRU实验报告 目录 原创性声明 1 项目描述 2 系统结构分析 3 系统详细设计 4 系统主要算法 5 系统程序实现 6课程设计总结 附录:源程序 原创性声明 参考文献 <面向对 ...

  8. 操作系统——页面置换算法练习题

    操作系统--页面置换算法练习题 1.设某计算机的逻辑地址空间和物理地址空间均为64KB,按字节编址.若某进程最多需要6页(Page)数据存储空间,页的大小为1KB,操作系统采用固定分配局部置换策略为此 ...

  9. 操作系统页面置换算法(opt,lru,fifo,clock)实现

    选择调出页面的算法就称为页面置换算法.好的页面置换算法应有较低的页面更换频率,也就是说,应将以后不会再访问或者以后较长时间内不会再访问的页面先调出. 常见的置换算法有以下四种(以下来自操作系统课本). ...

  10. 【南邮操作系统实验】页面置换算法(FIFO、LRU、OPT) C++ 版

    页面置换算法 先进先出置换算法(FIFO) 最近最久未使用置换算法(LRU) 最佳置换算法(OPT) 写好了 Java 版和 Python 版的- Java版这里 Python版戳这里 帮女朋友舍友写 ...

最新文章

  1. 初学MyBatis-Plus
  2. delphi与java 类型转换_java中的数据类型转换
  3. rocketmq 消费者不能调用其他服务_Spring Cloud Alibaba RocketMQ - 构建异步通信的微服务...
  4. java安全编码指南之:输入注入injection
  5. linux下串口程序测试
  6. Spring Security OAuth2.0_实现分布式认证授权_扩展用户信息_Spring Security OAuth2.0认证授权---springcloud工作笔记156
  7. 怎样解决jsp:include标签在包括html文件时遇到的乱码问题
  8. SPOJ 196 动态规划
  9. 16.1 Class类与Java反射
  10. WebView的简单使用
  11. 灌浆料的弹性模量计算_防城港市(灌浆料)月度
  12. windows中判断注册表键值是否存在的一段函数
  13. 小强再会卢绍杰漂亮PEUGEOT
  14. so easy(并查集)
  15. Blazor预研与实战
  16. Android转换位图BUG,知其然不知其所以然
  17. server.context-path不是默认的时候的注意事项
  18. oracle查询年份的后两位,Oracle对2位年份的处理
  19. 2021-08-22 愿景和范围文档模板样例
  20. springboot通过ITextPDF写入模板并下载

热门文章

  1. 仿淘宝搜索框之---ie9以下版本placeholder效果
  2. 施努卡:机器视觉系统有哪几部分组成(机器视觉系统价格)
  3. Java学习路线(语法基础+算法与数据结构部分)
  4. react 渲染道具_如何使用渲染道具模式开发React超能力
  5. 转发:C++中GB2312字符串和UTF-8之间的转换
  6. 新手大战Android源码之启动过程
  7. IPv6 Blackhole路由
  8. Linux查看文件大小的简单指令
  9. Nginx入门及应用
  10. 大部分人做SEO的目的是为了获取短期快速的流量