操作系统课程设计 LRU算法的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《操作系统原理》课程设计报告
*名:***
班级:BX1010
学号: 5
指导老师:***
二〇一二年十二月十四日
目录
一、《操作系统原理》课程设计的目的与要求 (1)
1目的 (1)
2要求 (1)
二、简述课程设计内容、主要功能和实现环境 (1)
1课程设计内容 (1)
2主要功能 (1)
3实现环境 (2)
三、任务的分析、设计、实现和讨论 (2)
1任务的分析 (2)
2任务的设计与实现 (3)
4思考题的解答和讨论 (10)
四、《操作系统》课程设计小结 (14)
五、参考文献 (14)
附录 (14)
一、《操作系统原理》课程设计的目的与要求
1目的
近年来,由于大规模集成电路(LSI)和超大规模集成电路(VLSI)技术的发展,使存储器的容量不断扩大,价格大幅度下降。但从使用角度看,存储器的容量和成本总受到一定的限制。所以,提高存储器的效率始终是操作系统研究的重要课题之一。虚拟存储技术是用来扩大内存容量的一种重要方法。学生应独立地用高级语言编写几个常用的存储分配算法,并设计一个存储管理的模拟程序,对各种算法进行分析比较,评测其性能优劣,从而加深对这些算法的了解。
2要求
任务四采用最近最少使用页淘汰算法(LRU)实现。为了比较真实地模拟存储管理,可预先生成一个大致符合实际情况的指令地址流。然后模拟这样一种指令序列的执行来计算和分析各种算法的访问命中率。
二、简述课程设计内容、主要功能和实现环境
1课程设计内容
最近最少使用页淘汰算法(LRU),这是一种经常使用的方法。有各种不同的实施方案,这里采用的是不断调整页表链的方法,即总是淘汰页表链链首的页,而把新访问的页插入链尾。如果当前调用页已在页表内,则把它再次调整到链尾。这样就能保证最近使用的页,总是处于靠近链尾部分,而不常使用的页就移到链首,逐个被淘汰,在页表较大时,调整页表链的代价也是不小的。
2主要功能
(1)菜单函数int menu_select():用于显示主菜单,可在其中选择1.自定义进程数和块数;
2.显示显示用户自定义的进程数和块数;
3.进行LRU算法
4.退出程序。
(2)最近最久未使用算法函数void LRU():此函数是将随机产生的页面进行最近未使用便置换的函数,也是本程序的主要部分。
(3)自定义进程数和块数函数void Zidingyi():此函数是主菜单中的第一个选项,即用户可以自定义所需的进程数和块数。
(4)显示用户自定义的进程数和块数函数void ShowCustomer():此函数是用于显示用户
自定义的进程数和块数的情况。
(5) 修改块数函数void Xiugaikuaishu():此函数是在进行LRU 算法后,可以在原来的进
程数的基础上,修改块数并重新生成一组LRU 算法的过程。
(6) 显示每次换页后的结果函数void ShowResult():此函数是显示在LRU 算法的执行过
程中每次换页的情况。
(7) 显示一定不用换页的函数void ShowNot():此函数是显示最近使用过的页面,即不
用换页的结果。
3实现环境
本次课程设计结合算法的特点,采用Windows 操作系统平台。开发工具为Microsoft Visual C++6.0。
三、任务的分析、设计、实现和讨论 1任务的分析
本示例是采用页式分配存储管理方案,并通过分析计算不同页面淘汰算法情况下的访问命中率来比较各种算法的优劣。另外也考虑到改变页面大小和实际存储器容量对计算结果的影响,从而可为算则好的算法、合适的页面尺寸和实存容量提供依据。
本程序是按下述原则生成指令序列的: (1) 50%的指令是顺序执行的。 (2) 25%的指令均匀散布在前地址部分。 (3) 25%的指令均匀散布在后地址部分。
示例中选用最佳淘汰算法(OPT )和最近最少使用页面淘汰算法(LRU )计算页面命中率。公式为
页地址流长度
页面失效次数
命中率-
=1
假定虚存容量为32K ,页面尺寸从1K 至8K ,实存容量从4页至32页。
2任务的设计与实现2.1 main( )函数流程图:
2.2 主菜单流程图:2.3 LRU函数流程图:
2.5 ShowCustomer( )函数流程图:
3操作过程和结果分析
按1进入自定义进程数和块数
按2显示进程数,块数和随机分配页号
按3实现LRU算法,输出命中率
按1修改物理块数,重新实现LRU算法并输出命中率按4退出程序
FIFO算法
该算法总是淘汰最先进入内存的页面,既选择内存中驻留时间最久的页面予以淘汰。该
算法实现简单,只需要把一个进程已调入内存的页面,按照先后测序链接成一个队列,并设
置一个指针,使他总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在
进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO算
法并不能保证这些页面不被淘汰。这里,我们用下面的例子,采用FIFO算法进行页面置换。当进程第一次访问页面2时,将把第七页换出,因为它是最先被调入内存的;在第一次
范文页面3时,又将把第零页换出,因为他在现有的2,0,1三个页面中是最老的页。由下
图可以看出,利用FIFO算法时进行了十二次页面置换,比最佳置换算法正好多一倍。
结果分析——两种算法的比较:
先进先出(FIFO)算法较易实现,比较适用于具有线性顺序特性的程序,而对其他特性的程序则效率不高。缺页中断率为最佳算法的2~3倍;增加可用主存块的数量会导致更多的缺页,此算法还可能出现抖动现象异常。
最近最久未被使用(LRU)算法的实现需要硬件支持,基于程序的局部性原理,所以适用用大多数程序,此算实现必须维护一个特殊的队列——页面淘汰队列。关键是确定页面最后访问以来所经历的时间。
4思考题的解答和讨论
(1)设计一个界地址存储管理的模拟系统,模拟界地址方式下存储区的分配和回收过程。
提示:必须设置一个内存分配表,按照分配表中有关信息实施存储区的分配,并不断根
据存储区的分配和回收修改该表。算法有首次匹配法,循环首次匹配法和最佳匹配法等。
可用各种方法的比较来充实实习内容。可使用碎片收集和复盖等技术。
答: