预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共15页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

-..word.zl.操作系统课程设计LRU页面调度算法学号:姓名:学院:专业:班级:指导教师:日期:-..word.zl.目录一、实验题目1二、课程设计的目的1三、设计容1四、设计要求1五、设计思想1六、主要数据构造及其说明2七、硬件支持3八、源程序文件3九、程序运行结果7十、实验体会8-..word.zl.一实验题目LRU页面调度算法二课程设计的目的操作系统课程设计是计算机专业重要的教学环节,它为学生提供了一个既动手又动脑,将课本上的理论知识和实际有机的结合一起,独立分析和解决实际问题的时机。1.进一步稳固和复习操作系统的根底知识。2.培养学生构造化程序、模块化程序设计的方法和能力。3.提高学生调试程序的技巧和软件设计的能力。4.提高学生分析问题、解决问题以及综合利用C语言进展程序设计的能力。三设计容程序应模拟实现LRU算法思想,对n个页面实现模拟调度。四设计要求1.不同的功能使用不同的函数实现〔模块化〕,对每个函数的功能和调用接口要注释清楚。对程序其它局部也进展必要的注释。2.对系统进展功能模块分析、画出总流程图和各模块流程图。3.用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功能可以反复使用,最好使用菜单。4.通过命令行相应选项能直接进入某个相应菜单项选择项的功能模块。5.所有程序需调试通过。五设计思想最近最久未使用〔LRU〕页调度算法是选择最近最久未使用的页面予以淘汰。算法赋予每个页面一个字段,用来记录一个页面自上次被以来所经历的时间,当所要的页面在存块中时,就不淘汰页面,否那么,淘汰页面中时间最长的,即淘汰最近最久未使用的页面。Lru(a[i],b)Init(b,c)输入页面号开场输出queue[i]缺页次数和缺页率是否继续?yn完毕算法流程图六主要数据构造及其说明程序执行是稳定的,高效的。在LRU算法中,要找出最近最久未使用的页面的话,就必须设置有关的记录项,且每一次这些记录项,叶面都必须更新这些记录项。这个记录项在此程序中为:typedefstructpage{intnum;/*记录页面号*/inttime;/*记录调入存时间*/}Page;//页面逻辑构造,构造为方便算法实现设计如此,显然要花费较大的系统开销〔包括时间和空间上的〕,这也是实际系统中不采用LRU算法的直接原因,但由于其页面置换的优越性,实际系统中常使用LRU的近似算法。七硬件支持为了了解一个进程在存中的各个页面各有多少时间未被进程,以及如何快速的知道哪一页是最近最久未使用的页面,须有两类硬件之一的支持:存放器或栈。存放器:为了记录某进程在存中各页的使用情况,须为每个在存中的页面配置一个移位存放器。栈:可利用一个特殊的栈来保存当前使用的各个页面的页面号。每当进程某页面时,便将该页面的页面号从战中移出,将它压入栈顶。因此,栈顶始终是最新被页面的编号,而栈底那么是最近最久未使用页面的页面号。八源程序文件#include<stdio.h>#include<conio.h>#include<stdlib.h>#defineM3//物理块数#defineN10//页面数#defineMyprintf1printf("\t************************\t\t\n\n");//表格控制#defineMyprintf2printf("******************************\n\n");//表格控制typedefstructpage{intnum;/*记录页面号*/inttime;/*记录调入存时间*/}Page;//页面逻辑构造,构造为方便算法实现设计Pageb[M];//存单元数intc[M][N];//暂保存存当前的状态:缓冲区intqueue[100];//记录调入队列intK;//调入队列计数变量//初始化存单元、缓冲区voidInit(Page*b,intc[M][N]){inti,j;for(i=0;i<N;i++){b[i].num=-1;b[i].time=N-i-1;}for(i=0;i<M;i++)for(j=0;j<N;j++)c[i][j]=-1;}//取得在存中停留最久的页面,默认状态下为最早调入的页面intGetMax(Page*b){inti;intmax=-1;inttag=0;for(i=0;i<M;i++){if(b[i].time>max){max=b[i].time;tag=i;}}returntag;}//判断页面是否已在存中intEquation(intfold,Page*b){inti;for(i=0;i<M;i++){if(fold==b[i].num)returni;}return-1;}//LRU核心局部voidLru(intfold,Page*b){inti