FIFO算法

FIFO算法是最简单的页面置换算法。FIFO算法为每个页面记录了调到内存的时间。当必须置换页面的时候,选择最旧的页面。

通俗来说,每次进入主存的时候

  • 如果主存中不存在这个页面,那么最先进入的页面出队。
  • 如果主存存在这个页面,那么内存不动。

下面是C++面向对象写法代码。
这个说明一下为什么不用容器Queue。是因为queue并没有迭代器,所以无法去寻找里面是否含有某块页面。
直接使用线性表即可,方便简单且快速。

// 在分页式虚拟存储管理中,要求通过键盘输入分配给一个作业的物理块数和作业依次访问的10个页面号,
// 采用先进先出(FIFO)页面置换后
// ,顺序输出缺页中断时所淘汰的页面号,并计算缺页中断率。
#include <iostream>using namespace std;
#define MAX 20
class Work
{public:void seta(){int c, i = 1;cout << "输入10个页面号,以任意符号结尾" << endl;cin >> c;a[0] = c;while (cin >> c){a[i] = c;i++;}}void geta(){cout << "10个页面号分别为:  ";for (int i = 0; i < 10; i++){cout << a[i] << " ";}cout << endl;}int index(int i){return a[i];}
~Work(){cout<<"work 已被释放"<<endl;
}
private:int a[10];
};class space
{public:    // 初始化构造函数,把除了物理块大小的其他空间都设置成其他值// 将初始化空间设置成-1space(int i){size=i;for (int j = 0; j < i; j++){s[j] = -1;}s[i] = -999;}// 显示物理块现在的状态void getSpace(){int i=0;cout<<"-------------物理块现在的状态是-------------"<<endl;while(s[i]!=-999){if(s[i]==-1){cout<<"NaN"<<"     -||-      ";i++;continue;}cout<<s[i]<<"     -||-      ";i++;}cout<<endl;cout<<"------------------------------------------"<<endl;}int find(int n){for(int i=0;i<size;i++){if(s[i]==n){return i;}}return -1;}// 先进先出,去掉第一个物理块,改变最后一个物理块。void change(int n){for(int i=0;i<size;i++){s[i]=s[i+1];}s[size-1]=n;}~space(){cout<<"space 已被释放"<<endl;}
private:int s[MAX];int size;
};void FIFO(Work &a,space &s){int i=0;int local;int count=0;while(i<10){if(s.find(a.index(i))==-1){// 如果在物理块里面找不到作业s.change(a.index(i));// 那么就将物理块改变s.getSpace();count+=1;}else{s.getSpace();}i++;}double q;q=(double)count/10;cout<<"----------------------------------"<<endl;cout<<"缺页中断的次数为: "<<count<<endl;cout<<"缺页终端率为: "<<q<<endl;cout<<"----------------------------------"<<endl;}int main()
{Work a;int num=0;cout<<"输入物理块数的个数"<<endl;cin>>num;  space s(num);  a.seta();a.geta();FIFO(a,s);return 0;
}

操作系统:FIFO算法详解及代码演示相关推荐

  1. 粒子群(pso)算法详解matlab代码,粒子群(pso)算法详解matlab代码

    粒子群(pso)算法详解matlab代码 (1)---- 一.粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,C ...

  2. 数学建模——主成分分析算法详解Python代码

    数学建模--主成分分析算法详解Python代码 import matplotlib.pyplot as plt #加载matplotlib用于数据的可视化 from sklearn.decomposi ...

  3. Go-AES算法详解与代码

    目录 AES 发展史 概述 轮函数F 字节代换 行移位 列混淆 轮密钥加 密钥编排 AES和DES的不同之处 分组模式CTR AES的Go实现 aes包 cipher包 加密/解密 参考 本篇介绍分组 ...

  4. 【分享实录】BANCOR算法详解及代码实现

    1 活动基本信息 1)主题:[区块链技术工坊22期]BANCOR算法详解及代码实现 2)议题: BANCOR算法的特点和优劣势 BANCOR算法和举例 如何加入BANCOR.NETWORK交易所 如何 ...

  5. 技术工坊|BANCOR算法详解及代码实现(上海)

    2019独角兽企业重金招聘Python工程师标准>>> EOS项目在RAM分配中采用了Bancor算法,并将RAM的价格爆炒到了很高的价位,凭借EOS项目在区块链领域的强大运营宣传能 ...

  6. 【区块链技术工坊22期实录】王登辉:BANCOR算法详解及代码实现

    1,活动基本信息 1)题目: [区块链技术工坊22期]BANCOR算法详解及代码实现 2)议题: 1)BANCOR算法的特点和优劣势 2)BANCOR算法和举例 3)如何加入BANCOR.NETWOR ...

  7. 算法 经典的八大排序算法详解和代码实现

    算法 经典的八大排序算法详解和代码实现 排序算法的介绍 排序的分类 算法的时间复杂度 时间频度 示例 图表理解时间复杂度的特点 时间复杂度 常见的时间复杂度 空间复杂度 排序算法的时间复杂度 冒泡排序 ...

  8. [联邦学习] FedAvg聚合算法详解及代码实现

    该文章首发于若绾 [联邦学习] FedAvg聚合算法详解及代码实现,转载请标注出处. 论文原文:Communication-Efficient Learning of Deep Networks fr ...

  9. KMP算法详解及代码

    KMP算法详解及代码 KMP算法详解及代码 定义及应用 理论 基本概念 next 数组 总结 注意 代码 KMP算法详解及代码 最近正好在看字符串相关的算法内容,就顺便把KMP算法回顾了一下.相应的代 ...

最新文章

  1. CMD命令,常驻内存的与外部的介绍 还有CMD格式化
  2. 高性能Server---Reactor模型
  3. python贴吧回帖-python控制浏览器爬取百度贴吧回复并写入Excel
  4. android 内存占用大 卡顿,安卓手机用久了就会卡顿?那是内存使用率高了,你需要这么做...
  5. 前端学习(511):两列布局的第一种方式
  6. 【软件开发底层知识修炼】一 深入浅出处理器之一 微处理器与微控制器
  7. MXNet.gluon——图像I/O
  8. r语言msar如何用_如何在jupyter notebook中使用R语言
  9. 线程:信号量 sem_wait sem_post
  10. python图像识别代码_python图像识别--验证码
  11. Eclipse Maven构建Spring MVC项目
  12. eleme项目框架搭建及eslint常见报错(含图标字体库说明)
  13. bilibili执行董事陈睿:我在进B站之前是一个正常人
  14. 实验一-波士顿房价预测
  15. 春松客服:一个开源的智能客服系统
  16. 香港中文大学推荐的书单~
  17. android 短信发件箱,android将发送短信写入发件箱
  18. GNN:Weisfeiler-Lehman(WL)算法、WL-Test【GNN 的性能上界】
  19. 为什么要使用Retrofit,Retrofit与OkHttp
  20. 使用了flink官方示例,尽然提交任务后报错了

热门文章

  1. PPT如何转成PDF格式文档
  2. Python中Print()函数的用法___实例详解(二)(全,例多)
  3. 深入理解前馈神经网络
  4. 如何达到400GbE/s网速,我是这么配置我的EPYC服务器的,还有关于上一个文章的解答
  5. Java集合类之Set的HashSet之组成字符串的字符
  6. [世界杯] 阿根廷 vs 塞黑 破本次比赛的最高得分悬殊 6-0
  7. 虚拟资源项目如何操作赚钱?(1)
  8. java 半个汉字,Java截取字符串军令状汉字不被截取半个
  9. 23种设计模式——桥接模式
  10. a73*2+a53*2指的是什么_5分钟带你快速了解,什么是着陆页