实验五 虚拟存储管理.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验五虚拟存储管实验五虚拟存储管理

实验五 虚拟存储管理 实验目的 存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。 实验内容 通过计算不同算法的命中率比较算法的优劣。同时也考虑了用户内存容量对命中率的影 响。页面失效次数为每次访问相应指令时,该指令所对应的页不在内存中的次数。 计算并输出下属算法在不同内存容量下的命中率。 先进先出的算法(FIFO); 最近最少使用算法(LRU); 系统框图 四.页面置换算法程序代码 #includestdio.h #includestring.h #includeiostream.h const int MAXSIZE=1000;//定义页访问流的最大长度 const int MAXQUEUE=3;//定义可用页面数 typedef struct node { int loaded; int hit; }page; page pages[MAXQUEUE]; //定义页面表 int queue[MAXSIZE]; int quantity; //初始化结构函数 void initial() { int i; for(i=0;iMAXQUEUE;i++) { pages[i].loaded=-1; pages[i].hit=0; } for(i=0;iMAXSIZE;i++) { queue[i]=-1; } quantity=0; } //初始化页面函数 void init() { int i; for(i=0;iMAXQUEUE;i++) { pages[i].loaded=-1; pages[i].hit=0; } } //读入页访问流 void readData() { FILE *fp; char fname[20]; int i; cout请输入页面流文件名:; cinfname; if((fp=fopen(fname,r))==NULL) { cout错误,文件打不开,请检查文件名; } else { while(!feof(fp)) { fscanf(fp,%d ,queue[quantity]); quantity++; } } cout读入的页访问流:; for(i=0;iquantity;i++) { coutqueue[i] ; } } //FIFO调度算法 void FIFO() { int i,j,p,flag; int absence=0; p=0; coutendlendl; cout先进先出调度算法(FIFO)页面调出流:; for(i=0;iquantity;i++) { flag=0; for(j=0;jMAXQUEUE;j++) { if(pages[j].loaded==queue[i]) { flag=1; } } if(flag==0) { if(absence=MAXQUEUE) { coutpages[p].loaded ; } pages[p].loaded=queue[i]; p=(p+1)%MAXQUEUE; absence++; } } coutendl总缺页数:absenceendl; } //最近最少使用调度算法(LRU) void LRU() { int absence=0; int i,j; int flag; coutendlendl; cout最近最少使用调度算法(LRU)页面调出流:; for(i=0;iquantity;i++) { flag=-1; for(j=0;jMAXQUEUE;j++) { if(queue[i]==pages[j].loaded) { flag=j; } } if(flag==-1) { //缺页处理 if(absence=MAXQUEUE) {coutpages[0].loaded ; }// pages[0]是队列头 for(j=0;jMAXQUEUE-1;j++) { pages[j]=pages[j+1]; } pages[MAXQUEUE-1].loaded=queue[i]; absence++; } else { //页面已载入 pages[quantity]=pages[flag]

文档评论(0)

skewguj + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档