页面置换算法的实验报告.doc

上传人:叶*** 文档编号:36165075 上传时间:2022-08-25 格式:DOC 页数:18 大小:194.50KB
返回 下载 相关 举报
页面置换算法的实验报告.doc_第1页
第1页 / 共18页
页面置换算法的实验报告.doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《页面置换算法的实验报告.doc》由会员分享,可在线阅读,更多相关《页面置换算法的实验报告.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 操作系统课程设计报告院 (系): 衡阳师范学院 专 业: 计算机科学与技术 姓 名: 陈建元 齐欢 班 级: 1103班 学 号: 11190301 11190316 题 目: 页面置换算法 指导教师: 王玉奇 2013年12月10日至12月28日 目 录摘 要3第一章 设计任务和需求41.1课程设计任务41.2课程设计需求4第二章 概要设计42.1系统分析42.2调页策略52.2.1何时调入页面52.2.2请求调页策略52.2.3从何处调入页面52.3模块设计6第三章 详细设计63.1系统设计63.2算法思想及流程图73.2.1 主程序流程图73.2.2先进先出(FIFO)页面置换算法83

2、.2.3最佳页面置换置换算法(OPT)93.2.4最近最久未使用页面置换算法(LRU)10第四章 源程序结构分析104.1程序结构104.2 源代码分析11第五章 调试16第六章 体会与自我评价17第七章 参考文献18摘 要 操作系统(英语;Operating System,简称OS)是一管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统是管理计算机系统的全部硬件资源包括软件资源及数据资源;控制程序运行;改善人机界面;为其它应用软件提供支持等,使计算机系统所有资

3、源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。操作系统是一个庞大的管理控制程序,大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。 在地址映射过程中,若在页面中发现所要访问的页面不再内存中,则产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内 存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法(Page-Replacement Algorithms)。 关键词:操作系统;OPT页面置换算法;FIFO先进先出的算法;LRU最近最久未使用夜面置换算法第一章 设计任务和需求1.1课程设计任务深入掌握内

4、存调度算法的概念原理和实现方法。编写程序实现:(1)先进先出页面置换算法(FIFO)(2)最近最久未使用页面置换算法(LRU)(3)最佳置换页面置换算法(OPT)设计一个虚拟存储区和内存工作区,编程序演示以上三种算法的具体实现过程,并计算访问命中率。演示页面置换的三种算法。通过随机数产生一个指令序列,将指令序列转换成为页地址流。计算并输出各种算法在不同内存容量下的缺页率。1.2课程设计需求在各种存储器管理方式中,有一个共同的特点,即它们都要求将一个作业全部装入内存方能运行,但是有两种情况:(1) 有的作业很大,不能全部装入内存,致使作业无法运行;(2) 有大量作业要求运行,但内存容量不足以容纳

5、所有这些作业。而虚拟内存技术正式从逻辑上扩充内存容量,将会解决以上两个问题。 从内存中调出一页程序或数据送磁盘的对换区中,通常,把选择换出的页面的算法称为页面置换算法(Page-Replacement Algorithms)。进而页面置换算法程序能客观的将其工作原理展现在我们面前。第二章 概要设计2.1系统分析由于分区式管理尽管实现方式较为简单,但存在着严重的碎片问题使得内存的利用率不高。再者,分区式管理时,由于各作业或进程对应于不同的分区以及在分区内各作业或进程连续存放,进程的大小或内存可用空间的限制。而且分区式管理也不利于程序段和数据段的共享。页式管理正是为了减少碎片以及为了只在内存存放那

6、些反复执行或即将执行的程序段与数据部分,而把那些不经常执行的程序段和数据存放于外存待执行时调入,以提高内存利用率而提出来的页式管理有动态页式管理和静态页式管理之分,动态页式管理是在静态页式管理的基础上发展起来的。请求页式管理属于动态页式管理中的一种,它的地址变换过程与静态页式管理时的相同,也是通过页表查出相应的页面号,由页面号与页内相对地址相加而得到实际物理地址。有关的地址变换部分是由硬件自动完成的。当硬件变换机构发现所要求的页不在内存时,产生缺页中断信号,由中断处理程序做出相应的处理。中断处理程序是由软件实现的。除了在没有空闲页面时要按照置换算法选择出被淘汰页面之外,还要从外存读入所需要的虚

7、页。这个过程要启动相应的外存和涉及到文件系统。因此,请求页式管理是一个十分复杂的过程,内存利用率的提高是以牺牲系统开销的代价换来的。这里用到了置换算法。它是在内存中没有空闲页面时被调用。目的是选出一个被淘汰的页面。如果内存中有足够的空闲页面存放所调入的页,则不必使用置换算法。把内存和外存统一管理的真正目的是把那些被访问概率非常高的页存放在内存中。因此,置换算法应该置换那些被访问概率低的页,将它们移出内存。2.2调页策略 2.2.1何时调入页面如果进程的许多页是存放在外存的一个连续区域中,则一次调入若干个相邻的页,会比一次调入一页的效率更高效一些。但如果调入的一批页面中的大多数都未被访问,则又是

8、低效的。可采用一种以预测为基础的预调页策略,将那些预计在不久之后便会被访问的页面,预先调入内存。如果预测较准确,那么,这种策略显然是很有吸引力的。但目前预调页的成功率仅为50%。且这种策略主要用于进程的首次调入时,由程序员指出应该先调入哪些页。 2.2.2请求调页策略 当进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存,便即提出请求,由OS将其所需页面调入内存。由请示调页策略所确定调入的页,是一定会被访问的,再加之请求调页策略比较易于实现,故在目前的虚拟存储器中,大多采用此策略。但这种策略每次仅调入一页,故须花费较大的系统开销,增加了磁盘I/O的启用频率。 2.2.3从何处调

9、入页面在请求分页系统中的外存分为两部分:用于存放文件的文件区和用于存放对换页面的对换区。通常,由于对换区是采用连续分配方式,而事件是采用离散分配方式,故对换区的磁盘I/O速度比文件区的高。这样,每当发生缺页请求时,系统应从何处将缺页调入内存,可分成如下三种情况: 系统拥有足够的对换区空间,这时可以全部从对换区调入 所需页面,以提高调页速度。为此,在进程运行前,便须将与该进程有关的文件,从文件区拷贝到对换区。 系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当换出这些页面时,由于它们未被修改而不必再将它们换出时,以后需要时,再从对换区调入。 UNIX方式。由于与进程有关

10、的文件都放在文件区,故凡是未运行过的页面,都应从文件区调入。而对于曾经运行过但又被换出的页面,由于是被放在对换区,因此在下次调入时,应从对换区调入。由于UNIX系统允许页面共享,因此,某进程所请求的页面有可能已被其它进程调入内存,此时也就无须再从对换区调入。2.3模块设计 运行程序页面置换算法的主界面输入页面序列和物理块数OPTLRUFIFO 缺页次数和缺页率 第三章 详细设计3.1系统设计在进程运行过程中,若其所要访问的页面不在内存而需把它们调入内存,但内存已无空闲空间时,为了保证该进程能正常运行,系统必须从内存中调出一页程序或数据,送磁盘的对换区中。但应将哪个页面调出,须根据一定的算法来确

11、定。通常,把选择换出页面的算法称为页面置换算法(Page_ReplacementAlgorithms)。一个好的页面置换算法,应具有较低的页面更换频率。从理论上讲,应将那些以后不再会访问的页面换出,或将那些在较长时间内不会再访问的页面调出。3.2算法思想及流程图3.2.1 主程序流程图如图(321)所示输入页面序列输入物理块数调用各种置换算法,OPT,LRU,FIFO页面置换算法计算缺页次数和缺页率结束开始主流程图(图321)3.2.2先进先出(FIFO)页面置换算法算法的基本思想:这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简

12、单只需把一个进程已调入内存的页面,按先后次序存入一个时间数组,并将其中时间值最大的页面进行淘汰,并替换入新的页面就可以实现。算法流程图:如图(322)所示 入口初始化数据i指向下一个页面页面是否存在物理块是否有空闲选择最先进入的页面作为淘汰页计算缺页率,并输出数据 结束输出当前页,i+将页面放到空闲的物理块处i页面长度YYYNNNFIFO置换算法(图322)3.2.3最佳页面置换置换算法(OPT)算法的基本思想:其所选择的被淘汰页面,将是永不使用的,或者是在最长时间内不再被访问的页面。可保证获得最低的缺页率。但由于人们目前还无法预知一个进程在内存的若干个页面中,哪一个页面是未来最长时间内不再被

13、访问的,因而该算法也是无法实现的。但是可利用该算法去评价其它算法。算法流程图:如图(323)所示 入口初始化数据i指向下一个页面页面是否存在物理块是否有空闲选择以后最长时间内(未来)不在被访问的页面作为淘汰页计算缺页率,并输出数据 结束输出当前页, i+将页面放到空闲的物理块处i页面长度YYYNNNOPT页面置换算法(图323)3.2.4最近最久未使用页面置换算法LRU算法的基本思想:当需要淘汰某一页时,选择离当前时间最近的一段时间内最久没有使用过的页先淘汰。该算法的主要出发点是,如果某页被访问了,则它可能马上还被访问。或者反过来说,如果某页很长时间未被访问,则它在最近一段时间不会被访问。算法

14、流程图:如图(324)所示 入口初始化数据i指向下一个页面页面是否存在物理块是否有空闲选择最近最久未使用的页面作为淘汰页计算缺页率,并输出数据 结束输出当前页,i+将页面放到空闲的物理块处i页面长度YYYNNNLRU页面置换算法(图324)第四章 源程序结构分析4.1程序结构 Input(int m,Pro pL)/打印页面走向状态 srand(j);/以时钟时间j为种子,初始化随机数发生器 void print(Pro *page1)/打印当前的页面 int Search(int e,Pro *page1 )/寻找内存块中与e相同的块号int Max(Pro *page1)/寻找最近最长未使

15、用的页面int Count(Pro *page1,int i,int t,Pro pL)/记录当前内存块中页面离下次使用间隔长度4.2 源代码分析#include #include #include #include #define L 20 /页面长度最大为20 int M; /内存块struct Pro/定义一个结构体 int num,time; ; Input(int m,Pro pL)/打印页面走向状态 coutm; if(m20|m10) coutendl;cout页面长度必须在1020之间endlendl;cout请重新输入L:; else break; while(1); int

16、 i,j; j=time(NULL);/取时钟时间srand(j);/以时钟时间j为种子,初始化随机数发生器coutendl;cout输出随机数: endl; coutendl;for(i=0;im;i+) pi.num=rand( )%10;/产生0到9之间的随机数放到数组p中pi.time=0; coutpi.num ; coutendlendl; return m; void print(Pro *page1)/打印当前的页面 Pro *page=new ProM; page=page1; for(int i=0;iM;i+) coutpagei.num ; coutendl; int

17、Search(int e,Pro *page1 )/寻找内存块中与e相同的块号 Pro *page=new ProM; page=page1; for(int i=0;iM;i+)if(e=pagei.num)return i;/返回i值return -1; int Max(Pro *page1)/寻找最近最长未使用的页面 Pro *page=new ProM; page=page1; int e=page0.time,i=0; while(iM) /找出离现在时间最长的页面 if(epagei.time) e=pagei.time; i+; for( i=0;iM;i+)if(e=pagei

18、.time)return i;/找到离现在时间最长的页面返回其块号return -1; int Count(Pro *page1,int i,int t,Pro pL)/记录当前内存块中页面离下次使用间隔长度Pro *page=new ProM; page=page1;int count=0; for(int j=i;jL;j+) if(paget.num=pj.num )break;/当前页面再次被访问时循环结束else count+;/否则count+1 return count;/返回count的值 int main() int c;int m=0,t=0; float n=0;Pro

19、pL; m=Input(m,p);/调用input函数,返回m值cout请输入分配的物理块m(26): ; coutendlM; if(M6|M2) coutendl;cout物理块m必须在26之间endlendl;cout请重新输入m: ; else break; while(1); Pro *page=new ProM; do for(int i=0;iM;i+)/初始化页面基本情况 pagei.num=0; pagei.time=m-1-i; i=0;coutendl;cout1:FIFO页面置换endlendl; cout2:LRU页面置换endlendl; cout3:OPT页面置换

20、endlendl; cout请选择页面置换算法:endlc; system(cls); if(c=1)/FIFO页面置换 n=0; cout FIFO算法页面置换情况如下: endl; coutendl; while(i=0) /当前页面在内存中 coutpi.num ; /输出当前页pi.num cout不缺页endl; i+; /i加1 else /当前页不在内存中 if(t=M)t=0; else n+; /缺页次数加1 paget.num=pi.num; /把当前页面放入内存中coutpi.num ; print(page); /打印当前页面t+; /下一个内存块 i+; /指向下一个

21、页面 coutendl;cout缺页次数:n 缺页率:n/mendlendl; if(c=2)/LRU页面置换 n=0; cout LRU算法页面置换情况如下: endl; coutendl; while(i=0)/如果已在内存块中 paget.time=0;/把与它相同的内存块的时间置0 for(a=0;aM;a+) if(a!=t)pagea.time+;/其它的时间加1 coutpi.num ; cout不缺页endl; else /如果不在内存块中 n+; /缺页次数加1 t=Max(page); /返回最近最久未使用的块号赋值给t paget.num=pi.num; /进行替换pag

22、et.time=0; /替换后时间置为0 coutpi.num ; print(page); for(a=0;aM;a+) if(a!=t) pagea.time+; /其它的时间加1 i+; coutendl;cout缺页次数:n 缺页率:n/mendlendl; if(c=3)/OPT页面置换 n=0; cout OPT算法置换情况如下:endl; coutendl; while(i=0)/如果已在内存块中 coutpi.num ; cout不缺页endl; i+; else/如果不在内存块中int a=0; for(t=0;tM;t+) if(paget.num=0)a+;/记录空的内存

23、块数if(a!=0) /有空内存 int q=M; for(t=0;tt)q=t;/把空内存块中块号最小的找出来pageq.num=pi.num; n+;coutpi.num ; print(page); i+;else int temp=0,s; for(t=0;tM;t+)/寻找内存块中下次使用离现在最久的页面if(tempCount(page,i,t,p) temp=Count(page,i,t,p); s=t; /把找到的块号赋给s pages.num=pi.num; n+; coutpi.num ; print(page); i+; coutendl;cout缺页次数:n 缺页率:n

24、/mendlendl; while(c=1|c=2|c=3); return 0; 第五章 调试 程序在运行的情况下,进入主界面输入菜单,如图(41)所示:页面长度:输入16,分配的物理块:输入4, 主界面(图41)选1,进入FIFO算法页面置换,如图(42)所示 FIFO算法置换(图42)选2,进入LRU算法页面置换,如图(43)所示 LRU算法置换(图43) 选3,进入OPT算法页面置换,如图(44)所示 OPT算法置换(图44) 第六章 体会与自我评价这次操作系统课程设计,让我们对操作系统有了更深的认识,首先操作系统是一管理电脑硬件与软件资源的程序,同时也是计算机系统内核与基石。操作系统

25、是一个庞大的管理控制程序,大致包括5个方面的管理功能:进程与处理机管理、作业管理、存储管理、设备管理、文件管理。我们这次课程设计的题目是页面置换算法,是属于存储器管理。在进程运行过程中,若其访问的页面不在内存而需把它们调入内存,但内存以无空闲空间时,为了保证该进程能正常的运行,系统必须从内存中调出一页程序或数据送磁盘的兑换区中,但应将哪个页面调出,需根据一定的算法来确定。通常,把选择换成页面的算法称为页面置换算法。通过本次课程设计,我们对页面置换算法的了解更加的深刻。主要有以下置换算法: OPT(最佳置换算法)、FIFO(先进先出置换算法)、LRU(最近最久未使用算法)。每种算法都有各自的优缺

26、点,OPT算法是实际中不能实现的,但是可以利用该算法去评价其它算法;FIFO算法与进程实际运行的规律不相适用,因为在进程中,有些页面经常被访问;LRU算法是根据页面调入内存后的使用情况进行决策的。在这次课程设计中,遇到了一些困难,例如怎么实现各种算法,如何进行函数调用及对数据的限制操作等,在遇到这些困难的时候,我们会去查阅资料,仔细看书,尝试用不同的方法解决,在各种方法中选择一种最好的方法,有的时候会碰到不知道如何实现的函数,我们会查看MSDN,这次是用的+语言做的,每一步都是自己独立完成的,这次课程设计我最大的收获是学以致用,通过这次设计我们看到了自己学习的能力,我们相信在以后的学习中,会更加的努力上进。最后,还非常感谢辛苦的操作系统老师,首先,因为他辛苦的为我们讲解操作系统这门课,让我们对操作系统有了一定的了解,为这次课程设计奠定了良好的基础,其次,还要感谢他认真指导我们的这次课程设计,给了我们这次总体运用自己能力的机会,我们坚信:只要功夫深,铁杵磨成针。 第七章 参考文献1计算机操作系统 汤小丹,梁红兵,哲凤屏 西安电子科技大学出版社 2007.5 2visual C+ 高级编程范例 谭桂华等 清华大学出版社 2004.5 3操作系统教程与实验 胡明庆,高巍,钟梅 清华大学出版社 2007.1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 公文通知

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁