欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Linux环境下几种内存调度算法模拟.docx

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

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

    Linux环境下几种内存调度算法模拟.docx

    1、Linux环境下几种内存调度算法模拟课程设计(大作业)报告课程名称: 操 作 系 统 设计题目: Linux环境下几种内存调度算法模拟 院 系: 信息学院 班 级: 2012级计算机科学与技术1班 设 计 者: 赵泽金 学 号: * * * 设计时间: 2015.1.122015.1.16 昆明学院昆明学院课程设计(大作业)任务书姓 名:赵泽金 院(系):信息学院专 业:计算机科学与技术 学 号:*任务起止日期:2015.1.122015.1.16课程设计题目:Linux环境下几种内存调度算法模拟课程设计要求及任务描述:要求:(1)按指定时间及地点参加课程设计。(2)通过本次课程设计,能加深理

    2、解设计项目使用的相关原理。(3)根据项目内容完成课程设计。(4)在指定时间内提交设计结果及设计报告。任务:(1)选择其中两种算法的原理进行分析 FIFO内存调度算法的原理 内存调度算法的原理(2)设计两种算法的流程图 设计FIFO算法的流程图。 OPT算法设计流程图。(3)使用Vi编写实现两种算法的程序 FIFO内存调度算法的代码。内存调度算法的代码。(4)结果分析 分析设计结果是否达到预期目标。 针对同一访问序列比较两种算法的缺页率。工作计划及安排:第一天上午:教师讲解原理及课程设计要求和任务。第一天下午:原理学习、任务分析。第二天: 流程图设计。第三天: 代码编写。第四天: 代码编写。第五

    3、天: 提交设计结果及设计报告。指导教师签字 年 月 日 课程设计(大作业)成绩学号:201211010129 姓名:赵泽金 指导教师:段玻课程设计题目:Linux环境下几种内存调度算法模拟完成情况总结:通过这次课程设计我对先进先出FIFO和OPT算法的实现方法有了很多的了解。当然,在编程过程中,也遇到了很多不易解决的问题。诸如:在FIFO内存调度算法中判断该页面是否已在队列内,若在队列内,不执行任何操作,若不在队列内。则执行以下操作 判断队列是否已满,若队列未满,直接把该页面号存入队列。以及对于缺页率的概念不清楚不懂得求缺页率,而且在画流程图时对软件的不熟悉,让我在课程设计中遇到很多阻碍,在老

    4、师、同学的帮助下以及自己多方面查阅资料,顺利的完成了这次课程设计。通过这次课程设计使我体会到了思路的重要性,一个程序如果有好的思路计划,好的设计才能够顺利进行。而且这次课程设计使我更加了解算法的调度过程,完善了很多我以前不懂的算法的调度知识。指导教师评语:成绩:填表时间: 指导教师签名:课程设计(大作业)报告一、两种算法的原理分析1FIFO内存调度算法的原理 先进先出算法选择在内存中驻留时间最长的页面予以淘汰,即先进入内存的页面先淘汰。其优点是算法实现简单,只须把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,使该指针总是指向最先进入内存的页面。缺点是算法与进程的实际运行规

    5、律不相适应,因为进程中的某些页面经常被访问,但先进先出置换算法不能保证这些页面不被淘汰。 2OPT最佳置换算法的原理当要调入一新页而必须淘汰一旧页时,最佳置换算法是所淘汰的页是以后不再使用的,或者是以后相当长的时间内不会使用的。该算法的优点是保证获得最低的缺页率,该算法的缺点是无法预知一个进程在内存的若干个页面,哪个在未来最长时间内不再被访问。OPT算法即最佳优先算法,实质是通过调页功能和页面置换功能,陆续把即将要运行的页面调入内存,并且把暂时不运行的页面从内存在删除,置换时以页面为单位,算出缺页次数和缺页率,缺页数用diseffect 表示,页面序列数m,初始值diseffect=0,缺页率

    6、= diseffect /m。用C语言设计OPT算法的程序,可以模拟实现算法,在理论联系实际的基础上,分析各个OPT页面置换算法的直接访问或是缺页中断,然后替换的过程。为了能实现OPT请求调页和置换功能,在VC+6.0上编程模拟实现。该算法选择永不使用的或是在最长时间内不再被访问的页面进行置换,这是理想化算法,具有最好的性能,淘汰访问串中将来再也不出现的或者是在离当前最远的位置上出现的页,这样淘汰掉该页将不会造成因需要访问该页又立即把它调入的现象。这种算法难以实现,因为它要求必须预先知道每一个进程的访问串。实验中在对操作系统的整体把握上,将操作系统的OPT算法用于实践中去,模拟出页面调度算法得

    7、出缺页率。二、两种算法的流程图表示1FIFO算法的流程图2OPT最佳置换算法的流程图三、两种算法的实现代码1FIFO内存调度算法的代码#include using namespace std; int pagenum=0; /内存的页面数 int total=0; /要访问的叶面总数 int lacknumber=0; /缺页的总数 void main() int array120; /0代表没有内容 for(int y=0;y2;y+) for(int x=0;x20;x+) arrayyx=-1; int seque20=0; coutpagenum; cout请输入页面的访问顺序(输入-

    8、1结束):; for(int i=0;inum; if(num!=-1) sequei=num; total+; else sequei=num;break; cout总的页面数为totalendl; /总的页面数 int j=0; for(i=0;ipagenum;i+) /刚开始置换前pagenum个空页面 if(ipagenum) array0i=sequei; cout页面sequei进入内存endl; cout缺页 此时页面内容为; for(int j=0;jpagenum;j+) coutarray0j ; cout(-1代表没有内容)endl; coutendl; int kk=

    9、0; for(i=pagenum;itotal;i+) int flag=0; for(int k=0;kpagenum;k+) if(array0k=sequei) flag=1;break; coutendl; if(flag=1) cout页面sequei进入内存endl; cout此时页面内容为; for(int j=0;jpagenum;j+) coutarray0j ; coutendl; if(flag=0) int tem=array0kk; array0kk=sequei; cout页面sequei进入内存endl; cout缺页 页面tem被替换endl; cout此时页面

    10、内容为; for(int j=0;jpagenum;j+) coutarray0j ; coutendl; kk+; lacknumber+; /缺页数 if(kk=pagenum) kk=0; lacknumber=pagenum+lacknumber; cout缺页率 =lacknumber/total=float(lacknumber)/float(total)endl; 2、OPT最佳置换算法的代码#include #include #define N 100#define M 10000typedef struct int pagenum; int framenum; int sta

    11、tus; /若status=0则不在内存PAGE;typedef struct int pagenum; int framenum; int status; /若status=0则空闲STORAGE;void OPT();void download();void designBy();void mDelay(unsigned int Delay);void download() /int i; printf(n); printf( 等待进入算法界面. n); printf(n); printf(Loading.n); mDelay(2000); printf( 0); void mDelay(

    12、unsigned int Delay) /延时 unsigned int i; for(;Delay0;Delay-) for(i=0;i124;i+) printf( b); /*显示设计者信息*/ void designBy() system(cls); /清屏 system(color FD); printf(n); printf( 课程设计:OPT页面置换算法 n); printf( n); printf( n); printf( 学号: 201211010129 n); printf( n); printf( n); printf( 姓名: 赵泽金 n); printf(n); vo

    13、id OPT(int n,int m,STORAGE storageN,PAGE pageM) int i,j,k,full=0,diseffect=0,timeM,base=0,equalN,times=0;/若full=n则内存满,timeM是为实现置换所设置的pageM的备份数据栈 int t; for(i=0;im;i+) timei=pagei.pagenum; /备份pageM printf(当前内存中的页(-1代表无页):); for(j=0;jn;j+) printf( %dt,storagej.pagenum); printf(n); for(i=0;im;i+) for(j

    14、=0;jn;j+) if(storagej.pagenum=pagei.pagenum) pagei.framenum=storagej.framenum; pagei.status=1; base+; /从栈中删除已访问的页 printf(直接访问,页%d已在帧%d中,pagei.pagenum,pagei.framenum); /该页在内存,直接访问 if(pagei.status=0) diseffect+; if(fulln) for(j=0;jn;j+) if(storagej.status=0) storagej.pagenum=pagei.pagenum; storagej.st

    15、atus=1; pagei.framenum=storagej.framenum; pagei.status=1; base+;/从栈中删除已访问的页 printf(缺页中断,页%d装入帧%d中,pagei.pagenum,pagei.framenum); full+; break; /有空闲页帧,调入内存并访问相关指令 else for(t=base+1;tm;t+) times=0; for(k=0;kn;k+) if(storagek.pagenum=timet) equalk=1;break; for(k=0;kn;k+) if(equalk=1) times+; if(times=n

    16、-1) break; for(k=0;kn;k+) if(equalk!=1) j=k; else equalk=0; /清零 printf(缺页中断,页%d置换出页%d,pagei.pagenum,storagej.pagenum); pagei.framenum=storagej.framenum; storagej.pagenum=pagei.pagenum;/取出页 pagei.status=1; base+;/从栈中删除已访问的页 /无空闲的页帧,置换出老页 /缺页中断 printf(tt当前内存中的页:); for(j=0;jn;j+) printf(%dt,storagej.pa

    17、genum); printf(n); printf(nn); printf( 缺页率为:%.3fnn,(float)diseffect/m); void main() int n,m,i; PAGE pageM; STORAGE storageN; designBy(); /*显示设计者信息后开始*/ download(); /mDelay(1500); system(cls); system(color 0E); printf(分配的内存页帧:n); scanf(%d,&n); for(i=0;in;i+) storagei.framenum=i; storagei.pagenum=-1;

    18、storagei.status=0; printf(访问的页面序列数:n); scanf(%d,&m); printf(访问的页面序列:n); for(i=0;im;i+) scanf(%d,&pagei.pagenum); pagei.status=0; OPT(n,m,storage,page); 四、结果分析1.分析设计结果是否达到预期目标(1)在计算缺页率时,由于访问页面次数不是固定的,得到的缺页率可能是一个无限循环的小数,因此经过在网上查找相关资料后用,用一个方法即可只输出小数点后两位。(2)在增加了手动输入索引号后,要再次使用算法时会出现异常,经过加入异常捕获后,就可以循环输入索引

    19、号并使用算法了。FIFO运行结果:2.OPT运行结果:(1)输入以下的页面序列,定义物理块数为3,按照表格的分析,可得缺页数为5,则缺页率=5/12=0.417,验证和程序设计的结果一致。(-1代表缺页)页面走向212342353252缺页置换-1-1-1-14-1222222222222-1-111144455555-1-1-1-1333333333(2)如下图(1)为初始界面,显示学号姓名延时2000ms,然后清屏显示程序主界面,如图(2)所示,依次按提示输入物理块号,页面序列数,并显示缺页率。图(1)初始界面 图(2)操作界面五、实验总结及心得体会实验总结:在本次课程设计中,我对FIFO

    20、和OPT两种内存调度算法的原理和实现方式有了更多的了解。这次课程设计使我体会到了思路的重要性,一个程序如果有好的思路计划,好的设计才能够顺利进行。而且这次课程设计使我更加了解算法的调度过程,完善了很多我以前不懂的算法的调度知识。通过对两种内存调度算法的模拟实现,对比运行结果,发现对于同一访问序列,OPT算法和FIFO算法都各有优势。在linux中调试和运行程序,对linux中的使用有了更多的认识,尤其是在linux中实现文件的共享这一功能,避免了每次都在Vi中重复输入代码,减少了工作量。而且在画流程图时,要了解画流程图的软件且要读懂源代码,才能顺利正确的画出两种算法的流程图。通过本次课程设计,我对以前学过的知识有了更深的记忆和理解,特别是对linux中的各种命令的使用更加熟练,也学到了很多新的有用的知识。心得体会:在这个课程设计过程中,很多时候往往由于不细心在写程序代码时一些单词拼写错误,字母的大小写不注意,程序的格式出错。都会使得程序无法调试成功,操作不当都会使得最后输出结果有偏差或者错误。这些告诉我不管在做任何事情都应该持有认真严谨的态度,重视学习过程中的细节。才能让我们学到更多东西。重视基础知识,不断的提高自己的操作能力,对学到的知识学于致用,才能在今后的生活中学到更多东西。


    注意事项

    本文(Linux环境下几种内存调度算法模拟.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开