【操作系统原理实验】页面替换策略模拟实现
创始人
2024-05-29 17:32:42
0

选择一种高级语言如C/C++等,编写一个页面替换算法的模拟实现程序。1) 设计内存管理相关数据结构;2) 随机生成一个页面请求序列;3) 设置内存管理模拟的关键参数;4) 实现该页面置换算法;5) 模拟实现给定配置请求序列的换页过程,计算换页率。

(1)设计思想:
1、设置结构体页面信息,包括页面号和被访问标记,对物理块分配初值,使物理块页面号为-1,表示没有放入,被访问标记为0。分配页面,输入页面数量和页面号。
2、选择算法:
(1)opt最佳置换算法
1、opt算法:需要发生页面置换时,算法总是选择在将来最不可能访问的页面进行置换。
2、对内存进行遍历,寻找内存中时是否有该页面,有该页面则显示该页面已经在内存中,当没有该页面时,查找是否有空闲块,如果物理块有空位则直接插入,使count++,表示页面插入,没有空位,则选择未来没有出现的或者出现最晚的页面,通过for循环找到物理块中保存的页面号在页面中对应的位置,查找要置换的页面,找到位置最远的物理块保存的页面号,将该页面置换出去,使change++,表示页面置换,然后显示置换完一次后的物理块。
3、输出缺页次数、置换次数和缺页率。
在这里插入图片描述

(2)fifo先进先出算法
1、fifo算法:算法总是选择在队列中等待时间最长的页面进行置换。
2、对内存进行遍历,寻找内存中时是否有该页面,有该页面则显示该页面已经在内存中,当没有该页面时,查找是否有空闲块,如果物理块有空位则直接插入,使count++,表示页面插入,没有空位,找到访问量最大的物理块对应的页面号,将它置换出去,change++,页面进入后,每个再进入一个页面停留的时间+1。
3、输出缺页次数、置换次数和缺页率。
在这里插入图片描述

(3)lru最近最久未使用或者最少使用置换算法
1、lru算法:如果某一个页面被访问了,它很可能还要被访问;相反,如果它长时间不被访问,那么,在最近未来是不大可能被访问的。
2、对内存进行遍历,寻找内存中时是否有该页面,有该页面则显示该页面已经在内存中,当没有该页面时,查找是否有空闲块,如果物理块有空位则直接插入,将该物理块页面号停留时间重置,使count++,表示页面插入,没有空位,找到停留时间最大的物理块,将它置换出去,change++,页面进入后,每个再进入一个页面停留的时间+1。
3、输出缺页次数、置换次数和缺页率。
在这里插入图片描述

(2)功能函数设计:
void convertopage()//分配页面
void blockclear()//物理块分配初值
int findspage()//查找是否有空闲块
int findexist(int curpage)//寻找内存中时是否有该页面
int findreplace()//查找要置换的页面
void showall()//显示整体置换玩的页面
void show()//显示置换完一次后的block
void opt()//最佳置换算法
void FIFO()//先进先出算法
void lur()//最近最久未使用或者最少使用置换算法
(3)结果演示:
1、opt最佳置换算法
在这里插入图片描述

2、fifo先进先出算法
在这里插入图片描述

3、lru最近最久未使用或者最少使用置换算法
在这里插入图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...