1、DuLNode, *DuLinkList;DuLinkList block_first; /头结点 DuLinkList block_last; /尾结点Status alloc(int) ;/内存分配 Status free(int) ; /内存回收Status First_fit (int) ;/首次适应算法Status Best_f it (int) ; /最佳适应算法 Status Worst_f it (int) ; /最差适 应算法void show() ;/查看分配Status InitblockO ;/开创空间表Status Initblock()/开创带头结点的内存空间链表b
2、lock_first=(DuLinkList)malloc(sizeof (DuLNode); block_last=(DuLinkList)malloc(sizeof(DuLNode); block_firstprior=NULL;block first-next二block last;block_last-prior=block_first; block_last-next=NULL;data address=0;data size二MAX_length;block_lastdata state=Free;return OK;分配主存Status alloc(int ch)int requ
3、est = 0;cout,z请输入需要分配的主存大小(单位:KB): ; cinrequest;if (requestnext:while (p)if(p-datastate二二Free & p-datasize二二request)/有大小恰好合适的空闲块p-data. state二Busy;break;datasizerequest)有空闲块能满足需求且有剩余temp-pr i or=p-pr i or;next=p;data address=p-data address;pr i or-next=t emp;prior=temp;data. address=temp-data addres
4、s+temp-data size;data. size-二request;p=p-next;return ERROR:/最佳适应算法Status Best_fit(int request)int ch; 记录最小剩余空间data size二request;data state=Busy;DuLNode *q=NULL; 记录最佳插入位置 while(p) /初始化最小空间和最佳位置 (p-datasize二request)辻(q二二NULL)q二P;ch=p-data size-request;else if(q-data.size data.size)/最差适应算法Status Worst_
5、fit(int request) /记录最大剩余空间temp-data state=Busy;LNode *p=block_first- Du /记录最佳插入位置while(p) /初始化最大空间和最佳位置data.size data size=request)q-data state二Busy;elset emp-pr i or=q-next=q;data address=q-next=temp;data address+二request;data size=ch;主存回收Status free (int flag)DuLNode *p=block_first;for(int i= 0; i
6、 data. stateFree) /与前面的空闲块相连data size+=p-next=p-nextprior;next!=block_last &next-datastate=Free)/与后面的空闲块相连data. size+=p-prior=p;辻(p-next=block_last &data. state二二Free)/与最后的空闲块 相连next二NULL;显示主存分配情况void show()int flag = 0;,zn主存分配情况:n;cout+nrT;,z分区号t起始地址t分区大小t状态nnwhile(p),/ data. address,tt,/;data. siz
7、eKBttif (p-data state=Free) cout空闲nn,z已分配nn+nn/主函数void main()/算法选择标记请输入所使用的内存分配算法:rT;coutC(l)首次适应算法n (2)最佳适应算法n (3)最差适应算法n;cinch;while(ch3),z输入错误,请重新输入所使用的内存分配算法:n ;InitblockO : /开创空间表int choice; /操作选择标记while (1)show ();请输入您的操作:;,nl:分配内存n2:回收内存n0:退出nchoice;if (choice=l) alloc (ch) ; / 分配内存else if(choice=2) / 内存回收zz请输入您
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1