您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 动态分区存储管理系统操作系统课设
#includestdio.h#includestdlib.h#includeiostream.h#includewindows.h#defineFree0#defineUse1#defineMAX_length100//×î´óÄÚ´æ¿Õ¼äΪ100MB//--------------×÷Òµ½á¹¹ÌåÊý×é----------------------------typedefstructJOB{intnum;//×÷ÒµºÅintsize;//×÷Òµ´óСintctime;//×÷Òµ½øÈëʱ¼äintrtime;//×÷ÒµÔËÐÐʱ¼äintstate;//×÷ҵ״̬}Job;typedefstructDuLNode{intID;//·ÖÇøºÅintstart;//¿ªÊ¼µØÖ·intsize;//´óСintstate;//0=ÉÐδʹÓÃ1=ʹÓÃ2=ÊÍ·ÅstructDuLNode*prior;//Ç°ÇýÖ¸ÕëstructDuLNode*next;//ºó¼´Ö¸Õë}DuLNode,*DuLinkList;//-------------------------------------------------------------------------------intFirstfit(int);//Ê×´ÎÊÊÓ¦Ëã·¨intNext_fit(int);//Ñ»·Ê×´ÎÊÊÓ¦Ëã·¨voidshowJob(int);//ÏÔʾ×÷Òµ±ívoidshowPartiton(DuLinkList);//ÏÔʾ·ÖÇø±í//-----------------------------------------------------------------------------//---------------------------È«¾Ö±äÁ¿-------------------------------------------intf;Job*A;//ÅÅÐòÇ°Job*a;//ÅÅÐòºóJob*temp;//-----------------------------¹¦Äܺ¯Êý-------------------------------------------voiddelay(){for(intx=10000;x0;x--)for(inty=1000;y0;y--);}//--------------------------------------------------------------------------------//------------------------³õʼ»¯---------------------------------------------------DuLinkListInitpartitionList(DuLinkList&p){p=(DuLinkList)malloc(sizeof(DuLNode));//ÉêÇë¿Õ¼äif(!p)exit(0);p-size=100;//³õʼ»¯´óСprintf(ÊäÈë·ÖÇøÊ×µØÖ·:);scanf(%d,&p-start);p-state=0;//״̬ÖÿÕÏÐp-ID=0;//·ÖÇøºÅp-next=NULL;p-prior=NULL;returnp;}//------------------------------------------------------------------------------//-----------------------------ÊäÈ뺯Êý---------------------------------------------intPutin(int&n){inti;Jobtemp;printf(ÇëÊäÈëÈÎÎñÊýÄ¿:);scanf(%d,&n);a=(Job*)malloc(n*sizeof(Job));A=(Job*)malloc(n*sizeof(Job));for(i=0;in;i++){printf(\n);printf(ÐÅÏ¢ÊäÈë:\n\n);printf(×÷ÒµºÅ:);scanf(%d,&a[i].num);printf(×÷Òµ´óС:);scanf(%d,&a[i].size);printf(×÷Òµ½øÈëʱ¼ä:);scanf(%d,&a[i].ctime);printf(×÷ÒµÔËÐÐʱ¼ä:);scanf(%d,&a[i].rtime);a[i].state=0;//ĬÈÏ״̬ΪFreeA[i]=a[i];}for(intj=0;jn;j++)for(i=j;in;i++)if(a[j].ctimea[i].ctime){temp=a[j];a[j]=a[i];a[i]=temp;}//ðÅÝÅÅÐòfreopen(data.txt,w,stdout);for(i=0;in;i++){printf(%d%d%d%d\n,a[i].num,a[i].size,a[i].ctime,a[i].rtime);}fclose(stdout);freopen(CON,w,stdout);printf(±£´æ³É¹¦\n\n);return1;}//----------------------------------------------------------------------------------------//-----------------------------¶ÁÎļþ-----------------------------------------------------intorder(int&n){Jobtemp;printf(Inputthenumberofthetask:\n);scanf(%d,&n);a=(Job*)malloc(n*sizeof(Job));freopen(data.txt,r,stdin);for(inti=0;in;i++){scanf(%d,&a[i].num);scanf(%d,&a[i].size);scanf(%d,&a[i].ctime);scanf(%d,&a[i].rtime);}fclose(stdin);freopen(CON,r,stdin);for(intj=0;jn;j++)for(i=j;in;i++)if(a[j].ctimea[i].ctime){temp=a[j];a[j]=a[i];a[i]=temp;}return1;}//------------------------------------------------------------------------//-------------------------ÏÔʾ·ÖÇø-------------------------------voidshowPartition(DuLinkListpl){printf(\n\t\t\t·ÖÇø±í\n);printf(\t---------------------------------------\n);printf(\t¿ªÊ¼µØÖ·\t·ÖÇøºÅ\t´óС״̬\n);printf(\t---------------------------------------\n);while(pl){printf(\t%d\t\t%d\t%d\t,pl-start,pl-ID,pl-size);if(pl-state==0)printf(¿ÕÏÐ\n);if(pl-state==1)printf(ÒÑ·ÖÅä\n);pl=pl-next;}printf(\t---------------------------------------\n);}//-------------------------------------------------------------------------//---------------------------------»ØÊÕº¯Êý---------------------------------voidhuishou(DuLinkListpl3,DuLinkList&pl){while(pl3){if(pl3-state==0){if(pl3-next&&pl3-prior&&pl3-prior-state==0&&pl3-next-state==1){pl3-size+=pl3-prior-size;pl3-start=pl3-prior-start;pl3-state=0;pl3-ID=0;if(pl3-prior-prior){pl3-prior-prior-next=pl3;pl3-prior=pl3-prior-prior;}else{pl3-prior=pl3-prior-prior;pl=pl3;pl3=pl;}}elseif(pl3-prior&&pl3-next&&pl3-next-state==0&&pl3-prior-state==1){pl3-size+=pl3-next-size;pl3-state=0;pl3-ID=0;if(pl3-next-next){pl3-next-next-prior=pl3;pl3-next=pl3-next-next;}else{pl3-next=pl3-next-next;}}elseif(!pl3-prior){if(pl3-next-state==0){pl3-size+=pl3-next-size;pl3-state=0;pl3-ID=0;if(pl3-next-next)pl3-next-next-prior=pl3;pl3-next=pl3-next-next;}else{pl3-state=0;}}elseif(!pl3-next){if(pl3-prior-state==0){pl3-size+=pl3-prior-size;pl3-state=0;pl3-ID=0;pl3-start=pl-start;if(pl3-prior-prior){pl3-prior-prior-next=pl3;pl3-prior=pl3-prior-prior;}else{pl3-prior=NULL;pl=pl3;pl3=pl;}}else{pl3-state=0;}}elseif(pl3-next&&pl3-prior&&pl3-next-state==0&&pl3-prior-state==0){pl3-size=pl3-size+pl3-next-size+pl3-prior-size;pl3-state=0;pl3-ID=0;pl3-start=pl3-prior-start;if(pl3-next-next)pl3-next-next-prior=pl3;if(pl3-prior-prior){pl3-prior-prior-next=pl3;pl3-next=pl3-next-next;pl3-prior=pl3-prior-prior;}else{pl3-next=pl3-next-next;pl3-prior=pl3-prior-prior;pl=pl3;pl3=pl;}}}pl3=pl3-next;}}//---------------------------------------
本文标题:动态分区存储管理系统操作系统课设
链接地址:https://www.777doc.com/doc-4060064 .html