版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上操作系统课程设计专题:页面置换算法任务:设计一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算访问命中率:要求设计主界面以灵活选择某算法,且以下算法都要实现1)先进先出算法(FIFO)2)最近最久未使用算法(LRU)3)最佳置换算法(OPT)思想:1. 最佳置换算法:最佳置换算法是一种理论上的算法,其所选择的被淘汰页面,将是以后永不使用的,或者是在最长(未来)时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 177722224440000000777000
2、00333222221111100001111000333332222212. 先进先出页面置换算法:这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即使选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按先后次序连接成一个队列,并设置一个指针,成为替换指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,所以先进先出算法并不能保证这些页面不被淘汰。7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 17772222444000111111100000000033333300
3、000001113332222222227773. 最近最久未使用置换算法:最久最久未使用的页面置换算法,是根据页面调入的先后的使用情况进行决策的。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来经历的时间t,当须淘汰一个页面时,选择现有页面中其t值最大的,即使最近最久未使用的页面予以淘汰。最近最久未使用算法7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1777222222222222227770000000444000000000000111333333331111111任务目的:1通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟储技
4、术的特点。2通过对页面、页表、地址转换和页面置换过程的模拟,加深对请求调页系统的原理和实现过程的理解。3掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。方案:输入页面序列,缺页时按FIFO、LRU、OPT的策略进行页面置换,输出置换情况和缺页次数。假设页面数不超过pSIZE。process20表示简化了的页表,只包含页号序列。mSIZE表示分配给该进程的块数。Count用来表示置换次数。初始化:输入分配的块数mSIZE,输入页面序列,存放于数组process20中。按照循环,依次查找页面是否存在于页表中,不存在则置换页面,初始为0,变化同上。格式化依次
5、输出访问下一个页面后的页表,然后输出缺页中断总次数框图:程序:#include #include #define mSIZE 3#define pSIZE 20static int memerymSIZE=0,0,0;static int processpSIZE=0;void FIFO();void LRU();void OPT();int main() int code,password; get(); do printf(-n); printf(| * * * |n); printf(| 1.FIFO * * * * * |n); printf(| * * |n); printf(| 2
6、.LRU * * * * * * * |n); printf(| * * * * * * * * |n); printf(| 3.OPT * * * * * * |n); printf(| * * * * * * * |n); printf(| 4.EXIT * * * * * * |n); printf(-*-n); printf(enter your choice:); scanf(%d,&code); switch(code) case 1: FIFO(); break; case 2: LRU(); break; case 3: OPT(); break; case 4:break;
7、while (code!=4); system(PAUSE); return 0;get() int i,n; for(i=0;i20;i+) printf(process%d=,i); scanf(%d,&processi) ; printf(n); void FIFO() int memerymSIZE=0,0,0; int timemSIZE=0,0,0; int i,j,k; int max=0; int count=0; for(i=0;ipSIZE;i+) printf(%d ,processi); printf(n); for(i=0;imSIZE;i+) memeryi=pro
8、cessi; timei=i; for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); /*前mSIZE个数直接放入*/ for(i=mSIZE;ipSIZE;i+) for(j=0,k=0;jmSIZE;j+) if(memeryj!=processi) k+; /*判断新页面号是否在物理块中*/ if(k=mSIZE)/*如果都不在物理块中*/ count+; if(time0time1) max=0; else max=1; if(time2timemax) max=2; memerymax=processi; timemax=i; for(
9、j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); else for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); printf(time:%dn,count); printf(min zhong lv=%d%,(20-count)*100/20); getch();void LRU() int memerymSIZE=0,0,0; int flagmSIZE=0,0,0; int i,j,k; int max=0,maxflag=0; int count=0; for(i=0;ipSIZE;i+) pr
10、intf(%d ,processi); printf(n); for(i=0;imSIZE;i+) memeryi=processi; flagi=i; for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); /*前mSIZE个数直接放入*/ for(i=mSIZE;ipSIZE;i+) for(j=0,k=0;jmSIZE;j+) if(memeryj!=processi) k+; else flagj=i; /*判断新页面号是否在物理块中*/ if(k=mSIZE)/*如果都不在物理块中*/ count+; if(flag0flag1) max
11、=0; else max=1; if(flag2flagmax) max=2; memerymax=processi; flagmax=i; for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); else for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); printf(time:%dn,count); printf(min zhong lv=%d%,(20-count)*100/20); getch();void OPT() int memerymSIZE = 0,0,0; int nextmS
12、IZE=0; int i,j,k,l; int count=0,maxnext,max; for(i=0;ipSIZE;i+) printf(%d ,processi); printf(n); for(i=0;imSIZE;i+) memeryi=processi; for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); /*前mSIZE个数直接放入*/ for(i=mSIZE;ipSIZE;i+) for(j=0,k=0;jmSIZE;j+) if(memeryj!=processi) k+; /*判断新页面号是否在物理块中*/ if(k=mSI
13、ZE)/*如果都不在物理块中*/ count+; for(l=i+1;lpSIZE;l+) if(memery0=processl) next0=l; goto lin1; next0=l; goto lin1; lin1:for(l=i+1;lpSIZE;l+) if(memery1=processl) next1=l; goto lin2; next1=l; goto lin2; lin2:for(l=i+1;l=next1) max=0; else max=1; if(next2=nextmax) max=2; memerymax=processi; for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); else for(j=0;jmSIZE;j+) printf(%d ,memeryj); printf(n); printf(time=%dn,count); printf(min zhong lv=%d%,(20-count)*100/20);getch()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业强制停电合同范本
- 2025年新能源汽车充电设施数据治理与充电桩市场分析
- 浙江省金华市第四中学2024-2025学年九年级上学期英语期中试卷(含答案)
- 广东省广州市白云区永平片2024-2025学年九年级上学期期中练习英语试卷(含答案)
- 2025年公文写作重点题库及答案
- 2025年高压电工实操考试题库(试题含答案)
- 绿色制造:微藻生物塑料材料的技术创新
- 2025年高考政治试题及答案
- 2025年高考时事政治时事政治考试题库附参考答案详解【a卷】
- 社会学领域社区发展及其在社会发展中的作用分析报告
- 家庭用电安全教育课件
- 职业生涯的评估与修正
- 2025河北秦皇岛市抚宁区为乡镇街道和区直单位选调全额事业人员68人笔试考试备考试题及答案解析
- 中小学英语衔接教学策略
- 015《煤矿安全规程》修改条款学习辅导:第十五讲 电气
- 水电站消防安全培训课件
- 2025年中石油考试题大全及答案
- 学堂在线 人工智能原理 章节测试答案
- (完整)中国的丹霞地貌ppt
- 出租厂房建筑和设施安全检查表
- 2021译林版高中英语选择性必修二课文翻译
评论
0/150
提交评论