操作系统常用页面置换算法课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
在linux中,为了提高内存利用率,提供了内外存进程对换机制,内存空间的分配和回收均以页为单位进行,一个进程只需要将其一部分调入内存便可运行;当操作系统发生缺页中断时,必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。因而引入一种用来选择淘汰哪一页的算法——页面置换算法。页面置换算法是操作系统中虚拟存储管理的一个重要部分。页面置换算法在具有层次结构存储器的计算机中,为用户提供一个比主存储器容量大得多的可随机访问的地。常见的页面置换算法有先来先服务算法(FIFO),最近最久未使用算法(LRU)和最佳适应算法(OPT)。
关键字:操作系统;FIFO;LRU;OPT;Linux
目录
1 绪论 (1)
1.1 设计任务 (1)
1.2设计思想 (1)
1.3设计特点 (1)
1.4基础知识 (2)
1.4.1 先进先出置换算法(FIFO) (2)
1.4.2 最近最久未使用算法(LRU) (3)
1.4.3最佳置换算法(OPT) (3)
2 各模块伪代码算法 (4)
2.1伪代码概念 (4)
2.2伪代码算法 (4)
2.2.1主函数伪代码算法 (4)
2.2.2延迟时间函数伪代码算法 (6)
2.2.3 FIFO算法的伪代码 (7)
2.2.4 LRU算法的伪代码 (7)
2.2.5 OPT算法的伪代码 (10)
3 函数调用关系图 (12)
3.1函数声明 (12)
3.1.1主要算法函数 (12)
3.1.2辅助函数 (12)
3.2程序函数调用关系图 (13)
4 测试结果 (14)
4.1数据初始化 (14)
4.2页面调度算法 (14)
4.2.1先进先出算法 (15)
4.2.2最近最久未使用LRU (15)
4.2.3最佳置换算法OPT (17)
5 源程序 (18)
6 设计总结 (30)
参考文献 (31)
致谢 (32)
1 绪论
1.1 设计任务
1、了解UNIX的命令及使用格式,熟悉UNIX/LINUX的常用基本命令,练习并掌握UNIX提供的vi编辑器来编译C程序,学会利用gcc、gdb编译、调试C程序。
2、设计一个虚拟存储区和内存工作区,并使用最佳淘汰算法(OPT)、先进先出算法(FIFO)、最近最久未使用算法(LRU)计算访问命中率。(命中率=1-页面失效次数/页地址流长度=1-缺页率)
1.2设计思想
在进程运行过程中,若期所有要访问的页面不在内存,而需把它们调入内存,但内存已无空闲空间时,为了保证进程正常进行,系统必须从内存中调出一页程序或数据送到磁盘的对换区中。但应将哪个页面调出,须根据一定的算法来确定。通常,把选择换出页面的算法称为页面置换算法。置换算法的好坏将直接影响到系统的性能。
不适当的算法可能会导致进程发生“抖动”,即刚被换出的页很快又要被访问,需要将它重新调入,此时又需要再选一页调出;而此刚被调出的页很快又被访问,有需将它调入,如此频繁地更换页面,以致一个进程在运行中把大部分的时间都花费在页面置换工作上。
通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程,并比较它们的效率。改进页面置换算法,可以降低页面失败率,从而有效地提高系统性能。从理论上讲,应将那些以后不再会访问的页面置换出来,或把那些在较长时间内不会再访问的页面调出。目前已有多种置换算法,它们都试图更接近于理论上的目标。
1.3设计特点
本设计作品主要用C语言编写而成,结构简单,语言易懂,条理清晰。本作品兼容性也非常的高,可以在各种可以编译C语言的编译软件上运行,并能够在cygwin中运行,经多次调试,暂时未发现有何不足。本程序的另一个优点是,程序可以计算大数量数据。如,本程序可以计算的最大物理块个数达到了
10000个,用户输入的页面引用串个数也能达到10000个以上。但是,实际生活中系统的物理块个数一般不会达到10000个。因此,我们在提示用户输入页面引用串个数是,只提示最大输入100个。但是代码不足在于使用到了较多的static全局变量使得整个代码质量不是很好,而且也只是简单的根据算法设计来模拟实现整个过程。我通过先查找该页面是否在页帧中存在,若不存在则需要页面置换,通过刷新每个页帧的time值来得到每次的最小值来进行页面的置换,最小值即代表着最近最少使用的页面。
经过测试,这个系统已经达到了题目中的全部要求。这个程序有很多优点有一个是界面简明,简洁明了的程序菜单;一个是智能化的模块设计,减少了许多人工操作,如功能模块操作结束后,均会返回主菜单进行下一模板的运行,并提示是否再进行类似的操作,这样给用户带来了操作的方便,大大提高了学生选课的效率还有就是提示语言既简洁又明确,层次分明等等;当然也有缺点如程序仍然存在不合理的地方,例如程序某些部分输入错误不能立刻返回改正;信息表达方式不丰富,比较单一,缺少图片、音乐等元化表达方式。
FIFO算法总是选择在内存驻留时间最长的一页将其淘汰。这种算法基于CPU按线性顺序访问地址空间的这个假设上,许多时候,CPU不是按吸纳型顺序访问地址空间的。所以,那些在内存中停留时间最长的页往往被访问到。这就造成FIFO算法的缺页率不太理想。并且,FIFO还有一个缺点就是Belady奇异现象。实现FIFO算法无需硬件提供新的帮助,只采用循环数组管理驻留集即可。OPT算法被誉为“最佳算法”,因为他淘汰下次访问距当前最远的那些页中序号最小的一页。所以,OPT算法得出的缺页率是最小的。但是,OPT算法在使用前必须先得知整个访问串,这很难实现。因此,OPT算法知识一种概念中的算法。LRU算法的实现耗费较高,并且需要硬件的支持,但是效果较好。就缺页率而言,OPT算法最佳,FIFO算法最差。
1.4基础知识
1.4.1 先进先出置换算法(FIFO)
FIFO算法是最早出现的算法。该算法总是淘汰最先进入内存的页面,即选择在内存驻留时间最久的页面予以淘汰。该算法实现简单,只需要把一个进程已调入内存的页面按先来后次序链接成一个队列,并设置一个指针,称为替换