首页 > 编程语言 >操作系统-页面置换算法

操作系统-页面置换算法

时间:2024-09-26 10:23:49浏览次数:12  
标签:操作系统 置换 算法 内存 进来 序列 缺页 替换 页面

简介

期末考试中常考的页面置换算法可能有三种,分别是先进先出(FIFO),最佳置换(OPT)和最久未使用(LRU)

本篇文章会用一道例题来讲解这三种算法的思路和解题过程;

题目

假设有这样一个操作系统,其内存中有3个空闲页面框(题目也有可能是描述成M3,M是Memory的简写)。进程依次请求页面号为以下序列:7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2。在开始时,所有页面框都是空的。对于每种页面置换算法(FIFO、LRU、OPT),计算并记录发生的页故障次数,和缺页率,用表格展示在解答过程中;

分析

内存有三个空闲框,说明一次性可以最多接受三个序列;

是否缺页指的是:在内存块中是否被替换掉的+原本内存块中存在的;

FIFO:先进先出,只需要找到离下一次序列号进来的时候上一次最多的替换掉;

LRU:最久未使用

OPT:最佳置换,只需要在序列栏对比内存中已经存在的,往后看离的最远的替换掉内存块中的序列

答案

FIFO(先进先出算法解答)

描述7012030423032
M1777
M200
M31
是否缺页

上述表格,因为前三次序列,并不存在置换,所以直接填进表格里面,从第四次开始分析;

第四次:进来2,那么7作为先进来的序列就需要替换掉,所以就变成2,0,1,缺页标记为是

第五次:进来0, 0在序列中已经存在,所以这一页不变,还是2,0,1,缺页标记为否

第六次: 进来3,3在序列中不存在,所以替换掉0,结果变成2,3,1,缺页标记为是

第七次:进来0,0在序列中不存在,所以替换掉1,结果变成2,3,0,缺页标记为是;

...后续的结果像上面这样推导就行了;所以最后的答案在下表中描述为:

描述7012030423032
M17772224440
M2000333222
M311100033
是否缺页

所以缺页次数一共是:10次,总次数为13,缺页率为10/13≈78%

OPT(最佳置换算法)

描述7012030423032
M1777
M200
M31
是否缺页

根据描述,最佳置换算法需要在序列中对比内存块找到最近不会使用的;

第四次:进来2,此时内存块中是7,0,1;7和1在未来都不会使用(因为你看后续的所有序列号),所以随便换一个,就变成了2,0,1

第五次:进来0,0在内存中已经存在,所以不发生置换,此时还是2,0,1

第六次:进来3,后续中会用到2和0,所以去掉1,变成了2,0,3

第七次:进来0,0在内存中存在,所以还是2,0,3

第八次:进来4,后续序列中,先进来2和3,所以把0替换掉,变成2,3,4

第九次:进来2,不发生替换,还是2,3,4

第十次:进来3,不发生替换,结果2,3,4

第十一次:进来0,在未来3和2会用到,踢掉4,结果是3,2,0

第十二次:不发生置换

第十三次:不发生置换

所以上述分析在下方表格为:

描述7012030423032
M17772222
M2000040
M311333
是否缺页

所以总的缺页次数为:7次,总次数为13次。缺页率为:7/13≈54%

LRU(最久未使用算法)

该算法和OPT类似,只不过OPT是往序列后面看,LRU是往序列前面看最久未使用的;

描述7012030423032
M1777
M200
M31
是否缺页

第四次:进来2,此时内存中是序列号7,0,1,从2往前数发现7是最久未使用的,所以替换掉7,变成2,0,1

第五次:进来0,此时不发生置换,还是2,0,1

第六次:进来3,替换掉1,变成2,0,3

后续跟着规律往下填就行,结果如下:

描述7012030423032
M1777224440
M200000033
M31133222
是否缺页

所以此时缺页次数为:9次,总次数为13,缺页率为:9/13≈69%

标签:操作系统,置换,算法,内存,进来,序列,缺页,替换,页面
From: https://blog.csdn.net/2401_87105969/article/details/142413644

相关文章

  • 强联通分量——Tarjan算法
    Tarjan算法详解参考文章:强连通分量Tarjan算法是一种用于寻找有向图中强联通分量(StronglyConnectedComponents,SCCs)的算法。它是由RobertTarjan在1972年提出的,基于深度优先搜索(DFS)和栈的数据结构。基本概念强联通分量:在一个有向图中,如果一组节点中任意两个节点都可以互相......
  • Tarjan算法缩点
    Tarjan算法缩点一.Tarjan算法缩点详解在图论中,缩点是指将有向图中的强联通分量(SCCs)缩成单个节点,从而得到一个更简单的图结构,称为缩点图或SCC图。Tarjan算法不仅可以用来寻找强联通分量,还可以用来进行缩点操作。基本概念强联通分量:在一个有向图中,如果一组节点中任意两个节点都......
  • 算法-复杂度分析
    复杂度分析不依赖具体的执行环境不用具体的测试数据在算法实现前,我们在脑海就可以评估算法的性能评估一个算法的性能:本质上就是评估这个算法代码执行的时间N为数据规模 大O复杂度表示法表示算法的性能,通常看最差的情况,算法运行的上界O(n) T=5n+2常数不重要,复杂......
  • 【算法】C++KMP算法的简洁实现
    目录简介next数组匹配完整代码简介对于朴素的字符串匹配算法,如果想在主串中寻找到第一次出现子串的位置,需要依次枚举主串中的每一个位置作为起始位置进行匹配尝试,如果主串中存在许多与子串相似结构的部分,那么朴素算法会进行大量的无用枚举,时间复杂度非常之高。KMP算法......
  • 【算法题】63. 不同路径 II-力扣(LeetCode)-”如果起点有障碍物,那么便到不了终点“
    【算法题】63.不同路径II-力扣(LeetCode)-”如果起点有障碍物,那么便到不了终点“1.题目下方是力扣官方题目的地址63.不同路径II一个机器人位于一个mxn网格的左上角(起始点在下图中标记为“Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格......
  • 【算法】笔试题记录
    哇今天做了道特别有意思的题。编程就给了两道,第一题特别简单,a、b两个数,每次选其中一个数*2,这样操作两次,问最后得到的两数之和的期望值是多少。简单吧?因为每次选择都有两种可能性,操作两次后就会有四种可能的结果(22)。其中有两个结果是重复的(2a,2b),剩下两个分别是(a,4b)和(4a,......
  • 【鸟类识别系统】+计算机毕设项目+卷积神经网络算法+人工智能+深度学习+模型训练+Pyth
    一、介绍鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作......
  • 【动物识别系统】计算机毕设项目案例+Python卷积神经网络算法+模型训练+人工智能+深度
    一、介绍动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现......
  • 求最大公约数的三种算法
    #include<iostream>#include<vector>#include<algorithm>usingnamespacestd;intgcdByBruteForce(inta,intb){for(inti=min(a,b);i>0;--i){if(a%i==0&&b%i==0){returni;......
  • 矿山井下/传送带堆料检测AI算法的检测作用、工作原理及其解决方案
    传送带堆料分为两种情况,一种是传送带的井下堆料检测AI算法,一种是传送带上面的堆料检测AI算法,传送带井下堆料检测AI算法是在带式输送机的漏煤下方井下安装摄像仪,通过视频分析检测井下堆煤情况,当洒煤堆积到一定程度后,智慧矿山版ai盒子自动产生报警,并语音通知值班人员,也可通过前端音箱......