动态页式存储管理的模拟实现c语言

动态页式存储管理的模拟实现c语言

ID:33718666

大小:46.50 KB

页数:7页

时间:2019-02-28

动态页式存储管理的模拟实现c语言_第1页
动态页式存储管理的模拟实现c语言_第2页
动态页式存储管理的模拟实现c语言_第3页
动态页式存储管理的模拟实现c语言_第4页
动态页式存储管理的模拟实现c语言_第5页
资源描述:

《动态页式存储管理的模拟实现c语言》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、在内存划出一块区域,并进行页面划分;设计请求页表;模拟页面分配;分别模拟“先进先出页面淘汰算法FIFO”、“最近最少使用页面淘汰算法LRU”和“理想型淘汰算法OPT”本程序随机产生请求序列,分别模拟FIFO,LRU,OPT三种算法。将结果保存在FIFO.txt,LRU.txt,OPT.txt三个文件中。程序代码:#include#include#include#defineN20#defineP3structDuLNode{intdata;structDuL

2、Node*prior;structDuLNode*next;};intpageFIFO[N+1];intfront=0,rear=0;intpageing[N+1],pmem[P+1];intmemcount=1;voidinit(inta[],intT){inti;for(i=0;i<=T;i++)a[i]=-2;}intinsert_item(intitem,intqueue[],intT){if((rear+1)%(T+1)==front)return1;queue[rear]=item;rear=(re

3、ar+1)%(T+1);return0;}intremove_item(int*item,intqueue[],intT){if(front==rear)return1;*item=queue[front];front=(front+1)%(T+1);return0;}intfindif(inta[],intb,intT){inti;for(i=1;i<=T;i++){if(a[i]==b)returni;}return-1;}voidinsertintomem(inta[],intb,intn){if(mem

4、count<=P){a[memcount]=b;memcount++;}elsea[n]=b;}voidinitpage(intpage[]){inttemp,i;srand((unsigned)time(0));for(i=1;i<=N;i++){temp=rand()%10;page[i]=temp;}}voidaddtoLink(structDuLNode*p,inte){structDuLNode*add;add=malloc(sizeof(structDuLNode));add->data=e;add

5、->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(structDuLNode*p,inti,int*e){intn;structDuLNode*cd=p;for(n=1;

6、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->next;free(cd);}intgetcount(inta[],intb,intn,intT){inti;fo

7、r(i=n;i<=T;i++){if(a[i]==b)return(i-n);}return-1;}voidgetreplacepage(inta[],intb[],inti,int*e){intt,c[P+1],temp,T,count=0,error[P+1];for(t=1;t<=P;t++){if(getcount(a,b[t],i,N)!=-1)c[t]=getcount(a,b[t],i,N);else{error[++count]=b[t];}}if(count==0){temp=c[1];T=b

8、[1];for(t=1;t<=P;t++){if(c[t]>temp){temp=c[t];T=b[t];}}*e=T;}else{for(t=1;t<=count;t++){c[t]=findif(a,error[t],N);}temp=c[1];T=error[1];for(t=1;t<=count;t++){if(c[t]

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。