資源描述:
《動(dòng)態(tài)分區(qū)分配 最佳 最壞 適應(yīng)算法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、我偉大的母校課程設(shè)計(jì)報(bào)告書實(shí)踐課題:動(dòng)態(tài)分區(qū)分配姓名:路人甲學(xué)號(hào):20XXXXXX指導(dǎo)老師:路人乙學(xué)院:計(jì)算及科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)實(shí)踐時(shí)間2013.3.11~2013.3.22一.課程設(shè)計(jì)的目的:二.設(shè)計(jì)內(nèi)容:三.設(shè)計(jì)要求:四.程序流程圖AllocBest_fitWorst_fitFreeShowMain五.源代碼#include#include#include#defineFree0//空閑狀態(tài)#defineBusy1//已用狀態(tài)#defineOK1//
2、完成#defineERROR0//出錯(cuò)#defineMAX_length100//最大內(nèi)存空間為100MtypedefintStatus;intflag;//標(biāo)志typedefstructfreearea//定義一個(gè)空閑區(qū)說(shuō)明表結(jié)構(gòu){longsize;//分區(qū)大小longaddress;//分區(qū)地址intstate;//狀態(tài)}ElemType;//元素類型//線性表的雙向鏈表存儲(chǔ)結(jié)構(gòu)typedefstructDuLNode//結(jié)構(gòu)指針{ElemTypedata;structDuLNode*prior;//前趨指針str
3、uctDuLNode*next;//后繼指針}DuLNode,*DuLinkList;//指針鏈表DuLinkListblock_first;//頭結(jié)點(diǎn)DuLinkListblock_last;//尾結(jié)點(diǎn)Statusalloc(int);//內(nèi)存分配Statusfree(int);//內(nèi)存回收StatusBest_fit(int);//最佳適應(yīng)算法StatusWorst_fit(int);//最差適應(yīng)算法voidshow();//查看分配StatusInitblock();//開創(chuàng)空間表StatusInitblock(
4、)//開創(chuàng)帶頭結(jié)點(diǎn)的內(nèi)存空間鏈表{block_first=(DuLinkList)malloc(sizeof(DuLNode));block_last=(DuLinkList)malloc(sizeof(DuLNode));block_first->prior=NULL;block_first->next=block_last;block_last->prior=block_first;block_last->next=NULL;block_last->data.address=0;block_last->data.s
5、ize=MAX_length;block_last->data.state=Free;returnOK;}//分配主存Statusalloc(intch){intrequest=0;cout<<"請(qǐng)輸入需要分配的主存大小(單位:M):";cin>>request;if(request<0
6、
7、request==0){cout<<"分配大小不合適,請(qǐng)重試!"<8、;elsecout<<"內(nèi)存不足,分配失??!"<
9、data.size=request;temp->data.state=Busy;DuLNode*p=block_first->next;DuLNode*q=NULL;//記錄最佳插入位置while(p)//初始化最小空間和最佳位置{if(p->data.state==Free&&(p->data.size>=request)){if(q==NULL){q=p;ch=p->data.size-request;}elseif(q->data.size>p->data.size){q=p;ch=p->data.size-re
10、quest;}}p=p->next;}if(q==NULL)returnERROR;//沒有找到空閑塊elseif(q->data.size==request){q->data.state=Busy;returnOK;}else{temp->prior=q->prior;temp->next=q;temp->data.addres