模拟段式存储管理的分配与回收内容摘要:

配空间 break。 case 2: 武汉理工大学《操作系统》课程设计说明书 9 huishou()。 break。 case 3: Display()。 break。 case 4: break。 default: cout输入错误 ,请重新选择操作 !endl。 break。 } }while(select!=4)。 return 0。 } kongxian *creatK() { kongxian *p=new kongxian。 plength=neicun。 paddr=0。 pflag=0。 pnext=NULL。 return p。 } Duanbiao* qingqiuD(Duanbiao* head) { Duanbiao *p1,*p2。 p1=p2=new Duanbiao。 武汉理工大学《操作系统》课程设计说明书 10 cout请输入请求资源的进程号 :。 cinjinchengming。 cout请输入段号及长度 \n。 cout段号 setw(6)长度 endl。 cinp1duannump1length。 p1next=NULL。 if(head!=NULL) { p2=head。 while(p2next!=NULL)p2=p2next。 //p2 指向已分配表的最后一个结点 } while(p1duannum!=1) { p1jincheng=jinchengming。 p1flag=0。 if(head==NULL)head=p1。 else p2next=p1。 p2=p1。 p1=new Duanbiao。 p1next=NULL。 cinp1duannump1length。 } delete p1。 return head。 } kongxian *zuixian(Duanbiao* head) { kongxian *pK。 //空闲链表头指针 武汉理工大学《操作系统》课程设计说明书 11 Duanbiao *p1,*p2。 //已分配链表结点 Duanbiao *pD=head。 //请求段表头指针 Duanbiao *pf=Dfenpei。 p1=p2=new Duanbiao。 p1next=NULL。 if(Dfenpei!=NULL) { p2=Dfenpei。 while(p2next!=NULL)p2=p2next。 //p2 指向已分配表的最后一个结点 } for(pD。 pD!=NULL。 pD=pDnext) { pK=Khead。 for(pK。 pK!=NULL。 pK=pKnext)//从空闲区表顺序查找 { if(pKlength=pDlength) { p1flag=1。 //表示在内存中 p1jincheng=pDjincheng。 p1duannum=pDduannum。 p1addr=pKaddr。 p1length=pDlength。 if(Dfenpei==NULL)Dfenpei=p1。 else p2next=p1。 p2=p1。 p1=new Duanbiao。 p1next=NULL。 if(pKlength==pDlength) { 武汉理工大学《操作系统》课程设计说明书 12 pK=pKnext。 break。 } else { pKaddr=(p2addr)+(p2length)。 pKlength=pKlengthpDlength。 break。 } continue。 } } } Dhead=NULL。 delete p1。 return Khead。 } int huishou() { ch=39。 39。 lable2: space(5)。 cout \n。 space(5)。 cout 个段 \n。 cinch。 if(ch==39。 139。 ) { 武汉理工大学《操作系统》课程设计说明书 13 jinchenghuishou()。 } else if(ch==39。 239。 ) { duanhuishou()。 } else { cout输。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。