实验要求

1)设计模拟实现OPT、FIFO和LRU页面置换算法中的任意一种。

OPT算法:需要发生页面置换时,算法总是选择在将来最不可能访问的页面进行置换。

FIFO算法:算法总是选择在队列中等待时间最长的页面进行置换。

LRU算法:如果某一个页面被访问了,它很可能还要被访问;相反,如果它长时间不被访问,那么,在最近未来是不大可能被访问的。

2)完成算法代码。

3)运行程序,算出结果。

设计思路

模拟一个拥有若干个虚页的进程在给定的若干个实页中运行、并在缺页中断发生时使用FIFO页面置换的情形。其中内存页面大小可手动输入进行设置,虚页的个数可以事先给定(例如10个),对这些虚页访问的页地址流(其长度可以事先给定,例如20次虚页访问)可以由程序随机产生,也可以手动输入。要求程序运行时屏幕能显示出置换过程中的状态信息并输出访问结束时的页面命中率。

实验结果与分析

选择最先进入内存即在内存驻留时间最久的页面换出到外存。进程已调入内存的页面按进入先后次序链接成一个队列,并设置替换指针以指向最老页面。
程序进入时可通过程序设定物理块大小

程序进入时可通过程序设定物理块大小

接着输入虚页长度,即程序运行时页面号引用串长度

程序有两种页地址流产生方式,分别为系统随机产生和手动输入

程序动态显示内存中物理块的分配信息

最后输出总的命中次数和命中率

源程序

#include<iostream>
#include<cstring>using namespace std;const int N = 1e3 + 10;
int h[N], data[N], temp[N];//分配的物理块  虚页流 存储该页面未来要被访问的时间
int n, m;//物理块大小  虚页的长度
double sum;//总命中次数 void init()
{cout << "先进先出FIFO页面置换算法 请输入物理块大小" << endl;cin >> n;cout << "请输入虚页长度" << endl;cin >> m; cout << "请选择页地址流产生方式\n1.系统随机生成,2.手动输入" << endl;int op;cin >> op;if(op == 1)//随机生成 {for(int i = 1; i <= m; i ++) {data[i] = ( rand() % (9 - 1 + 1 ) ) + 1;//产生[1,9]的随机数 cout << data[i] << ' '; }cout << endl;}   else if(op == 2)//手动输入 {for(int i = 1; i <= m; i ++) cin >> data[i];}cout << "当前到达页号  ";for(int i = 1; i <= n; i ++)cout << "物理块 " << i << "  ";cout << "       是否产生缺页" << endl;
} void show(int k, bool flag)//当前虚页块位号 是否产生缺页
{cout << data[k] << "           ";for(int i = 1; i <= n; i ++){if(h[i] == 0) cout << "空           ";else cout << h[i] << "           ";    } if(flag) cout << "未产生缺页";else cout << "产生缺页"; cout << "\n----------------------------------------------------------------" << endl;
}int main()
{init();//初始化for(int i = 1; i <= m; i ++)//对虚页流进行处理 {bool flag = false;//当前内存中是否有该页面 int j = data[i];//该页面下标for(int k = 1; k <= n; k ++)//遍历物理块if(h[k] == j)//当前内存中有该页面 {flag = true;//cout << "here" << endl;sum ++;//命中次数加1 break; } bool temp_flag = flag;//保存标志位if(!flag)//当前内存中无该页面,需调用页面置换算法(先检查有无空白物理块){for(int k = 1; k <= n; k ++)if(h[k] == 0)//当前有空白物理块,将该页面置于此处 {h[k] = j;//cout << "here" << endl;flag = true;//此时flag代表该页面放入内存没 break;}}if(!flag)//无空白物理块, 采用FIFO算法 {for(int k = 2; k <= n; k ++) h[k - 1] = h[k];h[n] = j;}show(i, temp_flag);//打印输出数据       }cout << "命中次数为 " << sum << " 虚页流长度 " << m << " 命中率为 " << sum / m;return 0;
}

先进先出页面置换算法的模拟(c++实现)相关推荐

  1. 操作系统课设之虚拟内存页面置换算法的模拟与实现

    前言 课程设计开始了,实验很有意思,写博客总结学到的知识 白嫖容易,创作不易,学到东西才是真 本文原创,创作不易,转载请注明!!! 本文链接 个人博客:https://ronglin.fun/arch ...

  2. 操作系统 FIFO 先进先出页面置换算法

    FIFO 先进先出页面置换算法 根据作业序列判断置换,先进先置换的原则. 实现过程: 用vector简单模拟这个过程,不用直接queue模拟,是因为,当判断是否需要置换的时候,queue不好判断在队列 ...

  3. 【操作系统】FIFO先进先出页面置换算法(C语言实现)

    FIFO页面置换算法,计算缺页率,文末附代码,及例题解析 1.内容 在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断.当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系 ...

  4. 操作系统实验:页面置换算法的模拟实现及命中率对比(学习笔记)

    操作系统实验:页面置换算法的模拟实现及命中率对比(学习笔记) 题目要求 输入要求 输出要求 编程平台 实验成果 开始模拟 错误输入 退出程序 代码实现 抽象数据类型定义 指令地址流生成 指令地址流到页 ...

  5. 先进先出页面置换算法详解

    *先进先出(First In first Out,FIFO) 页面置换算法的基本思想: **每次置换最先调入内存的页面,即将内存中等待时间最长的页面进行置换.此算法的适用范围是顺序结构程序. 基本原理 ...

  6. 请求页式存储管理中页面置换算法的模拟设计_操作系统-存储管理与文件管理-笔记...

    存储管理 一.页式存储 将各进程的虚拟空间划分成若干个长度相等的页,页式管理把内存空间按页的大小划分成片或者页面,然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地 ...

  7. 【一】先进先出页面置换算法

    地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断.发生当缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间.而用来选择淘汰哪一页的规则叫做页面置换 ...

  8. java实现FIFO先进先出页面置换算法

    import java.util.LinkedList; import java.util.Scanner;public class Demo {public static void main(Str ...

  9. OPT和LRU页面置换算法C语言代码,页面置换算法模拟——OPT、FIFO和LRU算法.doc

    实用标准文案 精彩文档 操作系统实验报告 页面置换算法模拟 --OFT.FIFO和LRU算法 班级:2013级软件工程1班 学号:X X X 姓名:萧氏一郎 数据结构说明: Memery[10]物理块 ...

最新文章

  1. Windows10下搭建Java环境(最新教程)
  2. makefile 学习(一)
  3. java向另一activity输入_Android中调用另一个Activity并返回结果-以模拟选择头像功能为例...
  4. Elasticsearch搜索引擎之缓存:Request Cache、Query Cache、Fielddata Cache
  5. 树形结构:从二分查找,二叉搜索树寻找最近祖先,从递归到迭代,实现技巧总结
  6. shell编程之循环语句
  7. 监测利器cacti服务安装
  8. 如何在 C# 中使用 Attribute
  9. Hadoop精华问答 | Hadoop 和Spark有什么区别?
  10. Python Flask实现修改和删除数据
  11. Json 和 Jsonlib 的使用
  12. linux虚拟arm环境环境,Ubuntu 模拟ARM开发环境
  13. 实验教学管理系统 c语言程序代写源码下载
  14. 银行系统总体架构\银行核心系统\常用金融名词解释
  15. 无线前端资源管理方案
  16. YIGO标准平台解决模态窗口不能刷新父界面的方法
  17. redis c++接口
  18. OSPF特殊区域及其他特性
  19. 2018年上海人工智能大会(SHAI2018)即将在上海举行
  20. 关于vue ui启动没反应问题

热门文章

  1. c语言微课ppt嵌套函数,C语言课程中循环嵌套的微课教学设计与思考.pdf
  2. vue 使用 facebook 分享
  3. 工业数字化转型 — 工业 4.0
  4. jQuery----经典表单应用
  5. vb.net 教程 3-2 窗体编程之窗体 4
  6. OFFICE EXCEL WORD 安装程序正准备必要文件处理方法
  7. Android 开发初步环境搭建
  8. AMD 安装 Manjaro KDE 驱动安装后续及BackLight:ACPI故障解决
  9. element-ui 获取当前行的 id
  10. 走好每一步,基于C实现机器人运动学建模与标定、运动规划、轨迹规划算法