欢迎来到天天文库
浏览记录
ID:50949728
大小:43.00 KB
页数:6页
时间:2020-03-16
《操作系统实验存储器管理页面置换算法.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#include#include#include#include#definebsize0#definepsizemtypedefstructPage{intnum;/*记录页面号*/inttime;/*记录调入内存时间*/}Page;Pageb[bsize];/*内存单元数*/intc[bsize][psize];/*暂保存内存当前的状态:缓冲区*/intqueue[100];/*记录调入队列*/intK;/*调入队列计数变量*/intclear_period=5;intp
2、hb[bsize]={0};/*物理块*/intpro[psize]={0};/*进程号*/intflag[bsize]={0};/*进程等待次数(存放最久未被使用的进程标志)*/inti=0,j=0,k=0;/*i表示进程序列号,j表示物理块号*/intm=-1,n=-1;/*物理块空闲和进程是否相同判断标志*/intmax=-1,maxflag=0;/*标记替换物理块进程下标*/intcount=0;/*统计页面缺页次数*/int*build(){for(i=0;i3、f("");return(pro);}/*寻找未使用的物理块*/intsearchpb(){for(j=0;j4、psize;i++)printf("%d",pro[i]);printf("");for(i=0;imaxflag){maxflag=flag[j];max=j;}}if(n==-1)/*不存在相同进程*/{if(m!=-1)/*存在空闲物理块*/{phb[m]=pro[i];count++;flag[m]=0;for(j=0;j<=m;j++)/*已经进入的flag加1,刚进的为1*/{flag[j]++;}m=-1;}else/*5、不存在空闲物理块*/{phb[max]=pro[i];flag[max]=0;for(j=0;j6、",(float)count/psize);}/*初始化内存单元、缓冲区*/voidInit(Page*b,intc[bsize][psize]){for(i=0;imax){max=b[i7、].time;tag=i;}}returntag;}/*判断页面是否已在内存中*/intEquation(intfold,Page*b){inti;for(i=0;i=0)/*如果内存中已经存在进程fold*/{b[val
3、f("");return(pro);}/*寻找未使用的物理块*/intsearchpb(){for(j=0;j4、psize;i++)printf("%d",pro[i]);printf("");for(i=0;imaxflag){maxflag=flag[j];max=j;}}if(n==-1)/*不存在相同进程*/{if(m!=-1)/*存在空闲物理块*/{phb[m]=pro[i];count++;flag[m]=0;for(j=0;j<=m;j++)/*已经进入的flag加1,刚进的为1*/{flag[j]++;}m=-1;}else/*5、不存在空闲物理块*/{phb[max]=pro[i];flag[max]=0;for(j=0;j6、",(float)count/psize);}/*初始化内存单元、缓冲区*/voidInit(Page*b,intc[bsize][psize]){for(i=0;imax){max=b[i7、].time;tag=i;}}returntag;}/*判断页面是否已在内存中*/intEquation(intfold,Page*b){inti;for(i=0;i=0)/*如果内存中已经存在进程fold*/{b[val
4、psize;i++)printf("%d",pro[i]);printf("");for(i=0;imaxflag){maxflag=flag[j];max=j;}}if(n==-1)/*不存在相同进程*/{if(m!=-1)/*存在空闲物理块*/{phb[m]=pro[i];count++;flag[m]=0;for(j=0;j<=m;j++)/*已经进入的flag加1,刚进的为1*/{flag[j]++;}m=-1;}else/*
5、不存在空闲物理块*/{phb[max]=pro[i];flag[max]=0;for(j=0;j6、",(float)count/psize);}/*初始化内存单元、缓冲区*/voidInit(Page*b,intc[bsize][psize]){for(i=0;imax){max=b[i7、].time;tag=i;}}returntag;}/*判断页面是否已在内存中*/intEquation(intfold,Page*b){inti;for(i=0;i=0)/*如果内存中已经存在进程fold*/{b[val
6、",(float)count/psize);}/*初始化内存单元、缓冲区*/voidInit(Page*b,intc[bsize][psize]){for(i=0;imax){max=b[i
7、].time;tag=i;}}returntag;}/*判断页面是否已在内存中*/intEquation(intfold,Page*b){inti;for(i=0;i=0)/*如果内存中已经存在进程fold*/{b[val
此文档下载收益归作者所有