欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    os页面置换算法模拟实现实验报告.doc

    • 资源ID:62474865       资源大小:451KB        全文页数:14页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    os页面置换算法模拟实现实验报告.doc

    实验报告实验2 页面置换算法实现一、实验目的 通过页面置换算法的程序实现,加深理解。二、设计内容(1)概述在进程运行过程中,若其所要访问的页面不在内存所需把他们调入内存,但内存已无空闲时,为了保证进程能够正常运行,系统必须从内存中调入一页程序或数据送磁盘的对换区中。但应将那个页面调出,须根据一定的算法来确定。通常,把选择换出页面的算法称为页面置换算法。置换算法的好坏,将直接影响到系统的性能。一个好的页面置换算法,应具有较低的页面更换频率。从理论上将讲,应将那些以后不再访问的页面换出,或把那些较长时间内不再访问的页面调出。目前存在着不同的算法,他们都试图更接近与理论上的目标。拥有页面交换机制的操作系统总是把当前进程中急需处理的部分页面换入到内存当中,而把更多暂时不需要处理的页面放置在外存当中。由于进程需要处理的页面顺序不同,因此必须要在内存与外存之间进行页面交换,页面置换算法也就应运而生。(2)设计原理1.先进先出(FIFO)算法这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存停留时间最久的给予淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替代指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在incheng中,有些页面经常被访问,比如,含有全局变量,常用函数,例程等方面,FIFO算法并不能保证这些页面不被淘汰。当需要选择一个页面淘汰时,总是选择最先进入内存空间的那一个页面。只要在系统中建立一个FIFO队列,以反映页面的活动情况。被选择的页面总是处于队首的页面,而最近调入的页面永远存放在队列的尾部。2.最近最久未使用(LRU)算法FIFO置换算法的性能之所以较差,是因为它所依据的条件是各个页面调入内存的时间,而页面调入的先后不能反映页面的使用情况。最近最久未使用(LRU)的页面置换算法,是根据页面调入内存后的使用情况进行决策的。由于无法预测各个页面将来的使用情况,只能利用“最近的过去”,作为“最近的将来”的近似。该算法的基本思想是用最近的过去估计最近的将来。假定在内存中的某个页面,在最近一段时间内未被使用的时间最长,那么在最近的将来也可能不再被使用。3.理想页面置换(OPT)算法最佳置换算法由Belady于1966年提出,这是一种理想情况下的页面置换算法,但实际上不可能实现。但人们目前把还无法预知一个进程在内的若干页面中,哪一个页面是未来最长时间内不再被访问,因而该算法无法实现。基本思想是内存中每个页都用该页面首次被访问前所要执行的指令数进行标记,标记最大的页应该被置换三、详细设计及编码1 进入系统模块。进入登陆界面,输入内存页面数和实际页数2 页面号打印模块。打印输入的页面号。3 菜单选择模块。选择相应的页面的置换方式,选择相应的字母,进入相应的功能。4 算法模块。选择相应的页面置换算法。5 显现输出模块。显示页面被置换的情况。5.缺页次数和缺页率模块。计算页面号输入的计算结果。6.退出系统模块。退出置换页面。2.系统详细设计1系统主界面设计(包含登陆模块设计) 首先贯穿全局的全局需要一系列的函数来实现本操作系统的各种功能。需要函数自带的文件 和 首先输入的页数自定义最大值为40程序用#define M 40实现。为了防止输入的页数太多,超出自定义40个数的范围,通过输入函数实现:int Input(int m,Pro pM) /输入函数。2.系统模块。首先通过打印当前的页面 void print(Pro *page1) /打印当前的页面Pro *page=new ProN;page=page1;for(int i=0;i<N;i+)cout<<pagei.num<<" "cout<<endl; 查找内存中是否存在要调入的页面int Search(int e,Pro *page1 ) Pro *page=new ProN;page=page1;for(int i=0;i<N;i+)if(e=pagei.num)return i;return -1;找出离现在时间最长的页面int Max(Pro *page1) Pro *page=new ProN;page=page1;int e=page0.time,i=0;while(i<N)if(e<pagei.time)e=pagei.time;i+; for( i=0;i<N;i+)if(e=pagei.time)return i;return -1;找到最久不使用的页面int Compfu(Pro *page1,int i,int t,Pro pM) Pro *page=new ProN;page=page1;int count=0;for(int j=i;j<M;j+)if(paget.num=pj.num )break;else count+;return count;3. FIFO页面置换和缺页次数及缺页率模块实现如下:if(c='1')/FIFO页面置换n=1;cout<<"页面置换情况: "<<endl;while(i<m)if(Search(pi.num,page)>=0)i+;/找到相同的页面else if(t=N)t=0;else n+;paget.num=pi.num;print(page);t+;cout<<"缺页次数:"<<n<<" 缺页率:"<<n/m<<endl; 4LRU页面置换和缺页次数及缺页率模块实现如下:if(c='2')/LRU页面置换 n=1;cout<<"页面置换情况: "<<endl; while(i<m) int k;k=t=Search(pi.num,page);if(t>=0)paget.time=0;else n+; t=Max(page);paget.num=pi.num;paget.time=0;if(t=0)paget+1.time+;paget+2.time+;if(t=1)page2.time+;page0.time+;if(t=2)page1.time+;page0.time+; if(k=-1) print(page);i+;cout<<"缺页次数:"<<n<<" 缺页率:"<<n/m<<endl; 5OPT页面置换和缺页次数及缺页率模块实现如下(本代码在页面置换中:if(c='3')/OPT页面置换n=1;while(i<m)if(Search(pi.num,page)>=0)i+;elseint temp=0,cn;for(t=0;t<N;t+)if(temp<Compfu(page,i,t,p)temp=Compfu(page,i,t,p);cn=t;pagecn=pi;n+;print(page);i+;cout<<"缺页次数:"<<n<<" 缺页率:"<<n/m<<endl; 四、结果及分析 1.测试方案 1. 测试方案(一) 输入可用页面为3,实际页数是20,各个页面号7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1选择实验要求FIFO页面置换,然后选择LRU算法。最后选择OPT(对比)。2. 测试方案(二)输入可用页面为3,实际页数是20,各个页面号1 0 7 1 0 2 1 2 2 3 0 3 4 0 3 0 2 1 0 7选择实验要求FIFO页面置换,然后选择LRU算法。最后选择OPT(对比1)3.测试方案(三) 输入可用页面为4,实际页数是20,各个页面号7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1(课本例题)选择实验要求FIFO页面置换,然后选择LRU算法。最后选择OPT(对比)2.测试结果 1. 测试方案(一)结果。输入可用页面为3,实际页数是20,各个页面号7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 测试成功。见图(图4-1输入页面登陆与输入)选择FIFO页面置换时显示页面置换情况、缺页次数和缺页率(见图4-2 FIFO页面置换界面)。图4-1输入页面登陆与输入图4-2 FIFO页面置换界面选择LRU页面置换时显示页面置换情况、缺页次数和缺页率(见图4-3 LRU页面置换界面) 图4-3 LRU页面置换界面选择OPT页面置换时(对比)显示页面置换情况、缺页次数和缺页率(见图4-4OPT页面置换界面)图4-4 3OPT页面置换界面2. 测试方案(二)结果。输入可用页面为3,实际页数是20,各个页面号1 0 7 1 0 2 1 2 2 3 0 3 4 0 3 0 2 1 0 7 测试成功。见图(图4-5输入页面登陆与输入)选择FIFO页面置换时显示页面置换情况、缺页次数和缺页率(见图4-5 FIFO页面置换界面) 图4-5输入页面登陆与输入选择LRU页面置换时显示页面置换情况、缺页次数和缺页率(见图4-6 LRU页面置换界面)选择OPT页面置换时(对比)显示页面置换情况、缺页次数和缺页率(见图4-7OPT页面置换界面)图4-6 LRU页面置换界面 图4-7OPT页面置换界面3. 测试方案(三)结果。输入可用页面为3,实际页数是20,各个页面号7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1 测试成功。见图(图4-1输入页面登陆与输入)选择FIFO页面置换时显示页面置换情况、缺页次数和缺页率(见图4-8 FIFO页面置换界面)图4-8 FIFO页面置换界面选择LRU页面置换时显示页面置换情况、缺页次数和缺页率(见图4-9LRU页面置换界面)选择OPT页面置换时(对比)显示页面置换情况、缺页次数和缺页率(见图4-10OPT页面置换界面) 图4-9LRU页面置换界面 图4-9LRU页面置换界面3.测试结果分析从上述结果可知,在内存页面为3个页面时, 由于用户进程的所有指令基本上都没装入内存,只装入一小部分,从而算法之间的差别比较大。三种算法的访内命中率大致在45至75之间变化。但是,FIFO算法与OPT算法之间的差别一般在25个百分点左右。 比较上述三种算法,以OPT算法的命中率最高, LRU算法次之,其次是FIFO算法。五、设计小结原以为本题看起来很简单,也就不过是一个随机数函数和三种算法实现而已,但是事实证明我彻彻底底的错了。 首先是随机数生成,来回看了好几遍都没弄懂生成方法,最后经同学指点一下才终于明白,由于个人水平有限,光是理解原理及理清程序结构就已经花费了很多宝贵的时间。 本次实验中体会最深刻的就是运用了构件化的方法来测试模块,否则面对如此可观的代码量,如果每次都是编写完一点功能或者编写完所有功能才进行测试,debug的话都不知道从哪儿找起了,特别对于编程水平不高的自己来说,这样做无疑是自掘坟墓,程序完成之日将遥遥无期。六、实验代码#include<iostream.h>#define M 40int N;struct Pro/结构体int num,time;int Input(int m,Pro pM)/输入函数cout<<"请输入实际页数:"docin>>m;if(m>M)cout<<"数目太多,请重试"<<endl;else break;while(1);cout<<endl<<"请输入各页面号"<<endl;for(int i=0;i<m;i+)cin>>pi.num;pi.time=0;return m;void print(Pro *page1)/打印当前的页面Pro *page=new ProN;page=page1;for(int i=0;i<N;i+)cout<<pagei.num<<" "cout<<endl;int Search(int e,Pro *page1 )/查找内存中是否存在要调入的页面Pro *page=new ProN;page=page1;for(int i=0;i<N;i+)if(e=pagei.num)return i;return -1;int Max(Pro *page1)/找出离现在时间最长的页面Pro *page=new ProN;page=page1;int e=page0.time,i=0;while(i<N)if(e<pagei.time)e=pagei.time;i+;for( i=0;i<N;i+)if(e=pagei.time)return i;return -1;int Compfu(Pro *page1,int i,int t,Pro pM)/找到最久不使用的页面Pro *page=new ProN;page=page1;int count=0;for(int j=i;j<M;j+)if(paget.num=pj.num )break;else count+;return count;int main()cout<<"可用内存页面数"<<endl;cin>>N;Pro pM;Pro *page=new ProN;char c;int m=0,t=0;float n=0;m=Input(m,p);dofor(int i=0;i<N;i+)/初试化页面基本情况pagei.num=0;pagei.time=2-i;i=0;cout<<"f:FIFO页面置换"<<endl;cout<<"l:LRU页面置换"<<endl;cout<<"o:OPT页面置换"<<endl;cout<<"按其它键结束"<<endl;cin>>c;if(c='f')/FIFO页面置换n=1;cout<<"页面置换情况: "<<endl;while(i<m)if(Search(pi.num,page)>=0)i+;/找到相同的页面elseif(t=N)t=0;elsen+;/paget.num=pi.num;print(page);t+;cout<<"缺页次数:"<<n<<" 缺页率:"<<n/m<<endl;if(c='l')/LRU页面置换 n=1;cout<<"页面置换情况: "<<endl;while(i<m)int k;k=t=Search(pi.num,page);if(t>=0)paget.time=0;elsen+;t=Max(page);paget.num=pi.num;paget.time=0;if(t=0)paget+1.time+;paget+2.time+;if(t=1)page2.time+;page0.time+;if(t=2)page1.time+;page0.time+;if(k=-1) print(page);i+;cout<<"缺页次数:"<<n<<" 缺页率:"<<n/m<<endl;if(c='o')/OPT页面置换n=1;while(i<m)if(Search(pi.num,page)>=0)i+;elseint temp=0,cn;for(t=0;t<N;t+)if(temp<Compfu(page,i,t,p)temp=Compfu(page,i,t,p);cn=t;pagecn=pi;n+;print(page);i+;cout<<"缺页次数:"<<n<<" 缺页率:"<<n/m<<endl;while(c='f'|c='l'|c='o');return 0; 致 谢时光荏苒,感谢教给我人生道理的老师。结语:

    注意事项

    本文(os页面置换算法模拟实现实验报告.doc)为本站会员(e****s)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开