全文预览

内存管理模型的设计与实现

上传者:似水流年 |  格式:doc  |  页数:15 |  大小:288KB

文档介绍
,只有一个大的内存块Р?{Р p=new memory; //空闲块251k,起始地址是5kР p->begin=5;Р p->pro=0;Р p->size=251;Р p->next=NULL;Р base->next=p;Р?}Р}Рvoid assign(memory *q,char pro,int size)?//动态,给进程pro在内存块q->next上分配size大小,q不为空且q->next不为空Р{ //因为要进行插入操作,所以传的是要分配内存块的前指针Р?memory *p=q->next;Р?memory *temp=new memory;Р?temp=new memory; //代表进程pro的内存块Р?temp->begin=p->begin;Р?temp->size=size;Р?temp->pro=pro;Р?q->next=temp;Р?if(p->size!=size) //插入的内存块小于空闲区块Р?{Р p->size=p->size-size;Р p->begin=temp->begin+temp->size;Р temp->next=p;Р?}Р?else //插入的内存块等于空闲区块Р?{Р temp->next=p->next;Р delete p;Р?}Р}Рint ff(int manage,char pro,int size) //最先适应法Р{Р?memory *p=base;Р?memory *q=p;Р?while(p) //遍历内存找到第一个适合进程pro的内存块,保存它的前指针Р?{Р if(p->size<size||p->pro!=0)Р {Р q=p;Р p=p->next;Р }Р else break;Р?}Р?if(p==NULL)return 0; //没找到,返回0Р?else //找到了,返回1

收藏

分享

举报
下载此文档