操作系统_可变分区存储管理内容摘要:

ext=NULL。 last=0。 last=MAX_length。 last=0。 last=Free。 return OK。 } // 分 配 主 存 Status allocation(int ch) { int number,request。 printf(请输入作业 (分区号 ):)。 scanf(%d,amp。 number)。 printf(请输入需要分配的主存大小 (单位 :KB): )。 scanf(%d,amp。 request)。 if(request0 ||request==0) { printf(分配大小不合适,请重试 !\n)。 return ERROR。 } if(ch==2) //选择最佳适应算法 { if(BestFit(number,request)==OK) printf(分配成功 !\n)。 else printf(内存不足,分配失败 !)。 return OK。 } else //默认首次适应算法 { if(FirstFit(number,request)==OK) printf(分配成功 !\n)。 else printf(内存不足,分配失败 !)。 return OK。 } } // 首次适应算法 Status FirstFit(int number,int request)//传入作业名及申请量 { DuLinkList DLL=(DuLinkList)malloc(sizeof(DuLNode))。 //为申请作业开辟新空间且初始化 DLL=number。 DLL=request。 DLL=Busy。 DuLNode *p=firstnext。 while(p) { if(p==Free amp。 amp。 p==request)//有大小恰好合适的空闲块 { p=Busy。 p=number。 return OK。 break。 } if(p==Free amp。 amp。 prequest)//有空闲块能满足需求且有剩余 { DLLprior=pprior。 DLLnext=p。 DLL=p。 ppriornext=DLL。 pprior=DLL。 p=DLL+DLL。 p=request。 return OK。 break。 } p=pnext。 } return ERROR。 } // 最佳适应算法 Status BestFit(int number,int request) { int ch。 //记录最小剩余空间 DuLinkList DLL=(DuLinkList)malloc(sizeof(DuLNode))。 DLL=number。 DLL=request。 DLL=Busy。 DuLNode *p=firstnext。 DuLNode *q=NULL。 //记录最佳插入位置 while(p) //初始化最小空间和最佳位置 { if(p==Free amp。 amp。 (prequest || p==request) ) { q=p。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。