《操作系统》实验五:页面置换算法模拟
更新时间:2023-10-09 15:46:01 阅读量: 综合文库 文档下载
- 操作系统的主要功能推荐度:
- 相关推荐
实验五. 请求页式存储管理的模拟 [实验内容]:
熟悉虚拟存储管理的各种页面置换算法,并编写模拟程序实现请求页式存储管理的页面置换算法----最近最久未使用算法(LRU),要求在每次产生置换时显示页面分配状态和缺页率。 [实验要求]:
1、运行给出的实验程序,查看执行情况,进而分析算法的执行过程,在理解FIFO页面置换算法和最近最久未使用算法(LRU)置换算法后,给出最佳置换算法的模拟程序实现,并集成到参考程序中。
2、执行2个页面置换模拟程序,分析缺页率的情况。最好页框数和访问序列长度可调节,在使用同一组访问序列数据的情况下,改变页框数并执行2个页面置换模拟程序,查看缺页率的变化。
3、在每次产生置换时要求显示分配状态和缺页率。程序的地址访问序列通过随机数产生,要求具有足够的长度。最好页框数和访问序列长度可调节。
实验的执行结果如下图所示(左下图为FIFO执行结果,右下图为LRU执行结果):
程序源代码:
#include
void initialize(); //初始化相关数据结构 void createps(); //随机生成访问序列
void displayinfo(); //显示当前状态及缺页情况 void fifo(); //先进先出算法
int findpage(); //查找页面是否在内存 void lru(); //最近最久未使用算法
int invalidcount = 0; // 缺页次数 int vpoint; //页面访问指针 int pageframe[10]; // 分配的页框
int pagehistory[10]; //记录页框中数据的访问历史 int rpoint; //页面替换指针
int inpflag; //缺页标志,0为不缺页,1为缺页
struct PageInfo //页面信息结构 {
int serial[100]; // 模拟的最大访问页面数,实际控制在20以上 int flag; // 标志位,0表示无页面访问数据 int diseffect; // 缺页次数 int total_pf; // 分配的页框数 int total_pn; // 访问页面序列长度 } pf_info;
//////////////////////////////////////////////////////////////////////// //初始化相关数据结构
void initialize() {
int i,pf;
inpflag=0; //缺页标志,0为不缺页,1为缺页 pf_info.diseffect =0; // 缺页次数
pf_info.flag =0; // 标志位,0表示无页面访问数据
printf(\请输入要分配的页框数:\自定义分配的页框数 scanf(\
pf_info.total_pf =pf;
for(i=0;i<100;i++) // 清空页面序列 {
pf_info.serial[i]=-1; }
}
/////////////////////////////////////////////////////////////////// // 随机生成访问序列 void createps(void ) {
int s,i,pn;
initialize(); //初始化相关数据结构
printf(\请输入要随机生成访问序列的长度:\自定义随机生成访问序列的长度 scanf(\
srand(rand()); //初始化随机数队列的\种子\
s=((float) rand() / 32767) * 50 + pn; // 随机产生页面序列长度 pf_info.total_pn = s;
for(i=0;i
pf_info.serial[i]=((float) rand() / 32767) * 16 ; //随机数的大小在0-15之间 } }
//////////////////////////////////////////////////////////////////////// // 显示当前状态及缺页情况 void displayinfo(void) {
int i,n;
if(vpoint==0) {
printf(\页面访问序列=============\\n\ for(i=0; i printf(\ if ((i+1) % 10 ==0) printf(\每行显示10个 } printf(\ } printf(\访问= : 内存<\ for(n=0;n if (pageframe[n] >=0) printf(\ else printf(\ } printf(\ if(inpflag==1) //缺页标志,0为不缺页,1为缺页 { printf(\缺页 \ printf(\缺页率%3.1f\ } printf(\} //////////////////////////////////////////////////////////////////////// // 查找页面是否在内存,1为在内存,0为不在即缺页 int findpage(int page) { int n; for(n=0;n pagehistory[n] ++; // 访问历史加1 } for(n=0;n if (pageframe[n]==page ) { inpflag=0 ; //inpflag缺页标志,0为不缺页,1为缺页 pagehistory[n]=0; //置访问历史为0 return 1; } } inpflag=1; //页面不存在,缺页 return 0; } //////////////////////////////////////////////////////////////////////// // FIFO页面置换算法 void fifo(void) { int n,count,pstate; rpoint=0; // 页面替换指针初始化为0 invalidcount = 0; // 缺页数初始化为0 createps(); // 随机生成访问序列 count=0; // 是否装满是所有的页框 for(n=0;n pageframe[n]=-1; } inpflag=0; //缺页标志,0为不缺页,1为缺页 for(vpoint=0;vpoint pstate=findpage(pf_info.serial[vpoint]); //查找页面是否在内存 if(count if(pstate==0) // 页不存在则装入页面 { pageframe[rpoint]=pf_info.serial[vpoint]; rpoint=(rpoint+1) % pf_info.total_pf; count++; } } else // 正常缺页置换 { if(pstate==0) // 页不存在则置换页面 { pageframe[rpoint]=pf_info.serial[vpoint]; rpoint=(rpoint+1) % pf_info.total_pf; pf_info.diseffect++; // 缺页次数加1 } } Sleep(10); displayinfo(); // 显示当前状态 } // 置换算法循环结束 getch(); return; } /////////////////////////////////////////////////////////////////// // LRU页面置换算法 void lru(void) { int n,count,pstate,max; rpoint=0; // 页面替换指针 invalidcount = 0; // 缺页次数初始化为0 createps(); // 随机生成访问序列 count=0; // 是否装满所有的页框 for(n=0;n pageframe[n]=-1; // 清除页框信息 pagehistory[n]=0; // 清除页框历史 } inpflag=0; //缺页标志,0为不缺页,1为缺页 for(vpoint=0;vpoint pstate=findpage(pf_info.serial[vpoint]); //查找页面是否在内存 if(count if(pstate==0) // 页不存在则装入页面 { pageframe[rpoint]=pf_info.serial[vpoint]; //把要调入的页面放入一个空的页框里 rpoint=(rpoint+1) % pf_info.total_pf; count++; } } else // 正常缺页置换 { if(pstate==0)// 页不存在则置换页面 { max=0; for(n=1;n if(pagehistory[n]>pagehistory[max])
正在阅读:
《操作系统》实验五:页面置换算法模拟10-09
中国思想文化史复习题10-02
新驾考科目三电子路考要求06-07
2014年秋季学期班主任工作计划03-14
中国人民解放军各集团军编制战斗序列大全05-02
初四政治第一次月考题03-10
太阳能考题03-15
中国传媒大学成人高等教育本科03-08
怎么写读书笔记?这些方法简单又实用02-22
- 企业安全培训试题题库
- 《WEB应用开发》复习题
- 2018届河南省新乡市高三第三次模拟测试英语试题Word版含答案
- 山东省建设工程优质结构评审标准(试行)
- 2016-2022年中国MEMS行业分析及发展趋势预测报告 - 图文
- 工程材料习题和练习 - 图文
- 2013--2014年小学六年级数学毕业水平检测卷及答案
- 江苏省2017-2018学年高考模拟历史试题分解(现代世界经济) Word版
- 移动通信实验指导书
- 2017-2018年最新审定新人教版六年级语文新人教版小学语文六年级
- 会展案例分析教案
- 数据库复习题
- 情智作文之学会选材
- 高一年级十月月考地理试题
- 河南省教育科学“十三五”规划2018年度一般课题立项名单
- 大学生宿舍文化现象调查与分析
- 山东省潍坊市2010届高三第二次模拟考试 理综 Word版
- 风险管理简答题
- 大连广播电视大学
- 民航安全管理经典论文
- 置换
- 算法
- 操作系统
- 模拟
- 实验
- 页面
- 逻辑期末模拟一
- 脂肪在中医理论里认为是痰湿
- 1—安全工作总结
- 2019-2020年八年级(上)物理竞赛试卷
- 高铁乘务专业就业的11大岗位 - 图文
- 秦代法律思想和法律制度与前代有什么不同 完成版
- 历届奥斯卡最佳影片提名 - 图文
- 《马克思主义哲学原理》课程
- 心理健康与个人职业生涯规划4试题及答案
- 框架涵洞施组设计
- 世界现代史名词解释
- 2018年上半年病历质量分析总结与改进措施 - 图文
- 互斥事件和独立事件的概率及条件概率
- 城市桥梁事故应急预案
- 氧化石墨烯改性超滤膜及其净水效能研究 - 图文
- 四年级(下)数学《计算大冲刺》练习试卷1
- 初中语文古诗文背诵积累2009.3.28
- 操作系统期末复习题 带答案
- 浅谈中国地铁信号系统发展
- 石墨烯散热-中文版 - 图文