操作系统课程设计报告书_第1页
操作系统课程设计报告书_第2页
操作系统课程设计报告书_第3页
操作系统课程设计报告书_第4页
操作系统课程设计报告书_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

设计题目:设计一个虚拟存储区和内存工作区要求完成的主要任务通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,设计一个虚拟存储区和内存工作区,并使用下述算法计算访问命中率。3、最近最久未使用算法(LRU)应的页地址流,并针对不同的算法计算出相应的命中率。1设计题目与要求2设计思想3系统结构4数据结构的说明和模块的算法流程图5使用说明书(即用户手册):内容包含如何登录、退出、读、写等操作说明6运行结果和结果分析(其中包括实验的检查结果、程序的运行情况)8附录:程序清单,注意加注释(包括关键字、方法、变量等在每个模块前加时间安排课程设计报告书一.设计题目:设计一个虚拟存储区和内存工作区1、设计一个虚拟存储区和内存工作区,并使用下述算法计算访问命中率。①最佳淘汰算法(OPT)②先进先出的算法(FIFO)③最近最久未使用算法(LRU)页地址流,并针对不同的算法计算出相应的命中率。2、所编辑的程序能够在Linux系统中GCC环境下正常运行。先建立三种算法的基本结构,再在主程序中调用,并实现其功能。1、最近最久未使用(LRU)置换算法的思路最近最久未使用置换算法的实质是当需要置换一页时,选择最长时间未被使用的那一页淘汰。为了能检测出那一页长时间未被使用我们可以设置一个计数器oldest2(),把每一次放入固定内存内的序列数做一个统计,通过选择将计数最少的数淘汰出去。2、最佳淘汰(OPT)置换算法的思路最佳算法是当调入一新页而必须先淘汰一旧页,所淘汰的那一页应是以后不再使用的,或者是在最长时间段之后才会用到的页。这就需要我们先要知道所要放入页的内容,然后逐一判断那些页应该在放入内存后可以被淘汰。这个我用oldest能,先用两个循环对内存中的数与随机序列对比,看有没有相等的数,然后利用计数器oldest2()返回未来最长时间不使用的页面位置。3、先进先出(FIFO)置换算法的思路一个查询函数IsInBuf()来判断所要置换的页面与内存中的页面是否有重复,重复不置换,不重复就利用一个赋值语句将旧页置换出来,这里最重要的是页号的操作,可以利用一个控制语句old=(old+1)%(int)B来进行页面的转换。四.系统结构:(LRU)模块主程序模块使用最佳淘汰算法(OPT)使用最近最久未使用算法(LRU)的命中率模块使用先进先出的算法(FIFO)的命中率最佳淘汰算法(OPT)模块程序系统结构图五.数据结构的说明和模块的算法流程图作业的页面走向(执行过程中对页面的访问顺序)用数组,页面走向的长度控制以-1为页框(作业分得的物理块)在不同置换算法执行之前长度由不同的置换算法其数据结构算法的流程图算法的流程图假判断i<N真j=IsInBuf(buf,list[i];判断是否置换真判断buf[old]==-1假输出空字符输出置换页buf[old]将新的序列装入内存中buf[old]=list[i]输出空字符;i++;假真假判断i<N真j=IsInBuf(buf,list[i];假判断是否置换假真输出置换页buf[old]将新的序列装入内存中buf[old]=list[i]将位置换内存技术数组清零:f[j]=0;输出空字符;i++;假判断i<N真j=IsInBuf(buf,list[i];假判断是否置换假真输出置换页buf[old]将新的序列装入内存中buf[old]=list[i]输出空字符;i++;1.2gedit文件名&(打开Linux系统内置的编译器并把文件导入文本区)1.4再次输入./a.out(运行源程序并得出结果)2.1直接将编好的文件导入到编译器中2.2如图按钮执行编译运行操作2.3退出直接关闭编译器即可七.运行结果及分析八.自我评价与总结到位,对于函数的形参与实参之间的转化还不是很清楚。虽然在学习课本知识的时候感觉老行结果的一次又一次的检查还有在老师的帮助下我才慢慢的洞察到自己到底哪里出现了问题,在设置置换标志与判断是否置换的条件设计上出现了考虑不周全的情况。在找空闲物理时候都是把0替换出去,才恍然大悟,既然页面序列数有0就不能用0来表示空闲物理块,后来换成-1问题就解决了。总而言之,虽然程序不是很完美,但是付出了汗水,也收获了结果,今后对于此类问题的设计可以有一个很好的借鉴意义。希望能有下一次的实践机会,争取在程序设计的界面和/* -----------------------------------------------------------------intIsInBuf(intbuf[],intx){inti,j=-1;{if(buf[i]==x){j=i;break;}elseif(buf[i]==-1){buf[i]=x;j=i;break;}}}/*----------------------------------------------------------------------------------------------------------------------------------------------------------*/intoldest(intlist[],intbuf[{inti,j;for(i=0;i<B;i++){{if(buf[i]==list[j])break;}f[i]=j;}}/*-----------------------------------------------------------------------------------------------------------------------------------------------------------*/{for(i=0;i<B;i++){if(f[i]>max){max=f[i];j=i;}f[i]++;}}/*---------------------------------------------------------------------------------------------------------------------------------------------------------*/{intlist[N];intbuf[B],f[B],i,j,k,max,min;intold=0;printf("本程序假设内存为程序分配的内存块数是4!\n");/*生成一系列随机数并初始化环境*/for(i=0;i<B;i++)buf[i]=f[i]=-1;for(i=0;i<N;i++){printf("%2d",list[i]);}printf("\n");/*显示OPT淘汰页面的序列*/for(i=0;i<B;i++)buf[i]=f[i]=-1;{j=IsInBuf(buf,list[i]);if(j==-1){buf[old]=list[i];f[old]=0;}{printf("");}}/*输出OPT算法的命中率*//*显示FIFO淘汰页面的序列*/for(i=0;i<B;i++)buf[i]=-{j=IsInBuf(buf,list[i]);if(j==-1){if(buf[old]==-1)printf("");buf[old]=list[i];}printf("");}/*输出FIFO算法的命中率*//*显示LRU淘汰页面的序列*/for(i=0;i<B;i++)buf[i]=f[i]=-1;{j=IsInBuf(buf,list[i]);if(j==-1){buf[old]=list[i];f[old]=0;}{f[j]=0;print

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论