资源预览内容
第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
第9页 / 共15页
第10页 / 共15页
亲,该文档总共15页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
LRU页调度算法实现学院计算机科学与技术专业 计算机科学与技术学 号学生姓名指导教师某某2014年3月15日一、设计目的、内容与要求一目的:操作系统课程设计是计算机专业重要的教学环节,为学生提供了一个既动手又 动脑,将课本上的理论知识和实际有机的结合起来,独立分析和解决实际问题的机会。1进一步巩固和复习操作系统的根底知识。2培养学生结构化程序、模块化程序设计的方法和能力。3提高学生调试程序的技巧和软件设计的能力。4提高学生分析问题、解决问题以与综合利用 C语言进展程序设计的能力。二内容:程序应模拟实现LRU算法思想,对n个页面实现模拟调度。三要求:1. 不同的功能使用不同的函数实现模块化,对每个函数的功能和调用接口要 注释清楚。对程序其它局部也进展必要的注释。2. 对系统进展功能模块分析、画出总流程图和各模块流程图。3. 用户界面要求方便、简洁明了、美丽大方、格式统一。所有功能可以反复使 用,最好使用菜单。4. 通过命令相应选项能直接进入某个相应菜单项选择项的功能模块。 所有程序需调试通过。、算法的根本思想LRU是Least Recently Used 近期最少使用算法。内存管理的一种页面置换算法,对于在内存中但又不用的数据块 内存块叫做 LRU Oracle会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的 数据。什么是LRU算法? LRU是Least Recently Used 的缩写,即最少使用页面 置换算法,是为虚拟页式存储管理服务的。关于操作系统的内存管理,如何节省 利用容量不大的内存为最多的进程提供资源,一直是研究的重要方向。而内存的虚拟存储管理,是现在最通用,最成功的方式一一在内存有限的情况下,扩展一局部外存作为虚拟内存,真正的内存只存储当前运行时所用得到信息。这无疑极大地扩大了内存的功能,极大地提高了计算机的并发度。虚拟页式存储管理, 如此是将进程所需空间划分为多个页面,内存中只存放当前所需页面,其余页面放入外存的管理方式。程序中用到了 if,switch选择语句,和for循环语句进展编程。If语句根本格式为:If 表达式语句1else语句2Switch语句根本格式为:Switch (表达式)case常量表达式1;语句序列1case常量表达式2;语句序列2三、主要功能模块流程图1主菜单流程图:(2)main函数流程图:自定义块数和 进程数I显示进程数和 块数进入LRU算法退岀结束(3)LRU程序流程图:T更新时间找到最久的页面, 更新时间,置换退出LRU算法4自定义函数流程图:四、系统测试*M1显示主菜单:面事K Ji H M耳弭耳耗K耗H M耳弭耳耗 请求页式存储管理中I刪算法的实现1- 自定g进程数和块数2- 虚示用左岸是叉乳山刖算法4.EXITjlWWWjifWIfWIKWJtfjMKJIJflKWrjMKWMjWJtjMiCll豪输入你的选择m:2选择1:SOLJCJCJCJOCJCiCMLlOCJCJOCJCaOLlCJCJClCMIJCaOLlOCJCJCMEJCJOLJCJCJC页式储存嘗理-LRU算法自定义进程数和块数显示用2bRUEK IT输入你的选择4:自瑟进囉娜S数I 10MIKX 3C*C3 KX MIKX 3Cc: ; L 卩鼻开 A F=*? |W 梵恵33111:3 请求页式律簪管理中LRU算法的实现3选择3:LRU 算法结亦 :10B.409131114446 6 63 3 3 2 2 7 7 :为; 数数为为数数为 次意总率 换面携贤面贝按丄修改块数,按2返回主菜单?es1? No24输入要修改块的:4选择1:可用物理块数为:4H按任意键可返回主菜単11 2123IRU算法g 口 杲显乎:&为为为为i 2次总总率5换面换薯面页123410 0.30 0.7B?100.70按1修改块数,按2返回主菜单Ves1, Hu2五、结论通过这两周的课设,我不仅复习了 C语言的相关知识,还对操作系统有了进一步 的理解和掌握。实验中,通过 LRU最近最久未使用算法实现了页面调度模拟 实验。LRU与其他几种调度算法在原理上既有区别又有联系。要想充分掌握 LRU 算法,也要会使用其他几种算法。虽然在程序设计中,出现了一些错误,但是经过同学的帮助和辅导教师的细心指导,我已经将错误纠正了。使程序达到预想的结果,能够实现简单的页面调 度。通过此次实验,我发现自己在编程方面还有许多不足的地方, 以后要多加动 手编写,提高自己的编程能力。最后感谢同学的帮助和辅导教师的悉心指导,使我顺利完成此次实验。六、源程序#i nclude #i nclude #in elude #defi ne Maxsize 50void Xiugaikuaishu();void In itio n();void Zidi ngyi();void ShowCustomer();void ShowResult();void ShowNot();void LRU();int menu select(); / 菜单函数int pageNum = 0;int pagesMaxsize; 存储页号int FuzhuMaxsize; 辅助数组int TimeMaxsize;记录页在内存中的时间int physicalblock;/ 记录物理块数int Fz;辅助变量int mai n()for(;)switch(me nu _select()case 1: Zidi ngyi();break;case 2: ShowCustomer();break;case 3: LRU();break;case 4:exit(0);return 0;int menu _select()int n;prin tf(*欢迎进入主界面 *n);prin tf(*请求页式存储管理中LRU算法的实现* n);prin tf(*n);prin tf(*1自定义进程数和块数*n);prin tf(*2.显示用户自定义*n);prin tf(*3.LRU算法*n);prin tf(*4.EXIT*n);prin tf(*n);prin tf(*n)doprintf(n 输入你的选择(14):); scan f(%d, &n);while( n 4); return( n);void Zidi ngyi()int i;system(cls);printf(”*n);printf(”页式储存管理-LRU算法n);printf( *printf(” 自定义进程数和块数 n);printf(请输入进程数:”);scan f(%d,&pageNum);getchar();printf(请输入块数:”);scan f(%d,&physicalblock );getchar();printf(请依次输入页号引用串(中间用空格隔开):);for(i = 0 ; i pageNum ; i+)scan f(%d, &pagesi);void LRU()int i,j;int ReplacePages = 0;/记录置换次数printf(* n);printf(”LRU算法结果显示n”);prin tf(n);ShowNot();for(i = Fz ; i pageNum; i+)int key = 0;for(j = 0 ; j physicalblock ; j+) 判断该页是否在物理块中 if(Fuzhuj = pagesi)key = 1; /该页在内存中Timej = i;/更新时间 break;if(key = 0)/假如该页不在内存中ReplacePages+; /缺页次数加 1 int min = Time0;int flag = 0;for(j = 1 ; j Timej)min = Timej;找到最久的页面 flag = j;Timeflag = i; 记录时间Fuzhuflag = pagesi;ShowResult();printf(页面总数为:%dn,pageNum);printf(置换次数为:%dn,ReplacePages);double re1 = (double)ReplacePages)/(double)pageNum); printf(置换率为:%.2lfn,re1);printf(命中率为:%.2lfn,1-re1);printf(缺页次数为:%d n,ReplacePages+physicalblock);double re2 = (double)(ReplacePages+physicalblock)/(double)pageNum);printf(缺页率为:%.2lfn,re2);printf(* n);printf(”按1修改块数,按2返回主菜单n);Y
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号