操作系统 FIFO 先进先出页面置换算法
FIFO 先进先出页面置换算法
根据作业序列判断置换,先进先置换的原则。
实现过程:
用vector简单模拟这个过程,不用直接queue模拟,是因为,当判断是否需要置换的时候,queue不好判断在队列中是否存在这个数。vector就方便很多。用一个二维数组存下过程的产生的置换图,换面好输出。
代码:
#include<bits/stdc++.h>
using namespace std;int main(){int n,m; vector<int> num;//存储序列页号cout<<"请输入作业序列(输入-1停止输入)"<<endl;int x;while(cin>>x){if(x==-1) break;num.push_back(x);}n=num.size();cout<<"请输入物理块数: ";cin>>m;cout<<endl;cout<<"页面总数 "<<n<<"物理块数 "<<m<<endl<<endl;vector<int> q;//用vector模拟队列,先进先出int count=0;//记录置换的次数vector<bool>vis(n,0);vector<vector<int> > ans(n,vector<int> (m,-1));for(int i=0;i<n;i++){int ok=false;if(q.size()<m){q.push_back(num[i]);count++;vis[i]=1;}else{//从队列中查找是否有当前这个页号,没有就需要置换for(int j=0;j<q.size();j++){if(q[j]==num[i]) {ok=true;break;}}if(!ok){q.erase(q.begin());//置换队列头部的数q.push_back(num[i]);vis[i]=1;count++;}}for(int j=0;j<q.size();j++){ans[i][j]=q[j];}}//把作业情况输出cout<<"FIFO: "<<endl;cout<<"作业序列 ";for(int i=0;i<n;i++) cout<<num[i]<<" ";cout<<endl<<endl;for(int i=0;i<m;i++){if(i==0){cout<<"最开始的 ";}else if(i==m-1){cout<<"最末尾的 ";}else cout<<" ";for(int j=0;j<n;j++){if(ans[j][i]==-1) cout<<" ";else cout<<ans[j][i]<<" ";}cout<<endl<<endl;}cout<<"是否置换 ";for(int i=0;i<n;i++){if(vis[i]) cout<<"X ";else cout<<" ";}cout<<endl<<endl;cout<<"置换率为 "<< count*1.0/n<<endl;
}/*
7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
*/
操作系统 FIFO 先进先出页面置换算法相关推荐
- 【操作系统】FIFO先进先出页面置换算法(C语言实现)
FIFO页面置换算法,计算缺页率,文末附代码,及例题解析 1.内容 在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断.当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系 ...
- java实现FIFO先进先出页面置换算法
import java.util.LinkedList; import java.util.Scanner;public class Demo {public static void main(Str ...
- 先进先出(FIFO)页面置换算法 C语言实现
广东工业大学 操作系统实验 实验内容 假设每个页面中可存放10条指令,分配给作业的内存块数为4.用C语言模拟一个作业的执行过程,该作业共有320条指令,即它的地址空间为32页,目前它的所有页都还未调入 ...
- 先进先出页面置换算法详解
*先进先出(First In first Out,FIFO) 页面置换算法的基本思想: **每次置换最先调入内存的页面,即将内存中等待时间最长的页面进行置换.此算法的适用范围是顺序结构程序. 基本原理 ...
- 操作系统实验:页面置换算法的模拟实现及命中率对比(学习笔记)
操作系统实验:页面置换算法的模拟实现及命中率对比(学习笔记) 题目要求 输入要求 输出要求 编程平台 实验成果 开始模拟 错误输入 退出程序 代码实现 抽象数据类型定义 指令地址流生成 指令地址流到页 ...
- 操作系统:基于页面置换算法的缓存原理详解(下)
概述: 在上一篇<操作系统:基于页面置换算法的缓存原理详解(上)>中,我们主要阐述了FIFO.LRU和Clock页面置换算法.接着上一篇说到的,本文也有三个核心算法要讲解.分别是LFU(L ...
- 操作系统实验2—页面置换算法模拟程序设计
一.实验目的 对页面置换做进一步的理解. 了解页面置换的任务. 通过编程掌握页面置换算法及缺页率计算. 了解Belady现象和抖动现象. 二.实验内容 输入给出一组页面访问顺序(如页面走向是1.2.5 ...
- 【南邮操作系统实验】页面置换算法(FIFO、LRU、OPT)图形化界面(JavaFx)
页面置换算法图形化界面 前言 运行效果 源码 FIFO LRU OPT FXML界面 控制器 启动类 前言 其实以前操作系统实验的时候我写过了三份了:(命令行) 页面置换算法 (FIFO.LRU.OP ...
- 【南邮操作系统实验】页面置换算法(FIFO、LRU、OPT) C++ 版
页面置换算法 先进先出置换算法(FIFO) 最近最久未使用置换算法(LRU) 最佳置换算法(OPT) 写好了 Java 版和 Python 版的- Java版这里 Python版戳这里 帮女朋友舍友写 ...
最新文章
- Crash+Kdump 分析内核崩溃内存转储文件之环境搭建
- 全面剖析Redis Cluster原理和应用 (good)
- QML基础类型之quaternion
- Spark获取某个手机号在某个基站下停留的时间和当前手机所在的位置的案例
- sap gateway data provider - /IWFND/IF_MGW_CORE_RUNTIME
- leetcode145. 二叉树的后序遍历 意想不到的骚操作
- python写传奇脚本,Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...
- php 访问url获得返回值,如何在curl php请求中获取数组值作为返回值?
- Spring DI依赖注入方式
- GLKVector3参考
- ffmpeg系列-视频旋转角度实现
- 将PC端固定布局页面改成移动端流体布局。
- 高校毕业生就业信息管理系统的设计与实现(Spring + Spring MVC +Hibernate)
- UE4编辑器修改界面显示语言
- 【论文阅读】Tensor Fusion Network for Multimodal Sentiment Analysis
- vue中加载maptalks图标(markers)以及点击事件
- 数学Ⅰ基础复习(六)
- webstorm2020背景和字体_怎么为WebStorm更换主题 修改字体样式
- 程序员的密码管理之道
- 【最新】2018年注册测绘师考试测绘案例分析真题及参考答案
热门文章
- CF577B Modulo Sum(dp,抽屉原理 | bitset优化 | 二进制优化)
- VM Workstation 16 Pro 下载安装以及下载配置Linux虚拟机(操作如下)
- 诺基亚Vertu又出奢华新版本
- python怎么修改字体_python怎么改字体 | 基础教程
- 特征工程与自动特征工程
- 让家庭机器人成标配,我们还需要等多久?
- 域名转让或弃用一定要注销备案,否则后患无穷
- python安装h5py
- apicloud模块和html,APICloud模块开发打包
- Mac os下快速从终端进入Finder 从Finder进入终端