实 验3: 页式虚拟存储管理程序模拟

实验目的: 编写程序来模拟计算机的两种调度方式:

(1)先进先出算法

(2)最近最少使用算法

程序设计

FIFO()

FIFO()

LRU()

Msize加1

S=?

用户内存空间msize=2

Msize≤32

是否用其他算法继续

结 束

N

Y

1

2

Y

N

提示出错,重新输入

输入算法号S

1≤S≤4

开 始

生成地址流

形成地址页号

FIFO页面置换算法

1在分配内存页面数(AP)小于进程页面数(PP)时,当然是最先运行的AP个页面放入内存。

2这时有需要处理新的页面,则将原来内存中的AP个页面最先进入的调出(是以称为FIFO),然后将新页面放入。

3以后如果再有新页面需要调入,则都按2的规则进行。

算法特点:所使用的内存页面构成一个队列。

LRU页面置换算法

1当分配内存页面数(AP)小于进程页面数(PP)时,当然是把最先执行的AP个页面放入内存。

2当需要调页面进入内存,而当前分配的内存页面全部不空闲时,选择将其中最长时间没有用到的那个页面调出,以空出内存来放置新调入的页面(称为LRU)。

算法特点:每个页面都有属性来表示有多长时间未被CPU使用的信息。

结果分析

#include

#include

using namespace std;

const int MaxNum=320;//指令数

const int M=5;//内存容量

int PageOrder[MaxNum];//页面请求

int Simulate[MaxNum][M];//页面访问过程

int PageCount[M],LackNum;//PageCount用来记录LRU算法中最久未使用时间,LackNum记录缺页数

float PageRate;//命中率

int PageCount1[32];

bool IsExit(int i)//FIFO算法中判断新的页面请求是否在内存中

{ bool f=false;

for(int j=0;j

{if(Simulate[i-1][j]==PageOrder[i])//在前一次页面请求过程中寻找是否存在新的页面请求

{ f=true; }

}

return f;

}

int IsExitLRU(int i)//LRU算法中判断新的页面请求是否在内存中

{int f=-1;

for(int j=0;j

{if(Simulate[i-1][j]==PageOrder[i])

{ f=j; }

}

return f;

}

int Compare()//LRU算法找出内存中需要置换出来的页面

{ int p,q;

p=PageCount[0];

q=0;

for(int i=1;i

{if(p

{p=PageCount[i];

q=i; }

}

return q;

}

void Init() //初始化页框

{for(int k=0;k

{int n=rand()%320;//随机数产生320次指令

PageOrder[k]=n/10;//根据指令产生320次页面请求}

for(int i=0;i

{ for(int j=0;j

{ Simulate[i][j]=-1; }

}

for(int q=0;q

{PageCount[q]=0; }

}

void OutPut()//输出

{int i,j;

cout<

for(j=0;j

{cout<

cout<

cout<

for(i=0;i<10;i++)

{for(j=0;j

{if(Simulate[i][j]==-1)

cout<

else

cout<

}

cout<

}

cout<

cout<

cout<

}

void FIFO()//FIFO算法

{int j,x=0,y=0;

LackNum=0,

Init();

for(j=0;j

编写程序来模拟计算机LRU算法,操作系统-页式虚拟存储管理程序模拟.doc相关推荐

  1. 页式存储管理程序模拟_ADAS/AD开发12 - 数据存储管理

    本文属于ADAS控制器开发系列.以智能前视摄像头模块为基础.主要介绍下ADAS/AD ECU的存储topic. 数据存储与管理这个系统BB(Building Blocks),主要是定义控制器模块的存储 ...

  2. 操作系统---页式地址重定位

    页式地址重定位 要求: 一.实验目的: 1. 用高级语言编写和调试模拟实现页式地址重定位. 2. 加深理解页式地址重定位技术在多道程序设计中的作用和意义. 二.实验原理: 当进程在CPU上运行时,如指 ...

  3. 用1602液晶显示秒表功能 c语言编写程序 单片机 加注释,单片机课程设计--1602LCD显示的秒表.doc...

    单片机课程设计 题目: 1602LCD显示的秒表 系别/班级:信息工程系11级嵌入式技术与应用专业 小组成员: 小组成员学号: 指导老师: 目录 1 单片机原理-------------------3 ...

  4. 操作系统之存储管理——FIFO算法和LRU算法

    操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...

  5. 操作系统实验3—实现请求页式存储管理模拟程序

    操作系统实验3-实现请求页式存储管理模拟程序 文章目录 操作系统实验3-实现请求页式存储管理模拟程序 实验描述 设计思路 上机代码 测试结果 心得体会 实验描述 实验内容: 编写一个请求页式存储管理程 ...

  6. Linux 操作系统原理 — 内存 — 页式管理、段式管理与段页式管理

    目录 文章目录 目录 前文列表 页式管理 快表 多级页表 基于页表的虚实地址转换原理 应用 TLB 快表提升虚实地址转换速度 页式虚拟存储器工作的全过程 缺页中断 为什么 Linux 默认页大小是 4 ...

  7. LRU算法(JAVA实现)

    一.算法介绍 最近最久未使用(Least Recently Used    LRU)算法是⼀种缓存淘汰策略,它是大部分操作系统为最大化页面命中率而广泛采用的一种页面置换算法.该算法的思路是,发生缺页中 ...

  8. FIFO算法和LRU算法以及缺页

    FIFO算法和LRU算法以及缺页 缺页: ​ 缺页是引入了虚拟内存后的一个概念.操作系统启动后,在内存中维护着一个虚拟地址表,进程需要的虚拟地址在虚拟地址表中记录.一个程序被加载运行时,只是加载了很少 ...

  9. (原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化(只有在ListView滑动停止的时候才去网络请求获取图片数据)

    前言: 以前看了些关于图片优化处理缓存比较全的视频(感谢慕风网),现在回顾觉得还是挺好的也就总结出来下,感觉针对图片做处理这块还真的用的比较多,本文章只要使用异步线程AsyncTask.自定义的Ima ...

最新文章

  1. 《一条狗的回家路》曝中国风海报 霍思燕为狗狗配音
  2. python基础教程 下载-Python基础教程第3版中国PDF电子书免费下载
  3. Server.MapPath()目录详解
  4. Python3 pickle模块的使用详解
  5. C#实例:datagridview单元格合并
  6. 【Python学习】win10+Anaconda3环境,安装phthon第三方库Jieba
  7. html 缩略图点击预览,jQuery图片相册点击缩略图弹出大图预览特效
  8. C++ Primer 第五版 第6章 6.3——函数返回类型和return语句习题答案
  9. office2010出现“此错误通常是由宏安全性设置造成的”的解决办法
  10. Vue Nginx反向代理配置 解决生产环境跨域
  11. python3读写excel文件_Python3读写 EXCEL文档
  12. Scrum与项目管理亲体验
  13. 从 RNN 到 LSTM (Short-Term Memory)
  14. 安卓 qemu 运行linux,在Qemu的beagleboard上运行Android
  15. java中多重循环和break、continue语句
  16. python获取扫描枪数据线_扫描枪常见接口数据线的连接方法
  17. opencv学习笔记(八)-IplImage数据结构
  18. 美团开源Graver框架:用“雕刻”诠释iOS端UI界面的高效渲染
  19. Overvoltage category (过电压类别, 过电压等级)
  20. STM32 GPIO的配置寄存器(CRL、CRH)输入输出模式配置

热门文章

  1. Objective-c 静态变量的定义
  2. ActiveMQ添加商品发送消息
  3. Tomcat虚拟主机搭建Web站点
  4. java读取文件 16进制_Java对文件的16进制读取和操作
  5. 接口里面的方法都是抽象方法吗_单元格区域选取,竟然有这么多种方法,你都造吗?...
  6. 【Spring-Boot】【入门 01】第一个 Spring Boot 程序
  7. 一文教你 Dubbo 服务性能压测(with JMeter)
  8. 深入理解Java虚拟机-如何利用 JDK 自带的命令行工具监控上百万的高并发的虚拟机性能
  9. spring context 初始化两次导致dubbo端口被占用
  10. hibernate中表的复合主键映射表