学号:Xxxxxxxxx实践课设计报告课程名称计算机操作系统题目模拟设计存储管理的分配与回收学院计算机科学与技术学院专业计算机科学与技术班级xxxx姓名xxx指导教师xxx2016年12月29日武汉理工大学《计算机操作系统》实践报告1目录1需求分析...........................................................................................................................................................21.1页式管理的基本原理...........................................................................................................................21.2实验要求...............................................................................................................................................22功能设计...................................................................................................................................................22.1算法分析...............................................................................................................................................22.2数据结构...............................................................................................................................................42.3模块说明...............................................................................................................................................42.3.1主函数.......................................................................................................................................42.3.2各个功能函数...........................................................................................................................42.3.3打印函数...................................................................................................................................4参考文献......................................................................................................................................................9源代码:....................................................................................................................................................10武汉理工大学《计算机操作系统》实践报告21需求分析1.1页式管理的基本原理页式管理是一种内存空间存储管理的技术,页式管理分为静态页式管理和动态页式管理。基本原理是将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小划分成片或者页面(pageframe),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。页式管理采用请求调页或预调页技术实现了内外存存储器的统一管理。图1页的划分1.2实验要求⑴能够输入给定的内存页面数,页面大小,进程的个数及每个进程的页数。⑵当某进程提出申请空间的大小后,显示能否满足申请,以及为该进程分配资源后内存空间的使用情况(被进程占用的页面,空闲的页面)。⑶当某进程撤消时,显示内存回收后内存空间的使用情况。2功能设计2.1算法分析模拟页式管理中置换算法中的先进先出算法(FIFO),FIFO算法总是选择在内存驻留时间最长的一页将其淘汰。武汉理工大学《计算机操作系统》实践报告3武汉理工大学《计算机操作系统》实践报告4图2算法流程图2.2数据结构(1)定义整型变量length来保存进程的页面数,定义数组order[30]来存储进程页面的逻辑地址,数组ad[100]存放逻辑页的页内位移。(2)定义变量num_page存储物理块的数目,定义变量wlsize存储物理块的大小,物理块的大小一般为2的n次方,定义数组a[10]存放物理块中的存储的逻辑页。(3)定义数组result[20][30]存储记录结果,定义数组result1[30]记录是否缺页。(4)定义变量q来记录缺页次数。2.3模块说明2.3.1主函数intmain()//主函数{init();//初始化函数fifo();//先进先出算法函数return0;}2.3.2各个功能函数voidinit()//初始化函数boolsearch(intn,intx)//查找当前是否已存在,如果存在返回真值,不存在则返回假voidfifo()//先进先出voidagain()//再输入函数2.3.3打印函数voidprint()3开发平台(1)使用系统:Windows10武汉理工大学《计算机操作系统》实践报告5(2)使用语言:C++(3)开发工具:VisualStudio20154运行结果与运行情况分析(1)根据提示输入物理块数、物理块大小、进程的页面数和每个页面的逻辑地址(2)按完回车以后调用程序计算出每一个逻辑页的物理内存并输出,同时打印出详细的替换过程和计算缺页率。武汉理工大学《计算机操作系统》实践报告6(3)根据提示选择下一步操作武汉理工大学《计算机操作系统》实践报告75自我总结与评价此次试验是完全在自己独立完成的,首先在分析问题并把问题转化为编程问题,我觉得个人把握的很好,对页式管理的基本原理理解的比较透彻。这次自己的收获还是不小,首先使我提高了分析问题,并根据需求转化成相应的程序结构的能力;其次也丰富了自己编写程序,调试程序的经验,这使得我编程时可能出现的错误的认识,并如何去避免产生了新的认识。总的来说这次试验比较成功,加深我对页式管理的理解,同时也提高了自己的编程的武汉理工大学《计算机操作系统》实践报告8能力。做了这么多次课程实践了,大致的过程都熟悉了,每次的动手实践,调动了我们主动学习的积极性,并引导我们根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。通过详细的实例,循序渐进地启发我们完成课内实践。从拿到题目到完成整个编程,从理论到实践可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。知识的获得是无止境的,只要你想学,只要你行动,就一定会有所收获的。武汉理工大学《计算机操作系统》实践报告9参考文献【1】张尧学,宋虹,张高.计算机操作系统教程(第4版).北京:清华大学出版社【2】张尧学,宋虹,张高.计算机操作系统教程(第4版)习题解答与实验指导.北京:清华大学出版社,2000武汉理工大学《计算机操作系统》实践报告10源代码:#includeiostream#includestdlib.husingnamespacestd;intlength,num_page,ad[100];//length进程的页面数,num_page物理块数intresult[20][30],order[30],a[10];//result记录结果,order存储进程页面逻辑地址,a存储当前物理块中的值charresult1[30];//记录缺页数组intq=0;//q记录缺页次数intwlsize;//每一个物理块的大小intflag1,flag2,flag3;voidinit(){inttemp;memset(a,-1,sizeof(a));cout请输入物理块数:endl;cinnum_page;cout请输入物理块大小:endl;cinwlsize;cout请输入进程的页面数:;cinlength;for(inti=0;ilength;i++){cout请输入第[i]个页面的逻辑地址:;cintemp;order[i]=temp/wlsize;//页号ad[i]=temp%wlsize;//页内位移}}voidprint(){inti,j;coutendl(*表示缺页)endl;for(j=0;jlength;j++)printf(%2d,order[j]);coutendl;cout-------------------------------------------------------------------------endl;for(i=0;inum_page;i++){武汉理工大学《计算机操作系统》实践报告11for(j=0;jlength;j++){if(result[i][j]==-1)printf();}coutendl;}for(j=0;jlength;j++){printf(%2c,result1[j]);}coutendl;cout缺页率:q/length;cout%endl;}voidagain()//用于再输入{print();intnumpage,m;printf(**************************************\n);printf(1.重新输入新序列.\n);printf(2.不改变访问序列只改物理块数.\n);printf(0.不操作退出.\n);printf(**************************************\n);printf(选择所要操作:);cinm;if(m==1){flag1=1;//重新输入init();//fifo();}elseif(m==2){flag2=1;cout输入新物理块数:;cinnumpage;num_page=numpage;memset(a,sizeof(a));}elsereturn;}boolsearch(intn,in