欢迎来到天天文库
浏览记录
ID:17512025
大小:132.00 KB
页数:9页
时间:2018-09-02
《操作系统课程设计报告82074new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、武汉工业学院计算机与信息工程系《操作系统》课程设计报告题目:页式虚拟存储管理页面置换算法专业:软件工程班级:软件072学号:070505209姓名:汪玲玲指导老师:徐军利2009年 12 月 26日(一).课程设计目的《操作系统》课程设计是计算机类专业的集中实践性环节之一,是学习完《操作系统》课程后进行的一次全面的综合练习。其目的在于加深对操作系统课程的理解,使学生更好地掌握操作系统的基本概念、基本原理、及基本功能,理解操作系统在计算机系统中的作用、地位和特点,具有分析实际操作系统,设计、构造和开发现代操作系统的基本能力,为今后从事的各种实际工作,如设计、分析和改进各种系统软件和应用软件提供
2、必要的软件理论基础。(二).课程设计内容(1).设计题目:页式虚拟存储管理页面置换算法(2).目的与要求:熟练掌握计算机虚拟存储技术的原理与基础上,利用一种程序设计语言模拟几种置换算法的,加深对原理的理解的基础上提高编程及解决问题的能力。要求页面分配采用固定分配局部置换,且置换过程应清晰地显示在屏幕上。(3).实验内容:实现页式虚拟存储管理页面置换算法的LRU,FIFO以及改进的Clock置换算法的模拟。(三).课程设计基本原理和解决方案(1).实验原理.对于本任务规定的前提:页面分配采用固定分配局部置换,则置换发生的时机是作业已经将操作系统分配的固定数目的物理块全部用完且发生缺页的时候。此
3、时必须要将已经装入内存的部分逻辑页面换出以便将所缺的页面调入内存。置换算法就是一个决定将内存中“哪一个”页面换出的算法。(2)数据结构l作业的页面走向(执行过程中对页面的访问顺序)用数组组,则页面走向的长度由用户键盘输入控制以-1为终结符。l页框(作业分得的物理块)在不同置换算法执行之前长度由键盘输入不同的置换算法其数据结构不同但原则式尽可能使程序的时间复杂度最低FIFO,采用队列,对于LRU堆栈,而改进的CLOCK采用循环队。(3)功能模块划分将整个程序的模块划分成如下四个部分:1)主模块:Test.cpp为主界面2)置换算法模块:由三种置换算法的三个类的各.cpp文件组成。每个类均含有通
4、常的方法模块 *判断模块。决定换出哪一块。每一种置换算法对应一种判断算法。*调整模块。根据判断模块的结果,调整作业分得物理块集合中逻辑页面的情况。*置换过程输出模块(在显示器上显示或写入文件)。该模块每发生一次置换,由置换算法模块调用一次。3)main函数实现各类的实例化,由此进入各置换算法的模拟过程。(四).程序的基本结构框图和流程图(参见课程设计纸质档的报告)(五).源代码,运行的结果及结果分析1)源代码(参见课程设计的程序或是纸质档的课设报告)2)运行结果(参见下页)3)结果分析FIFO运行结果分析:输入的页面走向为:7012030423开始物理块中不存在页面调入页面:701物
5、理块满后,调用函数进行操作,之后的页框分别为:第4个页框为:201第5个页框为:命中第6个页框为:231第7个页框为:230第8个页框为:430第9个页框为:420第10个页框为:423LRU运行结果分析:输入的页面走向为:7012030423开始物理块中不存在页面调入页面:701物理块满后,调用函数进行操作,之后的页框分别为:第4个页框为:201第5个页框为:命中第6个页框为:203第7个页框为:命中第8个页框为:403第9个页框为:402第10个页框为:432对UpdateClock(第二个模拟)置换算法的结果分析:输入的页面走向为:7[1]1[0]2[0]0[0]3[1]0[1]4[0
6、]2[1]3[0]备注:7[0/1]表示该页面是否被修改过了0未修改,1修改过开始物理块中不存在页面调入页面:701物理块满后,调用函数进行操作,之后的页框分别为:第4个页框为:721第5个页框为:720第6个页框为:320第7个页框为:命中第8个页框为:340第9个页框为:342第10个页框为:命中4).算法评价:据以上三种算法得到置换算法之间性能的比较可以看出FIFO算法不具有逻辑合理性入不符合内存的页面访问过程,而页面调入的时间不能反映页面的使用情况,存在着一定的缺陷,LRU算法是根据页面调入内存后的情况来反映的,利用最近最久未使用的页面予以淘汰与最佳置换算法有相同的思想,所以性能较好
7、一些,而改进的CLOCK置换算法是在LRU的基础上考虑到置换代价的,硬件要求较低是用的较多的一种LRU的近似算法,与简单CLOCK算法比较可以减少磁盘的I/O操作次数,但本身的开销有所增加。(六).实验中的遇到的问题及实验总结这次实验中,开始时把要弄的置换方法模块划分的都很好,文件分类很清晰,由于使用类的封装优势在头文件中的框架把需要用到得数据结构及内部成员方法罗列出来后,代码的实现没有花费多少时间。虽然用到
此文档下载收益归作者所有