动态式存储管理的模拟实现C语言_第1页
动态式存储管理的模拟实现C语言_第2页
动态式存储管理的模拟实现C语言_第3页
动态式存储管理的模拟实现C语言_第4页
动态式存储管理的模拟实现C语言_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、在内存划出一块区域,并进行页面划分;设计请求页表;模拟页面分配;分别模拟先进先出页面淘汰算法FIFO”、最近最少使用页面淘汰算法LRU和理想型淘汰算法OPTTFIFO,LRU,OPE种算法。将结果保存本程序随机产生请求序列,分别模拟在FIFO.txt,LRU.txt,OPT.tx巳个文件中。程序代码:#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN20#defineP3structDuLNodeintdata;structDuLNode*prior;structDuLNode*next;i

2、ntpageFIFON+1;intfront=0,rear=0;intpageingN+1,pmemP+1;intmemcount=1;voidinit(inta,intT)inti;for(i=0;i<=T;i+)ai=-2;intinsert_item(intitem,intque,intT)if(rear+1)%(T+1)=front)return1;querear=item;rear=(rear+1)%(T+1);return0;intremove_item(int*item,intque,intT)if(front=rear)return1;*item=quefront;fro

3、nt=(front+1)%(T+1);return0;intfindif(inta,intb,intT)inti;for(i=1;i<=T;i+)if(ai=b)returni;return-1;voidinsertintomem(inta,intb,intn)if(memcount<=P)amemcount=b;memcount+;elsean=b;voidinitpage(intpage)inttemp,i;srand(unsigned)time(0);for(i=1;i<=N;i+)temp=rand()%10;pagei=temp;voidaddtoLink(stru

4、ctDuLNode*p,inte)structDuLNode*add;add=malloc(sizeof(structDuLNode);add->data=e;add->prior=p->prior;p->prior->next=add;add->next=p;p->prior=add;intgetI(structDuLNode*p,inte)inti;structDuLNode*cd=p;for(i=1;i+)cd=cd->next;if(cd->data=e)returni;if(cd=p)return-1;voiddeleLink(s

5、tructDuLNode*p,inti,int*e)intn;structDuLNode*cd=p;for(n=1;n<=i;n+)cd=cd->next;*e=cd->data;cd->prior->next=cd->next;cd->next->prior=cd->prior;free(cd);voidremovebottom(structDuLNode*p,int*e)structDuLNode*cd=p->next;*e=cd->data;cd->next->prior=p;p->next=cd->

6、;next;free(cd);intgetcount(inta,intb,intn,intT)inti;for(i=n;i<=T;i+)if(ai=b)return(i-n);return-1;voidgetreplacepage(inta,intb,inti,int*e)intt,cP+1,temp,T,count=0,errorP+1;for(t=1;t<=P;t+)if(getcount(a,bt,i,N)!=-1)ct=getcount(a,bt,i,N);elseerror+count=bt;if(count=0)temp=c1;T=b1;for(t=1;t<=P;

7、t+)if(ct>temp)temp=ct;T=bt;*e=T;elsefor(t=1;t<=count;t+)ct=findif(a,errort,N);temp=c1;T=error1;for(t=1;t<=count;t+)if(ct<temp)temp=ct;T=errort;*e=T;voidmain()inti,temp,temp1,error=0,ErrorCP;FILE*fp1,*fp2,*fp3;structDuLNode*p;p=(structDuLNode*)malloc(sizeof(structDuLNode);p->prior=p-&g

8、t;next=p;initpage(pageing);init(pmem,P);if(fp1=fopen("FIFO.txt","a")=NULL)printf("不能打开文件!n");exit(1);for(i=1;i<=N;i+)fprintf(fp1,"%d",pageingi);fprintf(fp1,"n");for(i=1;i<=N;i+)if(memcount>P&&findif(pmem,pageingi,P)=-1)remove_item(&a

9、mp;temp,pageFIFO,N);insertintomem(pmem,pageingi,findif(pmem,temp,P);insert_item(pageingi,pageFIFO,N);fprintf(fp1,"%d被引用,d被替换->出现第d次错误!n",pageingi,temp,+error);elseif(memcount<=P&&findif(pmem,pageingi,P)=-1)insertintomem(pmem,pageingi,memcount);insert_item(pageingi,pageFIFO,N)

10、;fprintf(fp1,"页中未满。%d被引用,出现第d次错误!n",pageingi,+error);elsefprintf(fp1,"%d已在页中->未出现错误。n",pageingi);fclose(fp1);ErrorC0=error;memcount=1;error=0;init(pmem,P);if(fp2=fopen("LRU.txt","a")=NULL)printf("不能打开文件!n");exit(1);for(i=1;i<=N;i+)fprintf(fp2,&

11、quot;%d",pageingi);fprintf(fp2,"n");for(i=1;i<=N;i+)if(memcount>P&&findif(pmem,pageingi,P)=-1)removebottom(p,&temp);insertintomem(pmem,pageingi,findif(pmem,temp,P);if(getI(p,pageingi)!=-1)deleLink(p,getI(p,pageingi),&temp1);addtoLink(p,pageingi);fprintf(fp2,"

12、;%d被引用,d被替换->出现第d次错误!n",pageingi,temp,+error);elseif(memcount<=P&&findif(pmem,pageingi,P)=-1)insertintomem(pmem,pageingi,memcount);addtoLink(p,pageingi);fprintf(fp2,"页中未满。%d被引用->出现第d次错误!n",p->prior->data,+error);elsedeleLink(p,getI(p,pageingi),&temp1);addtoL

13、ink(p,pageingi);fprintf(fp2,"%d已在页中->未出现错误。n",pageingi);fclose(fp2);ErrorC1=error;memcount=1;error=0;init(pmem,P);if(fp3=fopen("OPT.txt","a")=NULL)printf("不能打开文件!n");exit(1);for(i=1;i<=N;i+)fprintf(fp3,"%d",pageingi);fprintf(fp3,"n");

14、for(i=1;i<=N;i+)if(memcount>P&&findif(pmem,pageingi,P)=-1)getreplacepage(pageing,pmem,i,&temp);insertintomem(pmem,pageingi,findif(pmem,temp,P);fprintf(fp3,"%d被引用,d被替换-出现第d次错误!n",pageingi,temp,+error);elseif(memcount=P&&findif(pmem,pageingi,P)=-1)insertintomem(pmem,pageingi,memcount);fprintf(fp3,"页中未满。%d被引用-出现第d次错误!n",pageingi,+error);elsefprintf(fp3,"%d已在页中-未出现错误。n&qu

温馨提示

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

评论

0/150

提交评论