资源描述:
《操作系统主存分配》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、固定算法#inelude#include#include#defineNULL0typedefstructtable{intaddress;/*存储分区起始地址*/intlength;/*存储分区长度*/intflag;/*存储分区标志,0为空闲,1为被作业占据*/charname[10];/*存储分区占用标志作业名*/structtable*next;}node;node*creat()/*定义函数,建立主存分配表*/{node*head;node*pl,*p2;
2、intn=0;printf(HInputthetableAnaddresslengthflag(0..1)u);p1=p2=(node*)malloc(sizeof(node));scanf("%d%d%d",&p1->address,&p1->length,&p1->flag);if(pl->flag==l){printf("tinputjob_nameM);scanf("%s",pl->name);}elsestrcpy(p1->name/,nullH);head=NULL;while(pl->length!=O
3、)(n=n+l;讦(n==l)head=pl;elsep2->next=pl;p2二pl;pl=(node*)malloc(sizeof(node));scanf(n%d%d%dn,&pI->address,&p1->length,&p1->flag);if(pl->flag==l){printf(utinputjob_name:M);scanf(,l%s,pl->name);}elsestrcpy(p1^name/nuir1);}p2->next=NULL;return(head);}voidprint(node*h
4、ead)/*输出链表*/{node*p;p=head;if(head!=NULL)do{printf(n%d,%d.%d,%s,p->address,p->length,p->flag,p->name);p=p->next;}while(p!=NULL);main(){inti,a,success=O;node*q,*p;charworkn[10],work[10];printf(MThenewworknameis:H);scanf("%s*',workn);printf(nIfslengthis:”);scanf(
5、“%d”,&a);/*输入新工作的长度,工作名*/q=p=creat();while(q)/*完成分配过程*/{if(q->length>=a&&q->flag==0){strcpy(q・>name,workn);q・>flag=1;success=1;break;}elseq=q->next;}if(!success)printf("Pleasewait!H);elseprintf(nsuccessful!M);print(p);q二P;printf(HThereleasedworknameis:H);scanf
6、(H%s,t,work);success=0;while(p)/*完成回收过程*/{讦(strcmp(p->name,work)==0){strcpy(p->name/nulln);p->flag=O;success=1;break;}elsep=p->next;}if(!success)printf("notfound!");elseprintf(Msuccessful!M);print(q);getch();#include#include#include7、>#defineNULL0typedefstructtable{intaddress;intlength;intflag;/*存储分区起始地址*//*存储分区长度*/八存储分区标志,0为空闲,1为被作业占据勺charname[10];/*存储分区占用标志作业名*/structtableext;Jnode;intsuccess二0;/*分配成功与否的标志*/node*work;node*creat()/*定义函数,建立主存分配表*/{node*head;node*pl,*p2;intn=0;printf("addressle
8、ngthflag(0..1)");p1=p2=(node*)malloc(sizeof(node));scanf(H%d%d%d",&p1->address,&pl->length,&p1->flag);if(pl->flag==1&&p1->length>0){printf(Mtinputjob