ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:286.94KB ,
资源ID:20583247      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20583247.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统常用页面置换算法课程设计Word文档下载推荐.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统常用页面置换算法课程设计Word文档下载推荐.docx

1、当然也有缺点如程序仍然存在不合理的地方,例如程序某些部分输入错误不能立刻返回改正;信息表达方式不丰富,比较单一,缺少图片、音乐等元化表达方式。 FIFO算法总是选择在内存驻留时间最长的一页将其淘汰。这种算法基于CPU按线性顺序访问地址空间的这个假设上,许多时候,CPU不是按吸纳型顺序访问地址空间的。所以,那些在内存中停留时间最长的页往往被访问到。这就造成FIFO算法的缺页率不太理想。并且,FIFO还有一个缺点就是Belady奇异现象。实现FIFO算法无需硬件提供新的帮助,只采用循环数组管理驻留集即可。OPT算法被誉为“最佳算法”,因为他淘汰下次访问距当前最远的那些页中序号最小的一页。所以,OP

2、T算法得出的缺页率是最小的。但是,OPT算法在使用前必须先得知整个访问串,这很难实现。因此,OPT算法知识一种概念中的算法。LRU算法的实现耗费较高,并且需要硬件的支持,但是效果较好。就缺页率而言,OPT算法最佳,FIFO算法最差。1.4基础知识1.4.1 先进先出置换算法(FIFO) FIFO算法是最早出现的算法。该算法总是淘汰最先进入内存的页面,即选择在内存驻留时间最久的页面予以淘汰。该算法实现简单,只需要把一个进程已调入内存的页面按先来后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但是该算法与进程实际运行的规律不相符合,因为在进程中,有些页面经常被访问。1.

3、4.2 最近最久未使用算法(LRU) 选择最近一段时间最长时间没有被访问过的页面予以淘汰。LRU算法是根据页面调入内存后的使用情况进行决策。由于无法预测各页面将来的使用情况,采取“最近的过去”作为“最近的将来”的近似。选择最近最久未使用的页面予以淘汰。实现:赋予每个页面一个方位字段,用来记录一个页面自上次被访问以来所经历的时间T,当要淘汰一个页面的,选择现有页面中其T值最大的,即最近最久未使用的页面予以淘汰。1.4.3最佳置换算法(OPT)最佳置换算法所选择的被淘汰掉的页面,将是以后永久不再使用的,或许是在最长(未来)时间内不再被访问的页面。采用最佳置算法,通常可保证获得最低的缺页率。本模拟算

4、法中,最佳页面置换算法实现所采用的思想是:循环读入每个页表项,若该页表在内存中,则读取下一个页表项。若页表不存在内存中:一种情况是内存不满,则将页表放入内存中;若内存块已满,刚分别计算内存中各个页表再次被使用的时间,并将最久不被访问的调出,放入当前读入页表项。2 各模块伪代码算法 根据程序提示,用户先将需要计算的页面号引用串,物理块数量和引用串个数输入到文件流中。待程序加载数据完成后,用户继续选择页面置换算法的类型,程序根据用户输入的信息来判断采用哪一种算法进行计算。结构如图2.1所示。图 2.1 总体结构图2.1伪代码概念 伪代码(英语:pseudocode),又称为虚拟代码,是高层次描述算

5、法的一种方法。使用伪代码的目的是让被描述的算法可以容易地以任何一种编程语言(Pascal,C,Java,etc)实现。因此,伪代码必须结构清晰、代码简单、可读性好,介于自然语言与编程语言之间。以编程语言的书写形式指明算法职能。使用伪代码,不用拘泥于具体实现。它是半角式化、不标准的语言。可以把整个算法运行过程的结构用接近自然语言的形式(可以使用任何一种你熟悉的文字,关键是把程序的意思表达出来)描述出来。2.2伪代码算法2.2.1主函数伪代码算法 该程序是按自上而下,自顶向下的设计思想进行设计的。程序各个功能的实现之间的联系采用函数调用与函数嵌套。main()函数是整个程序的入口,程序的开始就是从

6、这里开始的,然后通过main()函数调用其他函数来实现各个功能。具体流程如图2.2所示。图2.2 主函数流程图 Begin /*算法开始*/ 调用designBy()显示出设计者信息 Scanf mSIZE,pSIZE,page100 /*mSIZE表示物理块,pSIZE表示页面号引用串个数,page100表示一个引用串的页面号*/ do Printf pagei Scanf code /*code是一个标记,用来判断用户输入是否符合要求*/ Switch(code) case 1: FIFO() /*先进先出算法*/ case 2: LRU() /*最近最久未使用算法*/ case 3: O

7、PT() /*最佳置换算法*/ case 4: exit(0) /*退出程序*/ default: 重新输入 while(code!=4) Getch(用户输入)End2.2.2延迟时间函数伪代码算法 begin 变量定义 while delay while i124 退格 end图2.3 延迟时间函数流程图 延迟时间函数主要由两个for循环构成。延迟时间函数在程序中主要起延迟时间的作用,相当于一个定时器,给程序数据加载,数据处理等提供时间保证。使程序能够正常的进行。其具体流程如图2.3所示。2.2.3 FIFO算法的伪代码 定义变量 while imSIZE pagei0memeryi, i

8、timei while jmSIZE memeryjtempijpSIZE if 新页面号不在物理块中 k+ if k=mSIZE 则,计算换出页,记录该页进入物理块的时间 否则,tempij=memeryj print 置换次数 End FIFO算法是操作系统中最简单最容易实现的一种页面置换算法,它的实现主要运用了两个循环结构。第一个循环的功能是将页面串中的前mSIZE页面直接放入物理块中;第二个循环主要判断当前页面是否在物理块中,若在物理块中,则继续读取下一个页面。否则,将最先进入物理块的页面写入到物理块中。其主要执行流程如图2.4所示。2.2.4 LRU算法的伪代码 LRU算法是将最近进

9、入物理块且未使用的页面首先换出物理块。LRU函数主要也运用了两个循环来实现其算法,首先将前mSIZE个页面置换到物理块中,然后再按具体算法进行置换页面。其执行流程如图2.5所示。图2.4 FIFO流程图 beginmSIZE pageimemeryi, itimei 前mSIZE个数直接放入 while ipSIZE while j if 新页面号不在物理块中 判断新页面号是否在物理块中 否则, max=flag0flag1?0:1 调用 print(置换次数)图2.5 LRU流程图2.2.5 OPT算法的伪代码 pageimemeryi, itimei 前mSIZE个数直接放入 while

10、j if memeryj!=pagei 判断新页面号是否在物理块中 k+ if k=mSIZE 否则,max=flag0 tempij=memeryj 得到物理块中各页下一次访问时间 if memerym=page1 退出循环 nextm=1 OPT算法是将内存中最长时间内不会用的页面置换出去,这种算法的优点是系统利用率,内存利用率都非常的高。但是这种算法目前无法实现,因为实际中,系统根本无法预知哪一个页面最先执行,哪一个页面最后执行,各个页面的执行顺序都无法确定根本就不能确定页面换出的次序。OPT算法主要用于对其他算法效率的评估。OPT函数的执行情况如图2.6所示。图2.6 OPT流程图3

11、函数调用关系图3.1函数声明3.1.1主要算法函数主要算法函数包括FIFO()、LRU()和OPT()三种,它们都是无返回值类型,不带任何参数。各个函数的具体声明情况如下:void FIFO(); /*先来先服务调度算法函数*/返回值类型:无返回值形参:无void LRU(); /*最近最久未使用算法函数*/void OPT(); /*最佳调度算法函数*/3.1.2辅助函数辅助函数是为了实现某些功能而特意设置的一些辅助函数。本程序主要有显示引用串函数、显示设计者信息函数、数据加载函数和延迟时间函数,它们有的有形式参数,有的没有,但是它们都是无返回值类型的函数。void print(unsign

12、ed int t); /*显示引用串函数*/无符号整型void designBy(); /*显示设计者信息*/void download(); /*数据加载*/void mDelay(unsigned int Delay); /*延迟时间*/3.2程序函数调用关系图 程序以main( )函数为入口,通过主函数main( )进行调用其他函数,以此实现函数的各个功能。在本程序中,main( )函数调用了designBy( )函数,用以显示设计者信息;main( )函数还分别调用了FIFO( )、LRU( )和OPT( )三种算法函数,实现三种算法。FIFO( )、LRU( )和OPT( )又分别调

13、用了print( )和compute( )函数,print( )显示了用户输入的页面引用串,compute( )则主要计算了用户选择的算法的结果。在计算过程中,为了保证逻辑上合理,我们在compute( )函数中调用了mDelay( )时间延迟函数;main( )函数也调用了download( )数据加载函数,主要功能是加载用户输入的数据以供各种算法使用。在调用download( )过程中,也调用了时间延迟函数mDelay( )。具体函数调用关系如图3.1所示。图3.1 函数调用关系4 测试结果4.1数据初始化 用户根据程序提示,按照要求输入相应的数据。例如,本次测试中我们设置物理块个数为4,

14、页面引用串个数为20,一个页面号引用串中各个页面号之间用空格(“ ”)隔开。值得注意的是,物理块个数可以是几个,几十个,甚至几百个,但是考虑到系统的效率,一般取物理块个数在10个以内;页面号引用串个数也和物理块个数一样,页面引用串个数取100个以内。用户输入情况如图4.1所示。图 4.1 界面初始化4.2页面调度算法 选择一个合适的页面置换算法对提高内存的利用率会有很大的帮助。当用户将数据初始化结束后,就要进行页面调度算法的选择了。下面本书将逐一说明先进先出算法FIFO、最近最久未使用LRU和最佳置换算法的具体调试情况。 用户输入的页面引用串为:2 12 43 2 15 23 21 2 4 2

15、3 21 20 32 3 21 23 20 2 32 12,物理块个数为:4,页面号引用串个数为:20。FIFO算法的缺页次数为19,置换次数为16,缺页率为19/20,访问率为5%;LRU算法的缺页次数为19,置换次数为16,缺页率为19/20,访问率为5%;OPT算法的缺页次数为14,置换次数为16,缺页率为14/20,访问率为30%。4.2.1先进先出算法 由操作系统维护一个所有当前在内存中的页面的链表,最新进入的页面放在表尾,最久进入的页面放在表头。当发生缺页中断时,淘汰表头的页面并把新调入的页面加到表尾。具体计算结果如图4.2所示。图 4.2 FIFO算法4.2.2最近最久未使用LR

16、U 用一维数组pagepSIZE存储页面号序列,memerymSIZE是存储装入物理块中的页面。数组temp10标记页面的访问时间。每当使用页面时,刷新访问时间。发生缺页时,就从物理块中页面标记最小的一页,调出该页,换入所缺的页面。具体计算结果如图4.3所示。图 4.3 LRU算法图 4.4 OPT算法4.2.3最佳置换算法OPT数组tempmSIZE记录物理块中对应页面的最后访问时间。每当发生缺页时,就从物理块中找出最后访问时间最大的页面,调出该页,换入所缺的页面。具体计算结果如图4.4所示。5 源程序#include stdlib.hconio.h/*全局变量*/int mSIZE; /*

17、物理块数*/int pSIZE; /*页面号引用串个数*/static int memery10=0; /*物理块中的页号*/static int page100=0; /*页面号引用串*/static int temp10010=0; /*辅助数组*/*置换算法函数*/先进先出置换算法/最近最久未使用算法/最佳置换算法/*辅助函数*/显示设计者信息/数据加载/延迟时间/*主函数*/void main() int i,k,code; system(color 0F); designBy(); printf(请按任意键进行初始化操作. nn getchar();clscolor 0B请输入物理块的个数: scanf(%d,&mSIZE);请输入页面号引用串的个数(P=100):pSIZE); puts(请依次输入页面号引用串(请用 隔开): for(i=0;ipSIZE;i+)%5dpagei); download();color 0E do puts(输入的页面号引用串为: for(k=0;k=(pSIZE-1)/20;k+) for(i=20*k;(i0;Delay-) for(i=0;124;i+) b /*显示设计者信息*/ void designBy()n 研究题目:页面置换算法 n 许可证号:13480144 n 版权所有:朱 强 n printf(

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1