1《操作系统原理》课程设计报告姓名:班级:BX1204学号:指导老师:范光宇2015年1月16日目录一、《操作系统原理》课程设计的目的与要求...................................................11目的......................................................................................................................................12要求......................................................................................................................................1二、简述课程设计内容、主要功能...........................................................................21课程设计内容....................................................................................................................22主要功能.............................................................................................................................23实现环境.............................................................................................错误!未定义书签。三、任务的分析、设计、实现和讨论......................................................................31任务的分析........................................................................................................................32任务的设计与实现...........................................................................................................42.1main()函数流程图:.................................................................................................42.2主菜单流程图:........................................................................................................52.3LRU函数流程图:....................................................................................................62.4FIFO函数流程图:................................................................................................73操作过程.............................................................................................................................73.1进入主页面.................................................................................................................73.2选择a,......................................................................................................................83.3选择b..........................................................................................................................94结果分析...........................................................................................................................10两种算法的比较:.........................................................................................................115思考题的解答和讨论....................................................................................................11四、《操作系统》课程设计小结............................................................................15五、参考文献.........................................................................................................................151一、《操作系统原理》课程设计的目的与要求1目的近年来,由于大规模集成电路(LSI)和超大规模集成电路(VLSI)技术的发展,使存储器的容量不断扩大,价格大幅度下降。但从使用角度看,存储器的容量和成本总受到一定的限制。所以,提高存储器的效率始终是操作系统研究的重要课题之一。虚拟存储技术是用来扩大内存容量的一种重要方法。学生应独立地用高级语言编写几个常用的存储分配算法,并设计一个存储管理的模拟程序,对各种算法进行分析比较,评测其性能优劣,从而加深对这些算法的了解。2要求任务四采用最近最少使用页淘汰算法(LRU)实现。为了比较真实地模拟存储管理,可预先生成一个大致符合实际情况的指令地址流。然后模拟这样一种指令序列的执行来计算和分析各种算法的访问命中率.2二、简述课程设计内容、主要功能1课程设计内容先进先出算法(FIFO)最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理由是:最早调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。建立一个FIFO队列,收容所有在内存中的页。被置换页面总是在队列头上进行。当一个页面被放入内存时,就把它插在队尾上。这种算法只是在按线性顺序访问地址空间时才是理想的,否则效率不高。因为那些常被访问的页,往往在主存中也停留得最久,结果它们因变“老”而不得不被置换出去。FIFO的另一个缺点是,它有一种异常现象,即在增加存储块的情况下,反而使缺页中断率增加了。当然,导致这种异常现象的页面走向实际上是很少见的。最近最少使用页淘汰算法(LRU)这是一种经常使用的方法。有各种不同的实施方案,这里采用的是在固定的物理块中,每进来一个页面,有一个记录时间的值,当物理块没有空闲时,有新的页面进来,首先先判断物理块里有没有该页面存在,如果有,那更新该页面的时间,调整为0,如果没有,那查看记录时间的值,看哪个时间最久,即置换该页面,放在物理块里。并把最新进来的页面的时间也调整为0,即是最新的时间。2主要功能(1)YZ_replace();//构造函数(2)~YZ_replace();//析构函数(3)intfindSpace();//查找是否有空闲内存(4)intfindExist(intcurpage);//查找内存中是否有该页面(5)intfindReplace();//查找应予置换的页面(6)voidFIFO();//FIFO算法(7)voidLRU();//LRU算法(8)voidBlockClear();//BLOCK恢复(9)voidinitia1(intstring[]);//初始化(10)pageInfor*block;//物理块(11)pageInfor*page;//页面号串(12)intmemory_state[Bsize][Psize];//内存块页面数(13)ints;//记录命中数3三、任务的分析、设计、实现和讨论1任务的分析本示例是采用页式分配存储管理方案,并通过分析计算不同页面淘汰算法情况下的访问命中率来比较各种算法的优劣。另外也考虑到改变页面大小和实际存储器容量对计算结果的影响,从而可为算则好的算法、合适的页面尺寸和实存容量提供依据。本程序是按下述原则生成指令序列的:(1)50%的指令是顺序执行的。(2)25%的指令均匀散布在前地址部分。(3)25%的指令均匀散布在后地址部分。示例中选用最佳淘汰算法(OPT)和最近最少使用页面淘汰算法(LRU)计算页面命中率。公式为页地址流长度页面失效次数命中率1假定虚存容量为32K,页面尺寸从1K至8K,实存容量从4页至32页。调页策略1)何时调入页面如果进程的许多页是存放在外存的一个连续区域中,则一次调入若干个相邻的页,会比一次调入一页的效率更高效一些。但如果调入的一批页面中的大多数都未被访问,则又是低效的。可采用一种以预测为基础的预调页策略,将那些预计在不久之后便会被访问的页面,预先调入内存。如果预测较准确,那么,这种策略显然是很有吸引力的。但目前预调页的成功率仅为50%。且这种策略主要用于进程的首次调入时,由程序员指出应该先调入哪些页。2)请求调页策略当进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存,便即提出请求,由OS将其所需页面调入内存。由请示调页策略所确定调入的页,是一定会被访问的,再加之请求调页策略比较易于实现,故在目前的虚拟存储器中,大多采用此策略。但这种策略每次仅调入一页,故须花费较大的系统开销,增加了磁盘I/O的启用频率。42任务的设计与实现2.1main()函数流程图:52.2主菜单流程图:62.3LRU函数流程图:72.4FIFO函数流程图:3操作过程3.1进入主页面83.2选择a,按1实现FIFO算法,输出命中率按2实现LRU算法,输出命中率返回主菜单93.3选择b按1实现FIFO算法,输出命中率按2实现LRU算法,输出命中率10按c退出程序4结果分析两种算法的比较:FIFO算法该算法总是淘汰最先进入内存的页面,既选择内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需要把一个进程已调入内存的页面,按照先后测序链接成一个队列,并设置一个指针,使他总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO算法并不能保证这些页面不被淘汰。这里,我们用下面的例子,采用FIFO算法