实验3、FIFO算法模拟5页_第1页
实验3、FIFO算法模拟5页_第2页
实验3、FIFO算法模拟5页_第3页
实验3、FIFO算法模拟5页_第4页
实验3、FIFO算法模拟5页_第5页
全文预览已结束

下载本文档

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

文档简介

1、实验三、FIFO LRU算法模拟一、 实验目的一个作业有多个进程,处理机只分配固定的主存块供该作业执行。往往块数小于进程页数,当请求调页程序调进一个块时,可能碰到主存中并没有空闲块的情况,此时就产生了在主存中淘汰哪个块的情况。本实验要求模拟FIFO算法/二、 实验原理 此算法的实质是,总是选择在主存中停留最长时间的页面淘汰。理由是:最早调入主存的页,其不再被访问的可能性最大。三、 实验环境1、 pc2、 vc+四、程序源代码:#define MAXSIZE 20#include <iostream.h>void main()int label=0; /标记此页是否已经装入内存int

2、 input=0; /用于输入作业号int worknum=0; /记录作业个数int storesize=0; /系统分配的存储块数int interrupt=0; /中断次数int quenceMAXSIZE; /队列,FIFO算法的主要数据结构int workstepMAXSIZE; /用于记录作业走向/*初始化*/for(int i=0;i<MAXSIZE;i+)quencei=0;workstepi=0;cout<<"请输入存储区块数:"cin>>storesize;cout<<"请输入作业走向(输入0结束):n

3、"for(int j=0;j<MAXSIZE;j+)cout<<"页面号:"<<j+1<<” :”;cin>>input;workstepj=input;if(input=0)cout<<"输入结束!n"break;worknum+;if(workstep0=0)cout<<"未输入任何作业,系统将退出!n"return;cout<<"置换情况如下:n"for(int k=0;k<worknum;k+) lab

4、el=0;/*看队列中是否有相等的页号或空位置*/for(int l=0;l<storesize;l+)/*是否有相等的页号*/if(quencel=workstepk)cout<<"内存中有"<<workstepk<<"号页面,无须中断!n"label=1; /标记此页面已装入内存break;/*是否有空位置*/if(quencel=0)quencel=workstepk;cout<<"发生中断,但内存中有空闲区,"<<workstepk<<"号

5、页面直接调入!n"interrupt+;label=1; break;/*上述情况都不成立则调出对首,将调入页面插入对尾*/if(label=0) cout<<"发生中断,将"<<quence0<<"号页面调出,"<<workstepk<<"号装入!n" interrupt+; for(int m=0;m<storesize;m+) quencem=quencem+1; quencestoresize-1=workstepk;cout<<"

6、;作业"<<worknum<<"个,"<<"中断"<<interrupt<<"次,"<<"缺页率:"<<float(interrupt)/float(worknum)*100<<"%n"用高级语言模拟页面置换算法LRU,加深对LRU算法的认识。一、 实验原理最近最久未使用页面置换算法(LRU)当需要淘汰某一页时,选择在最近一段时间里最久没有被使用过的页淘汰。其基本原理为:如果某一个页面被访问

7、了,它很可能还要被访问;相反,如果它长时间不被访问,再最近未来是不大可能被访问的。LRU采用页号栈的实现方法。最近访问的页放在栈顶,较早访问的页往栈底移动。总是先淘汰处于栈底的页。#define MAXSIZE 20#include <iostream.h>void main()int input=0; /用于输入作业号int worknum=0; /输入的作业个数int storesize=0; /系统分配的存储区块数int interrupt=0; /缺页中断次数int stackMAXSIZE; /栈,LRU算法的主要数据结构int workstepMAXSIZE; /记录作

8、业走向/*初始化*/for(int i=0;i<MAXSIZE;i+)stacki=0;workstepi=0;cout<<"请输入存储区块数:"cin>>storesize;cout<<"请输入作业的页面走向(输入0结束):n"for(int j=0;j<MAXSIZE;j+)cout<<"页面号 "<<j+1<<” :”;cin>>input;workstepj=input;if(input=0)cout<<"输入

9、结束!n"break;worknum+;if(workstep0=0)cout<<"未输入任何作业,系统将退出!n"return;cout<<"置换情况如下:n"for(int k=0;k<worknum;k+)/*在栈中找相等的页号或空位置*/for(int l=0;l<storesize;l+)/*是否有相等的页号*/if(stackl=workstepk)cout<<"内存中有"<<workstepk<<"号页面,无须中断!n"

10、 goto step1;/*找栈中是否有空位置*/if(stackl=0)stackl=workstepk;cout<<"发生中断,但内存中有空闲区,"<<workstepk<<"号页面直接调入!n"interrupt+;goto step1;/*上述情况都不成立则调出栈顶,将调入页面插入栈顶*/cout<<"发生中断,将"<<stack0<<"号页面调出,"<<workstepk<<"号装入!n"interrupt+;/*新掉入的页面放栈顶*/step1:for(int m=0;m<storesize;m+)stackm=stackm+1;stackstoresize-1=workstepk;cout<<"作业"<<worknum<<

温馨提示

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

评论

0/150

提交评论