文档介绍:该【操作系统常用页面置换算法课程设计 】是由【mama】上传分享,文档一共【34】页,该文档可以免费在线阅读,需要了解更多关于【操作系统常用页面置换算法课程设计 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。第1页摘要在linux中,为了提高内存利用率,供应了内外存进程对换机制,内存空间的安排和回收均以页为单位进行,一个进程只须要将其一部分调入内存便可运行;当操作系统发生缺页中断时,必需在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。因而引入一种用来选择淘汰哪一页的算法——页面置换算法。页面置换算法是操作系统中虚拟存储管理的一个重要部分。页面置换算法在具有层次结构存储器的计算机中,为用户供应一个比主存储器容量大得多的可随机访问的地。常见的页面置换算法有先来先服务算法(FIFO),最近最久未运用算法(LRU)和最佳适应算法(OPT)。关键字:操作系统;FIFO;LRU;OPT;Linux目录1绪论 (FIFO) (LRU) (OPT) 32各模块伪代码算法 103函数调用关系图 134测试结果 17第2页5源程序 186设计总结 30参考文献 31致谢 、了解UNIX的吩咐及运用格式,熟识UNIX/LINUX的常用基本吩咐,练习并驾驭UNIX供应的vi编辑器来编译C程序,、gdb编译、调试C程序。2、设计一个虚拟存储区和内存工作区,并运用最佳淘汰算法(OPT)、先进先出算法(FIFO)、最近最久未运用算法(LRU)计算访问命中率。(命中率=1-页面失效次数/页地址流长度=1-缺页率),若期全部要访问的页面不在内存,而需把它们调入内存,但内存已无空闲空间时,为了保证进程正常进行,系统必需从内存中调出一页程序或数据送到磁盘的对换区中。但应将哪个页面调出,须依据确定的算法来确定。通常,把选择换出页面的算法称为页面置换算法。置换算法的好坏将干脆影响到系统的性能。不适当的算法可能会导致进程发生“抖动”,即刚被换出的页很快又要被访问,须要将它重新调入,此时又须要再选一页调出;而此刚被调出的页很快又被访问,有需将它调入,如此频繁地更换页面,以致一个进程在运行中把大部分的时间都花费在页面置换工作上。通过模拟实现恳求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,驾驭虚拟存储恳求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。改进页面置换算法,可以降低页面失败率,从而有效地提高系统性能。从理论上讲,应将那些以后不再会访问的页面置换出来,或把那些在较长时间内不会再访问的页面调出。目前已有多种置换算法,它们都试图更接近于理论上的目标。,结构简洁,语言易懂,条理清楚。本作品兼容性也特别的高,可以在各种可以编译C语言的编译软件上运行,并能够在cygwin中运行,经多次调试,短暂未发觉有何不足。本程序的另一个优点是,程序可以计算大数量数据。如,本程序可以计算的最大物理块个数达到了10000个,用户输入的页面引用串个数也能达到10000个以上。但是,实际生活中系统的物理块个数一般不会达到10000个。因此,我们在提示用户输入页面引用串个数是,只提示最大输入100个。但是代码不足在于运用到了较多的static?全局变量使得整个代码质量不是很好,而且也只是简洁的依据算法设计来模拟实现整个过程。我通过先查找该页面是否在页帧中存在,若不存在则须要页面置换,通过刷新每个页帧的time值来得到每次的最小值来进行页面的置换,最小值即代表着最近最少运用的页面。经过测试,这个系统已经达到了题目中的全部要求。这个程序有很多优点有一个是界面简明,简洁明白的程序菜单;一个是智能化的模块设计,削减了很多人工操作,如功能模块操作结束后,均会返回主菜单进行下一模板的运行,并提示是否再进行类似的操作,这样给用户带来了操作的便利,大大提高了学生选课的效率还有就是提示语言既简洁又明确,层次分明等等;当然也有缺点如程序仍旧存在不合理的地方,例如程序某些部分输入错误不能立即返回改正;信息表达方式不丰富,比较单一,缺少图片、音乐等元化表达方式。FIFO算法总是选择在内存驻留时间最长的一页将其淘汰。这种算法基于CPU按线性依次访问地址空间的这个假设上,很多时候,CPU不是按吸纳型依次访问地址空间的。所以,那些在内存中停留时间最长的页往往被访问到。这就造成FIFO算法的缺页率不太志向。并且,FIFO还有一个缺点就是Belady奇异现象。实现FIFO算法无需硬件供应新的帮助,只采纳循环数组管理驻留集即可。OPT算法被誉为“最佳算法”,因为他淘汰下次访问距当前最远的那些页中序号最小的一页。所以,OPT算法得出的缺页率是最小的。但是,OPT算法在第3页运用前必需先得知整个访问串,这很难实现。因此,OPT算法学问一种概念中的算法。LRU算法的实现耗费较高,并且须要硬件的支持,但是效果较好。就缺页率而言,OPT算法最佳,FIFO算法最差。(FIFO)FIFO算法是最早出现的算法。该算法总是淘汰最先进入内存的页面,即选择在内存驻留时间最久的页面予以淘汰。该算法实现简洁,只须要把一个进程已调入内存的页面按先来后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但是该算法及进程实际运行的规律不相符合,因为在进程中,有些页面常常被访问。(LRU)选择最近一段时间最长时间没有被访问过的页面予以淘汰。?LRU算法是依据页面调入内存后的运用状况进行决策。由于无法预料各页面将来的运用状况,实行“最近的过去”作为“最近的将来”的近似。选择最近最久未运用的页面予以淘汰。实现:给予每个页面一个方位字段,用来记录一个页面自上次被访问以来所经验的时间T,当要淘汰一个页面的,选择现有页面中其T值最大的,即最近最久未运用的页面予以淘汰。(OPT)最佳置换算法所选择的被淘汰掉的页面,将是以后永久不再运用的,或许是在最长(将来)时间内不再被访问的页面。采纳最佳置算法,通常可保证获得最低的缺页率。本模拟算法中,最佳页面置换算法实现所采纳的思想是:循环读入每个页表项,若该页表在内存中,则读取下一个页表项。若页表不存在内存中:一种状况是内存不满,则将页表放入内存中;若内存块已满,刚分别计算内存中各个页表再次被运用的时间,并将最久不被访问的调出,放入当前读入页表项。第3页2各模块伪代码算法依据程序提示,用户先将须要计算的页面号引用串,物理块数量和引用串个数输入到文件流中。待程序加载数据完成后,用户接着选择页面置换算法的类型,程序依据用户输入的信息来推断采纳哪一种算法进行计算。。(英语:pseudocode),又称为虚拟代码,是高层次描述算法的一种方法。运用伪代码的目的是让被描述的算法可以简洁地以任何一种编程语言(Pascal,C,Java,etc)实现。因此,伪代码必需结构清楚、代码简洁、可读性好,介于自然语言及编程语言之间。以编程语言的书写形式指明算法职能。运用伪代码,不用拘泥于详细实现。它是半角式化、不标准的语言。可以把整个算法运行过程的结构用接近自然语言的形式(可以运用任何一种你熟识的文字,关键是把程序的意思表达出来)描述出来。,自顶向下的设计思想进行设计的。程序各个功能的实现之间的联系采纳函数调用及函数嵌套。main()函数是整个程序的入口,程序的起先就是从这里起先的,然后通过main()函数调用其他函数来实现各个功能。。 Begin/*算法起先*/ 调用designBy()→显示出设计者信息 ScanfmSIZE,pSIZE,page[100]/*mSIZE表示物理块,pSIZE表示页面号引用串个数,page[100]表示一个引用串的页面号*/ do{ Printfpage[i] Scanfcode/*code是一个标记,用来推断用户输入是否符合要求*/ Switch(code){ case1:FIFO()/*先进先出算法*/第5页 case2:LRU()/*最近最久未运用算法*/ case3:OPT()/*最佳置换算法*/ case4:exit(0)/*退出程序*/ default:重新输入 }while(code!=4) Getch(用户输入) begin 变量定义 whiledelay>0 {whilei<124 退格