页面置换算法地某实验报告材料_第1页
页面置换算法地某实验报告材料_第2页
页面置换算法地某实验报告材料_第3页
页面置换算法地某实验报告材料_第4页
页面置换算法地某实验报告材料_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、word 1 / 19 操作系统课程设计报告院 系:某某师 x学院专业:计算机科学与技术姓名 :陈建元齐欢班级: 1103班学号: 11190301 11190316 题目:页面置换算法指导教师 :王玉奇 2013年 12 月 10 日至 12 月 28 日word 2 / 19 目录摘要3 第一章 设计任务和需求4 4 4 第二章 概要设计4 4 5 5 5 5 6 第三章 详细设计7 7 7 3.2.1 主程序流程图7 3.2.2先进先出 (fifo) 页面置换算法8 3.2.3最优页面置换置换算法opt 9 3.2.4最近最久未使用页面置换算法lru 10 第四章 源程序结构分析11 1

2、1 4.2 源代码分析11 第五章调试16 第六章体会与自我评价18 第七章 参考文献19 word 3 / 19 摘要操作系统英语;operating system,简称 os 是一管理电脑硬件与软件资源的程序,同时也是计算机系统的内核与基石。操作系统身负诸如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等根本事务。操作系统是管理计算机系统的全部硬件资源包括软件资源与数据资源; 控制程序运行; 改善人机界面 ; 为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,为用户提供方便的、有效的、友善的服务界面。操作系统是一个庞大的管理控制程序,

3、大致包括 5 个方面的管理功能: 进程与处理机管理、作业管理、存储管理、设备管理、文件管理。在地址映射过程中,假如在页面中发现所要访问的页面不再内存中,如此产生缺页中断。当发生缺页中断时操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规如此叫做页面置换算法page-replacement algorithms 。关键词 :操作系统; opt页面置换算法;fifo先进先出的算法;lru最近最久未使用夜面置换算法word 4 / 19 第一章设计任务和需求深入掌握内存调度算法的概念原理和实现方法。编写程序实现:1先进先出页面置换算法fifo2最近最久

4、未使用页面置换算法lru 3最优置换页面置换算法opt 设计一个虚拟存储区和内存工作区,编程序演示以上三种算法的具体实现过程,并计算访问命中率。演示页面置换的三种算法。通过随机数产生一个指令序列,将指令序列转换成为页地址流。计算并输出各种算法在不同内存容量下的缺页率。在各种存储器管理方式中, 有一个共同的特点, 即它们都要求将一个作业全部装入内存方能运行,但是有两种情况:1 有的作业很大,不能全部装入内存,致使作业无法运行; 2 有大量作业要求运行,但内存容量不足以容纳所有这些作业。 而虚拟内存技术正式从逻辑上扩大内存容量,将会解决以上两个问题。从内存中调出一页程序或数据送磁盘的对换区中,通常

5、,把选择换出的页面的算法称为页面置换算法page-replacement algorithms 。进而页面置换算法程序能客观的将其工作原理展现在我们面前。第二章概要设计由于分区式管理尽管实现方式较为简单,但存在着严重的碎片问题使得内存的利用率不高。再者, 分区式管理时, 由于各作业或进程对应于不同的分区以与在分区内各作业或进程连续存放,进程的大小或内存可用空间的限制。而且分区式管理也不利于程序段和数据段的共享。页式管理正是为了减少碎片以与为了只在内存存放那些反复执行或即将执行的程序段与数据局部,而把那些不经常执行word 5 / 19 的程序段和数据存放于外存待执行时调入,以提高内存利用率而提

6、出来的页式管理有动态页式管理和静态页式管理之分,动态页式管理是在静态页式管理的根底上开展起来的。 请求页式管理属于动态页式管理中的一种,它的地址变换过程与静态页式管理时的一样, 也是通过页表查出相应的页面号,由页面号与页内相对地址相加而得到实际物理地址。有关的地址变换局部是由硬件自动完成的。当硬件变换机构发现所要求的页不在内存时,产生缺页中断信号, 由中断处理程序做出相应的处理。 中断处理程序是由软件实现的。除了在没有空闲页面时要按照置换算法选择出被淘汰页面之外,还要从外存读入所需要的虚页。这个过程要启动相应的外存和涉与到文件系统。因此,请求页式管理是一个十分复杂的过程,内存利用率的提高是以牺

7、牲系统开销的代价换来的。这里用到了置换算法。 它是在内存中没有空闲页面时被调用。目的是选出一个被淘汰的页面。如果内存中有足够的空闲页面存放所调入的页,如此不必使用置换算法。 把内存和外存统一管理的真正目的是把那些被访问概率非常高的页存放在内存中。因此,置换算法应该置换那些被访问概率低的页,将它们移出内存。如果进程的许多页是存放在外存的一个连续区域中,如此一次调入假如干个相邻的页, 会比一次调入一页的效率更高效一些。但如果调入的一批页面中的大多数都未被访问,如此又是低效的。可采用一种以预测为根底的预调页策略,将那些预计在不久之后便会被访问的页面,预先调入内存。 如果预测较准确, 那么,这种策略显

8、然是很有吸引力的。但目前预调页的成功率仅为50% 。且这种策略主要用于进程的首次调入时,由程序员指出应该先调入哪些页。当进程在运行中需要访问某局部程序和数据时,假如发现其所在的页面不在内存,便即提出请求,由os将其所需页面调入内存。由请示调页策略所确定调入的页,是一定会被访问的, 再加之请求调页策略比拟易于实现,故在目前的虚拟存储器中,大多采用此策略。 但这种策略每次仅调入一页,故须花费较大的系统开销,增加了磁盘i/o 的启用频率。word 6 / 19 在请求分页系统中的外存分为两局部:用于存放文件的文件区和用于存放对换页面的对换区。通常, 由于对换区是采用连续分配方式,而事件是采用离散分配

9、方式,故对换区的磁盘i/o 速度比文件区的高。这样,每当发生缺页请求时,系统应从何处将缺页调入内存,可分成如下三种情况:系统拥有足够的对换区空间,这时可以全部从对换区调入所需页面,以提高调页速度。为此,在进程运行前,便须将与该进程有关的文件,从文件区拷贝到对换区。系统缺少足够的对换区空间,这时但凡不会被修改的文件, 都直接从文件区调入;而当换出这些页面时,由于它们未被修改而不必再将它们换出时,以后需要时,再从对换区调入。 unix 方式。由于与进程有关的文件都放在文件区,故但凡未运行过的页面,都应从文件区调入。而对于曾经运行过但又被换出的页面,由于是被放在对换区,因此在下次调入时,应从对换区调

10、入。由于unix系统允许页面共享,因此,某进程所请求的页面有可能已被其它进程调入内存,此时也就无须再从对换区调入。运行程序页面置换算法的主界面输入页面序列和物理块数opt lru f ifo 缺页次数和缺页率word 7 / 19 第三章详细设计在进程运行过程中,假如其所要访问的页面不在内存而需把它们调入内存,但内存已无空闲空间时, 为了保证该进程能正常运行, 系统必须从内存中调出一页程序或数据,送磁盘的对换区中。但应将哪个页面调出, 须根据一定的算法来 确 定 。 通 常 , 把 选 择 换 出 页 面 的 算 法 称 为 页 面 置 换 算 法(page_replacement algor

11、ithms)。一个好的页面置换算法, 应具有较低的页面更换频率。从理论上讲, 应将那些以后不再会访问的页面换出,或将那些在较长时间内不会再访问的页面调出。3.2.1 主程序流程图如图 321所示主流程图图 321输入页面序列输入物理块数调用各种置换算法,opt,lru,fifo 页面置换算法计算缺页次数和缺页率完毕开始word 8 / 19 3.2.2 先进先出 (fifo) 页面置换算法算法的根本思想:这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单只需把一个进程已调入内存的页面, 按先后次序存入一个时间数组,并将其中时间值最

12、大的页面进展淘汰,并替换入新的页面就可以实现。算法流程图:如图 322所示fifo置换算法图 322入口初始化数据i 指向下一个页面页面是否存在物理块是否有空闲选择最先进入的页面作为淘汰页计算缺页率, 并输出数据完毕输出当前页 ,i+ 将页面放到空闲的物理块处i页面长度y y y n n n word 9 / 19 3.2.3 最优页面置换置换算法 opt 算法的根本思想:其所选择的被淘汰页面,将是永不使用的,或者是在最长时间内不再被访问的页面。 可保证获得最低的缺页率。 但由于人们目前还无法预知一个进程在内存的假如干个页面中,哪一个页面是未来最长时间内不再被访问的,因而该算法也是无法实现的。

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

14、换算法图324入口初始化数据i 指向下一个页面页面是否存在物理块是否有空闲选择最近最久未使用的页面作为淘汰页计算缺页率, 并输出数据完毕输出当前页 ,i+ 将页面放到空闲的物理块处i页面长度y y y n n n word 11 / 19 第四章源程序结构分析input(int m,pro pl)/打印页面走向状态srand(j);/以时钟时间 j 为种子,初始化随机数发生器void print(pro *page1)/打印当前的页面int search(int e,pro *page1 )/寻找内存块中与e 一样的块号int max(pro *page1)/寻找最近最长未使用的页面int c

15、ount(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 i,

16、j; j=time(null);/取时钟时间srand(j);/以时钟时间j 为种子,初始化随机数发生器coutendl; cout 输出随机数 : endl; coutendl; for(i=0;im;i+) word 12 / 19 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.

17、num ; coutendl; int 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+; fo

18、r( i=0;im;i+)if(e=pagei.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;/当前页面再次被访问时循环完毕word 13 / 19 else count+;/否如此 count+1 return count;/返回 count 的值 in

19、t main() int c; int m=0,t=0; float n=0; pro 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; cou

20、t1:fifo页面置换 endlendl; cout2:lru页面置换 endlendl; cout3:opt 页面置换 endlendl; cout 请选择页面置换算法:endlc; system(cls); if(c=1)/fifo页面置换 n=0; cout fifo算法页面置换情况如下: endl; coutendl; while(i=0) /当前页面在内存中 coutpi.num ; /输出当前页pi.num cout 不缺页 endl; word 14 / 19 i+; /i加 1 else /当前页不在内存中 if(t=m)t=0; else n+; /缺页次数加1 paget.

21、num=pi.num; /把当前页面放入内存中coutpi.num ; print(page); /打印当前页面t+; /下一个内存块 i+; /指向下一个页面 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;

22、else /如果不在内存块中 n+; /缺页次数加1 t=max(page); /返回最近最久未使用的块号赋值给t paget.num=pi.num; /进展替换paget.time=0; /替换后时间置为0 coutpi.num ; print(page); for(a=0;am;a+) if(a!=t) pagea.time+; /其它的时间加1 word 15 / 19 i+; coutendl; cout 缺页次数: n 缺页率: n/mendlendl; if(c=3)/opt页面置换 n=0; cout opt 算法置换情况如下:endl; coutendl; while(i=0)

23、/如果已在内存块中 coutpi.num ; cout 不缺页 endl; i+; else/如果不在内存块中 int a=0; for(t=0;tm;t+) if(paget.num=0)a+;/记录空的内存块数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

24、(page,i,t,p); s=t; /把找到的块号赋给s pages.num=pi.num; n+; coutpi.num ; print(page); word 16 / 19 i+; coutendl; cout 缺页次数: n 缺页率: n/mendlendl; while(c=1|c=2|c=3); return 0; 第五章调试程序在运行的情况下,进入主界面输入菜单,如图41所示:页面长度:输入16,分配的物理块:输入4,主界面图 41选 1,进入 fifo算法页面置换,如图 42所示word 17 / 19 fifo算法置换图 42选 2,进入 lru算法页面置换,如图 43所示lru算法置换图 43选 3,进入 opt算法页面置换,如图 44所示word 18 / 19 opt算法置换图 44第六章体会与自我评价这次操作系统课程设计,让我们对操作系统有了更深的认识,首先操作系统是一管理电脑硬件与软件资源的程序,同时也是计算机

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论