页面置换算法FIFO算法_第1页
页面置换算法FIFO算法_第2页
页面置换算法FIFO算法_第3页
页面置换算法FIFO算法_第4页
页面置换算法FIFO算法_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、 网络教育学院操作系统课 程 设 计 题 目: 页面置换算法FIFO算法 学习中心: 层 次: 专 业: 年 级: 年 春/秋 季 学 号: 学 生: 井杰 辅导教师: 龙珠 完成日期: 2016 年 1 月 28 日页面置换算法FIFO算法在地址映射过程中,若在页面中发现所要访问的页面不在内存中,则产生缺页中断。当发生缺页中断时,如果操作系统内存中没有空闲页面,则操作系统必须在内存选择一个页面将其移出内存,以便为即将调入的页面让出空间。而用来选择淘汰哪一页的规则叫做页面置换算法。在请求分页存储器管理系统中,我们需要一个页面置换算法,而先进先出算法就是最早出现的一种算法,利用该算法可以实现页面

2、的置换,实现内存的充分利用,使进程可以执行。先进先出置换算法(FIFO) 最简单的页面置换算法是先入先出(FIFO)法。这种算法的实质是,总是选择在主存中停留时间最长(即最老)的一页置换,即先进入内存的页,先退出内存。理由是:最早调入内存的页,其不再被使用的可能性比刚调入内存的可能性大。建立一个FIFO队列,收容所有在内存中的页。被置换页面总是在队列头上进行。当一个页面被放入内存时,就把它插在队尾上。 这种算法只是在按线性顺序访问地址空间 时才是理想的,否则效率不高。因为那些常被访问的页,往往在主存中也停留得最久,结果它们因变“老”而不得不被置换出去。FIFO的另一个缺点是,它有一种异常现象,

3、即在增加存储块的情况下,反而使缺页中断率增加了。当然,导致这种异常现象的页面走向实际上是很少见的。优先淘汰最早进入内存的页面,亦即在内存中驻留时间最久的页面。该算法实现简单,只需把调入内存的页面根据先后次序链接成队列,设置一个指针总指向最早的页面。但该算法与进程实际运行时的规律不适应,因为在进程中,有的页面经常被访问。1先进先出(FIFO)该算法实现简单,只需把一个进程已调入内存的页面,按先后顺序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。1、输入当前要调用的页面号2、判断该页面是否已在队列内,若在队列内,不执行任何操作若不在队列内。则执行以下操作判断队列是否已满,若

4、队列未满,直接把该页面号存入队列 若队列已满,删除并返回队头元素,然后把该页面号存入队3、输出置换次数,依次输出置换出的页面。2先进先出算法思路在请求分页存储器管理系统设计中,先进先出(FIFO)算法是一种给出页面访问的顺序与分配给作业的主存块数,使用队列作为数据结构编写算法,实现统计缺页次数与页面置换操作,该算法总是先淘汰最先进入内存的页面,即选择在内存中停留时间最久的页面予以淘汰。3.先进先出算法步骤1.设置一些页面参数,int pagenum=0 内存页面数int total=0 要访问的页面总数int lacknumber 缺页的总数2.设置一个队列int seque20=0; 队列长

5、度设置为20 ,且初值设为0 3.执行算法输入1,2,3,4,1,2,5,1,2,3,4,5 以输入-1结束4.算法数据结构Array020Void main()系统主函数Cin>> pagenum 键盘输入 页号存储页面号序列page存储装入物理块中的页面memery访问函数 void Visit(int)void FIFO(void);打印函数print()核心函数FIFO()5.主要函数代码#include<iostream.h>int choose; /选择置换方法int PageOrder100; /页面走向int Order=0; /页面计数int

6、 MaxPage; /页面总数int MaxPhy; /物理块总数int count; /命中次数struct PageTable /页表结构体 int PageNomber; int PhyNomber; int Sta; /状态位 int Visit; /访问位 int Change; /改变位;struct PageTable p10;/最多同时进入10个页表void main() void Init(); void Fifo(); void Lru(); Init(); cout<<"请选择置换方法"<<endl<<"1

7、、FIFO 2、LRU"<<endl; cin>>choose; if(choose=1) cout<<"物理块变化过程:"<<endl; Fifo(); cout<<endl; cout<<"命中次数:"<<count<<endl; else Lru();void Init() cout<<"请输入页表长度" cin>>MaxPage; for(int i=1;i<=MaxPage;i+) pi.P

8、ageNomber=i; pi.PhyNomber=0; pi.Change=0; pi.Sta=0; pi.Visit=0; cout<<endl<<"请输入物理块数" cin>>MaxPhy; cout<<"请输入页面走向以0结束"<<endl; int j=0; PageOrder0=1; while(PageOrderj!=0) j+; Order+; cin>>PageOrderj; if(j>99) cout<<"超过最大数量,请重新输入,以0

9、结束!" continue; void Fifo() int Max(struct PageTable M); struct PageTable i10;/模拟物理块 for(int j=0;j<MaxPhy;j+) ij.PageNomber=0; ij.Visit=0; int b=0;/标志位,标记物理块已满 for(int k=1;k<Order;k+) if(b=1)/物理块满,进行页面置换 int a=0;/标志位,是否命中 for(int m=0;m<MaxPhy;m+)/判断命中 if(im.PageNomber=PageOrderk) a=1; c

10、ount+; cout<<"命中"<<" " break; if(a=1)continue;/命中继续循环 int Ma=Max(i);/未命中,选择时间最长的物理块进行置换 cout<<"替换"<<Ma<<" " iMa=pPageOrderk; for(int l=0;l<MaxPhy;l+) il.Visit+; continue; for(j=0;j<MaxPhy;j+)/页面写入空物理块 if(ij.PageNomber=0) ij=

11、pPageOrderk; cout<<"进入"<<" " for(int l=0;l<=j;l+) il.Visit+; if(j=MaxPhy-1) b=b+1; break; void Lru()int Max(struct PageTable M)/返回最大值 int temp,Max=0; temp=M0.Visit; for(int j=1;j<MaxPhy;j+) if(temp<Mj.Visit) temp=Mj.Visit; Max=j; return(Max); 55测试案例比如设置物理块个数为

12、3,页面序号7 0 1 2 3 0 4 2 3,代码应列出算法置换的具体细节。时刻123456789访问顺序701230423M=3777222444000333221110003F12345678接下来我就讲下FIFO这种情况,FIFO就是先进先出的访问方式,根据题目里面的访问顺序:6 0 1 2 0 3 0 4 2 3,所有首先访问的是7,当第一次访问6 的时候,内存中当然是没有的,所以就会发生中断去读取数据,完成中断之后,内存中就有了一个6,接着访问的是0,当然此时内存中也没有0,所以又会发生一次中断,同理,完成中断之后,内存中就有0了,接下来访问的就是第三个数1,很明显,此时内存中也是没有该元素的,所以也会发生中断,完成中断后内存里面就有一个1了。此时内存中的数据为701。 接下来就要注意思想的转化了,因为题目中说了只有3块存储空间,到目前为止,3块空间都用完了。所以,在访问第4个数字时(也就是访问2 的时候),必须先丢弃一个数据,根据题目要求是FIFO的原理,所以,理所当然就应该丢弃最先访问的7,并去访问新的数据-2,即2替换7的位置,所以也会发生中断,并且中断完成后内存中的数据是201。 接下来又要访问第五个数字,即访问第二个0的时候,此时,内存的数据为201,其中刚好有一个0,所有就不会发生中断,而是继续访问下一个数,即第六个数-4。此时内存中没有4这个数字,并且

温馨提示

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

评论

0/150

提交评论