1、操作系统课程设计LRU算法完整版 内含代码 操作系统课程设计 LRU页面调度算法学 号: 姓 名: 学 院: 专 业:班 级:指导老师: 日 期: 目 录一、实验题目1二、课程设计得目得 1三、设计内容1四、设计要求五、设计思想 1六、主要数据结构及其说明2七、硬件支持 3八、源程序文件 3九、程序运行结果7十、实验体会 8一 实验题目 LRU页面调度算法二 课程设计得目得 操作系统课程设计就是计算机专业重要得教学环节,它为学生提供了一个既动手又动脑,将课本上得理论知识与实际有机得结合一起,独立分析与解 决实际问题得机会。1、进一步巩固与复习操作系统得基础知识。、 培养学生结构化程序、模块化程
2、序设计得方法与能力。3、提高学生调试程序得技巧与软件设计得能力。4、提高学生分析问题、解决问题以及综合利用C语言进行程序设计得能力。三 设计内容 程序应模拟实现LRU算法思想,对n个页面实现模拟调度。四 设计要求1不同得功能使用不同得函数实现(模块化),对每个函数得功能与调用接口要注释清楚。对程序其它部分也进行必要得注释。2.对系统进行功能模块分析、画出总流程图与各模块流程图。.用户界面要求使用方便、简洁明了、美观大方、格式统一。所有功能可以反复使用,最好使用菜单。4.通过命令行相应选项能直接进入某个相应菜单选项得功能模块。5.所有程序需调试通过。五 设计思想最近最久未使用(LRU)页调度算法
3、就是选择最近最久未使用得页面予以淘汰。算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历得时间,当所要访问得页面在内存块中时,就不淘汰页面,否则,淘汰页面中时间最长得,即淘汰最近最久未使用得页面。 开始 输入页面号 Init(b,c) Lru(ai,b)输出queuei 缺页次数与缺页率就是否继 续? 结束 n算法流程图六 主要数据结构及其说明程序执行就是稳定得,高效得。在U算法中,要找出最近最久未使用得页面得话,就必须设置有关得访问记录项,且每一次访问这些记录项,叶面都必须更新这些记录项。这个记录项在此程序中为:tpedf strcpageint um;/*记录页面号/in
4、t ie;/*记录调入内存时间*/Pg;/页面逻辑结构,结构为方便算法实现设计 如此,显然要花费较大得系统开销(包括时间与空间上得),这也就是实际系统中不采用U算法得直接原因,但由于其页面置换得优越性,实际系统中常使用LRU得近似算法。七 硬件支持为了了解一个进程在内存中得各个页面各有多少时间未被进程访问,以及如何快速得知道哪一页就是最近最久未使用得页面,须有两类硬件之一得支持:寄存器或栈。寄存器:为了记录某进程在内存中各页得使用情况,须为每个在内存中得页面配置一个移位寄存器。栈:可利用一个特殊得栈来保存当前使用得各个页面得页面号。每当进程访问某页面时,便将该页面得页面号从战中移出,将它压入栈
5、顶。因此,栈顶始终就是最新被访问页面得编号,而栈底则就是最近最久未使用页面得页面号。八 源程序文件 #incudeincldeincludedlib、hdefn M 3 /物理块数 #defne 10/页面数#deine Mrintf1 printf(t*tt);/表格控制#deinepntf2 prinf(*nn);表格控制 pef strut pge int num;/记录页面号*/itie;/记录调入内存时间*/ ag;/页面逻辑结构,结构为方便算法实现设计age M;/内存单元数incMN;/暂保存内存当前得状态:缓冲区int queue0;/记录调入队列n;/调入队列计数变量/初始化
6、内存单元、缓冲区voidIit(Pe *b,t cMN) n i,j; for(=0;iN;i+) bi、nu=-1; bi、time=N-i1; for(i;M;i+) r(;j;+) cij=-1;/取得在内存中停留最久得页面,默认状态下为最早调入得页面intGetMax(Page *b) int i; int max=-; nt ta0; fo(i=0;imx) max=bi、time; tag=; et tag;/判断页面就是否已在内存中int Equaton(it ld,Pa*b) in ; for(i=;iM;+) if(oldbi、um) eturni; return 1;/L核
7、心部分oi Lru(nfod,age ) in i; int al; a=Euation(fl,b); if(val=) bval、ime=; fo(i=0;i;) if(i!=l) bi、time+; els qeue+K=fol;/记录调入页面 al=GeM(b); bval、num=fold; bvl、me0; or(i;i;i+) i(i!=val) bi、tim+; /主程序oi ma() start:K=-; int i,j; intaN; Myprintf; prt(tt欢迎使用U页面调度算法nn); ypinf1;print(请输入所要访问得各个页面号:n); or(i0;i;
8、i+) sa(d,ai); Ini(,c); /调用 for(i=;i;i+) Lu(i,); c0i=a; /记录当前得内存单元中得页面 for(j0;jM;j+) cji=j、num; /结果输出printf(内存状态为:);ypt2; or(j=0;jN;j+) printf(|%2,aj);prtf(|n);Myprit; fr(;i;+) for(j=0;N;j+) if(cij=-1) printf(%2c,2); ele rntf(,cij); ritf(|n); Myprint2; printf(调入队列为:); (i=0;i1;+) pintf(3d,qui); prinf(n缺页次数为:%6dn缺页率:%16、6f,K+1,(flat)(K+1)N); printf(n就是否继续!t ?); car y; (geh()=y) system(cls); prnt(n); goto stat; else pintf(n); int(程序结束n);九 程序运行结果十 实验体会通过本次课程设计,对LRU页面调度算法有了更深入得理解与掌握,进一步得巩固与复习了操作系统中关于U页面调度算法得知识,进一步得了解了结构化、模块化程序设计得方法,提高了编写与调试程序得技巧,谢谢老师得细心指导。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1