操作系统实验存储器管理页面置换算法

上传人:206****923 文档编号:90749953 上传时间:2019-06-16 格式:DOC 页数:6 大小:43KB
返回 下载 相关 举报
操作系统实验存储器管理页面置换算法_第1页
第1页 / 共6页
操作系统实验存储器管理页面置换算法_第2页
第2页 / 共6页
操作系统实验存储器管理页面置换算法_第3页
第3页 / 共6页
操作系统实验存储器管理页面置换算法_第4页
第4页 / 共6页
操作系统实验存储器管理页面置换算法_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《操作系统实验存储器管理页面置换算法》由会员分享,可在线阅读,更多相关《操作系统实验存储器管理页面置换算法(6页珍藏版)》请在金锄头文库上搜索。

1、#include #include#include#include#include#define bsize 0#define psize mtypedef struct Page int num; /*记录页面号*/ int time; /*记录调入内存时间*/Page;Page bbsize; /*内存单元数*/int cbsizepsize; /*暂保存内存当前的状态:缓冲区*/int queue100; /*记录调入队列*/ int K; /*调入队列计数变量*/int clear_period=5;int phbbsize=0; /*物理块*/int propsize=0; /*进程

2、号*/int flagbsize=0; /*进程等待次数(存放最久未被使用的进程标志)*/int i=0,j=0,k=0; /*i表示进程序列号,j表示物理块号*/int m=-1,n=-1; /*物理块空闲和进程是否相同判断标志*/int max=-1,maxflag=0; /*标记替换物理块进程下标*/int count=0; /*统计页面缺页次数*/int* build() for(i=0;ipsize;i+) proi=rand()%10+1; printf(%d ,proi); printf(n); return(pro);/*寻找未使用的物理块*/int searchpb() fo

3、r(j=0;jbsize;j+) if(phbj=0) m=j; return m; break; return -1;/*判断进程是否已经在物理块中*/int searchpro() for(j=0;jbsize;j+) if(phbj=proi) n=j; return j; return -1;/*清空物理块和错误次数*/void empty() for(i=0;ibsize;i+) phbi=0; count=0;void FIFO() for(i=0;ipsize;i+) printf(%d ,proi); printf(nn); for(i=0;ipsize;i+) m=searc

4、hpb(); n=searchpro(); for(j=0;jmaxflag) maxflag=flagj; max=j; if(n=-1) /*不存在相同进程*/ if(m!=-1) /*存在空闲物理块 */ phbm=proi; count+; flagm=0; for(j=0;j=m;j+) /*已经进入的flag加1,刚进的为1*/ flagj+; m=-1; else /*不存在空闲物理块*/ phbmax=proi; flagmax=0; for(j=0;jbsize;j+) flagj+; max=-1; /*恢复默认*/ maxflag=0; count+; /*错误数*/ e

5、lse /*存在相同的进程*/ n=-1; for(j=0;jbsize;j+) printf(%d ,phbj); printf(n); printf(Page fault:%dn,count); printf(Page replacement:%dn,count-bsize); printf(Page default rate:%6.3f,(float)count/psize);/*初始化内存单元、缓冲区*/ void Init(Page *b,int cbsizepsize) for(i=0;ibsize;i+) bi.num=-1; bi.time=bsize-i-1; for(i=0

6、;ibsize;i+) for(j=0;jpsize;j+) cij=-1; /*取得在内存中停留最久的页面,默认状态下为最早调入的页面*/ int GetMax(Page *b) int max=-1; int tag=0; for(i=0;imax) max=bi.time; tag=i; return tag; /*判断页面是否已在内存中*/ int Equation(int fold,Page *b) int i; for(i=0;i=0) /*如果内存中已经存在进程fold*/ bval.time=0; for(i=0;ibsize;i+) if (i!=val) bi.time+;

7、 else /*内存中没有进程fold,包括有空物理块的情况*/ K+; val=GetMax(b); bval.num=fold; bval.time=0; for(i=0;ibsize;i+) if(i!=val) bi.time+; void LRU() K=0; Init(b,c); for(j=0;jpsize;j+) Lruu(proj,b); for(i=0;ibsize;i+) cij=bi.num; for(i=0;ibsize;i+) for(j=0;jpsize;j+) if(cij=-1) printf(|%2c ,48); /*48是0,32是空格*/ else printf(|%2d ,cij); printf(|n); printf(nThe number of page default: %6dnPage default rate: %6.3f,K,(float)K/psize);void main() int sel ; do printf(0 exitn); printf(1 creat numbers of processesn); printf(2 FIFOn); printf(3 LRUn); printf(4 NU

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

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号