前言
学习笔记

void IntoPage(int m);//将第m条指令转化为对应的页数
int  isInside(int number,int Msize);//判断页号是否在内存中
void OPT(int num,int Msize);//最佳置换算法(OPT)
void FIFO(int num,int Msize);//先进现出置换算法(FIFO)
void LRU(int num,int Msize);//最近最久未使用置换算法(LRU)
void LFU(int num,int Msize);//最不经常使用置换算法(LFU)
void OPT(int num,int Msize){//最佳置换算法(OPT)int max=0; // 表示内存中的页号,下一次出现的距离,初始为0int maxchange; //表示内存中下次出现距离最大的页号在内存中的位置int k;if(isInside(num,Msize)==1){/*cout<<"命中!"<<endl;cout<<"内存Inside中内容为:";    //如果命中则打印当前内存页面,为简化程序输出而注释取消for(int i=0;i<Msize;i++)cout<<Inside [i]<<"  ";cout<<endl;*/}else  //未命中lost++;  //未命中次数加1for(int j=0;j<Msize;j++){for(k=num;k<MMM;k++){//找到当前内存中的页面,在随后的页地址流中再次被调用时的位置if(Inside[j]==page[k])break;}if(k>max){max=k;    //k表示在这个地方会再次出现给定页面maxchange=j;//j 表示把内存中第j个Inside中的页面从内存拿出,把新的页面放入}}//cout<<"置换内存中Inside["<<maxchange<<"]处的页面\n";Inside[maxchange] = page[num];//将此页写入内存中最晚再被调度的页面的位置cout<<"内存Inside中内容为:";for(int i=0;i<Msize;i++)          //打印按本算法置换页面后内存中的页面序列,为简化程序输出而注释取消cout<<Inside [i]<<"  ";cout<<endl;
}
void FIFO(int num,int Msize){//先进现出置换算法(FIFO)  if(isInside(num,Msize)){/*cout<<"命中!"<<endl;                //如果命中则打印当前内存页面,为简化程序输出而注释取消cout<<"内存Inside中内容为:";for(int i=0;i<Msize;i++)cout<<Inside [i]<<"  ";cout<<endl;*/}else{lost++;Inside[insert]=page[num];//insert始终指向最老的页面,即最先进入的页面insert++;//insert指向下一个最早进入的页面insert=insert%Msize;//当insert指针指向内存中最后一个页面时,返回第一个页面继续循环cout<<"内存Inside中内容为:";       //打印按本算法置换页面后内存中的页面序列,为简化程序输出而注释取消for(int i=0;i<Msize;i++)cout<<Inside [i]<<"  ";cout<<endl;}
}
void LRU(int num,int Msize){//最近最久未使用置换算法(LRU)int max=0; // 表示内存中的页号,上一次出现的距离int maxchange; //表示内存中上一次出现距离最大的页号在内存中的位置int k;if(isInside(num,Msize)){/*cout<<"命中!"<<endl;                //如果命中则打印当前内存页面,为简化程序输出而注释取消cout<<"内存Inside中内容为:";for(int i=0;i<Msize;i++)cout<<Inside [i]<<"  ";cout<<endl;*/}else{lost++;for(int j=0;j<Msize;j++){for(k=num;k>=0;k--){  //从当前的页号向前看,发现页号与内存中的页号相同则breakif(Inside[j]==page[k])break;}if((num-k)>max){   //比较内存中页号在页地址流中的位置max=num-k;    //将距离最大的存入maxmaxchange=j;  //j表示把内存中第j个Inside中的页面从内存拿出,把新的页面放入}}Inside[maxchange]=page[num]; cout<<"内存Inside中内容为:";for(int i=0;i<Msize;i++)          //打印按本算法置换页面后内存中的页面序列,为简化程序输出而注释取消cout<<Inside [i]<<"  ";cout<<endl;}
}
void LFU(int num,int Msize){//最不经常使用置换算法(LFU)int Min=MMM;  //表示最小次数,初始化为MMM(最大)int minchange=0; //表示内存中最小频率的页面所在的位置int k;int *frequent=new int[32];//frequent数组记录目前为止每个页面已出现的频率for(int i=0;i<=31;i++)frequent[i]=0;if(isInside(num,Msize)){/*cout<<"命中!"<<endl;                //如果命中则打印当前内存页面,为简化程序输出而注释取消cout<<"内存Inside中内容为:";for(int i=0;i<Msize;i++)cout<<Inside [i]<<"  ";cout<<endl;*/}else{if(num<Msize){//若当前内存的页面没装满lost++;Inside[num]=page[num];//依次将页地址流的前Msize个页面装入内存}else{  //内存中页面已经装满lost++;for(int j=0;j<Msize;j++){for(k=num;k>=0;k--){   //从当前的页号向前看if(Inside[j]==page[k])//若发现页号与内存中的页号相同则将已访问频率加1frequent[Inside[j]]++;}if(frequent[Inside[j]]<Min){   //比较内存中页号出现的频率Min=frequent[Inside[j]];    //将频率最小的存入minminchange=j;  //j表示把内存中第j个Inside中的页面从内存拿出,把新的页面放入}}Inside[minchange]=page[num];  cout<<"内存Inside中内容为:";for(int i=0;i<Msize;i++)          //打印按本算法置换页面后内存中的页面序列,为简化程序输出而注释取消cout<<Inside [i]<<"  ";cout<<endl;}}
}

操作系统实验--页面置换算法(OPT/FIFO/LRU/LFU)cpp相关推荐

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

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

  2. OS 页面置换算法(OPT,FIFO,LRU)颠簸/抖动

    介绍 置换算法 置换算法(replacement algorithm)又称为淘汰算法.替换算法,用于确定页面的调出原则. 在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断.当发 ...

  3. 【操作系统⑫】——存储管理(下)【分段存储管理 虚拟存储管理 段页式存储管理方案 页面置换算法 OPT FIFO LRU】

  4. 操作系统:页面置换算法(FIFO算法、LRU算法、LFU算法、NRU算法)实验报告

    操作系统实验报告 一.实验名称 :页面置换算法 二.实验目的: 在实验过程中应用操作系统的理论知识. 三.实验内容: 采用C/C++编程模拟实现:FIFO算法.LRU算法.LFU算法.NRU算法四个页 ...

  5. 页面置换算法(FIFO , LRU, OPT)(C++实现模拟)

    简述 先输入一个N表示的是,页表大小(最多能存的帧数). 之后的序列是最大为9,最小为0的一个申请序列. 之后的输入一个数字T,表示输入的测试命令的数目. 之后的命令. 第一个数表示使用什么页面置换算 ...

  6. 缓存算法(页面置换算法)-FIFO、LFU、LRU

    为什么80%的码农都做不了架构师?>>>    转自:http://www.cnblogs.com/dolphin0520/ 1.FIFO算法 FIFO(First in First ...

  7. fifo页面置换算法java_缓存算法(页面置换算法)-FIFO、LFU、LRU

    转自:http://www.cnblogs.com/dolphin0520/ 1.FIFO算法 FIFO(First in First out),先进先出.其实在操作系统的设计理念中很多地方都利用到了 ...

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

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

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

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

最新文章

  1. 【linux】可执行程序执行时报错-sh: ./mxc_v4l2_tvin.out: No such file or directory的解决方法
  2. (转载)Ubuntu命令卸载软件
  3. Android 如何有效的解决内存泄漏的问题
  4. boost::mpl::divides相关的测试程序
  5. Entity Framework(二)
  6. 转:python的内置对象
  7. Matrix Chain Multiplication (堆栈)
  8. c语言 归一化图片大小,OpenCV学习笔记(1)——resize函数实现图像大小归一化
  9. 怎么不能锁门_镜子能不能对着床
  10. 机器学习中特征选择_机器学习中的特征选择
  11. 基于Matlab使用激光雷达从点云到跟踪列表跟踪车辆仿真(附源码)
  12. 限流 Redis list 列表 Lpush rpop 实现令牌桶 – PHP 实例
  13. raid卡组不同raid_磁盘阵列卡组RAIDO 对比主板自带组磁盘阵列
  14. office2019选框虚线_手把手教你分析PS2019里怎么画虚线
  15. onethink搭建
  16. java阳历转为阴历错了一天_Java 阴历阳历转换
  17. 2020年计算机竞赛姜子敬,初赛公示_2020年全国高校计算机能力挑战赛
  18. EM2040D和SES2000采集图像判读(一)
  19. 开源项目扮演的角色_适用于Linux的5种开源角色扮演游戏
  20. 日期转换为后端需要的格式 Fri Oct 09 2020 00:00:00 GMT+0800 (中国标准时间)

热门文章

  1. java多态造型,Java基础学习:面向对象之多态
  2. Win11系统 PrintScreen/PrtSc 屏幕截图快捷键无反应
  3. 混沌密码能对抗量子计算机吗,使命召唤17混沌行动密码是多少 混沌行动解密流程...
  4. EventBus使用总结和使用场景
  5. Android 调用系统图片浏览器
  6. JS代码加密时,什么情况下不能使用全局变量、函数名加密?
  7. 魅族的android m l,魅族两款新机齐曝光:其中一款竟然采用原生 Android
  8. 英特尔推出功能强大的FPGA加速卡
  9. 画面截屏_第五人格:双十一“单身盛典”,狂欢免费送福利11+11个许愿码,玩家截屏这四个画面像极了爱情...
  10. 第五人格服务器6月维护,第五人格6月7日更新维护公告 更新内容汇总