




已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語(yǔ)言課程設(shè)計(jì)_存儲(chǔ)管理分區(qū)分配算法/*pcb.c*/#include stdio.h#include stdlib.h#include string.h#define MAX 32767typedef struct node /*設(shè)置分區(qū)描述器*/ int address,size; struct node *next;RECT;/*函數(shù)原型*/RECT *assignment(RECT *head,int application);void acceptment1(RECT *head,RECT *back1);void acceptment2(RECT *head,RECT *back1) ;int backcheck(RECT *head,RECT *back1);void print(RECT *head);/*變量聲明*/RECT *head,*back,*assign1,*p;int application1,maxblocknum;char way;/*主函數(shù)*/main() char choose10; int check; head=malloc(sizeof(RECT); /*建立可利用區(qū)表的初始狀態(tài)*/ p=malloc(sizeof(RECT); head-size=MAX; head-address=0; head-next=p; maxblocknum=1; p-size=MAX; p-address=0; p-next=NULL; print(head);/*輸出可利用表初始狀態(tài)*/ printf(Enter the way(best or first(b/f)n);/*選擇適應(yīng)策略*/ scanf(%c,&way); do printf(Enter the assign or accept(as/ac)n); scanf(%s,choose); /*選擇分配或回收*/ if(strcmp(choose,as)=0) /*as為分配*/ printf(Input application:n); scanf(%d,&application1);/*輸入申請(qǐng)空間大小*/ assign1=assignment(head,application1);/*調(diào)用分配函數(shù)*/ if(assign1-address=-1)/*分配不成功*/ printf(Too large application!,assign fails!nn); else printf(Success!ADDRESS=%5dn,assign1-address); /*分配成功*/ print(head); /*輸出*/ else if(strcmp(choose,ac)=0) /*回收*/ back=malloc(sizeof(RECT); printf(Input Adress and Size!n); scanf(%d%d,&back-address,&back-size);/*輸入回收地址和大小*/ check=backcheck(head,back); /*檢查*/ if(check=1) if(tolower(way)=f)/*首先適應(yīng)算法*/ acceptment1(head,back); /*首先適應(yīng)*/ else acceptment2(head,back);/*最佳適應(yīng)*/ print(head); while(!strcmp(choose,as)|!strcmp(choose,ac);/*分配函數(shù)*/RECT *assignment(RECT *head,int application) RECT *after,*before,*assign; assign=malloc(sizeof(RECT); /*分配申請(qǐng)空間*/ assign-size=application; assign-next=NULL; if(applicationhead-size|applicationaddress=-1; /*申請(qǐng)無(wú)效*/ else before=head; after=head-next; while(after-sizenext; after=after-next; if(after-size=application) /*結(jié)點(diǎn)大小等于申請(qǐng)大小則完全分配*/ if(after-size=head-size) maxblocknum-; before-next=after-next; assign-address=after-address; free(after); else if(after-size=head-size) maxblocknum-; after-size=after-size-application; /*大于申請(qǐng)空間則截取相應(yīng)大小分配*/ assign-address=after-address+after-size; if(tolower(way)=b)/*如果是最佳適應(yīng),將截取后剩余結(jié)點(diǎn)重新回收到合適位置*/ before-next=after-next; back=after; acceptment2(head,back); if(maxblocknum=0) /*修改最大數(shù)和頭結(jié)點(diǎn)值*/ before=head; head-size=0; maxblocknum=1; while(before!=NULL) if(before-sizehead-size) head-size=before-size; maxblocknum=1; else if(before-size=head-size) maxblocknum+; before=before-next; assign1=assign; return assign1; /*返回分配給用戶的地址*/void acceptment1(RECT *head,RECT *back1)/*首先適應(yīng)*/ RECT *before,*after; int insert; before=head; after=head-next; insert=0; while(!insert) /*將回收區(qū)插入空閑區(qū)表*/ if(after=NULL)| (back1-addressaddress)& (back1-address=before-address) before-next=back1; back1-next=after; insert=1; else before=before-next; after=after-next; if(back1-address=before-address+before-size)/*與上一塊合并*/ before-size=before-size+back1-size; before-next=back1-next; free(back1); back1=before; if(after!=NULL&(after-address=back1-address+back1-size) /*與下一塊合并*/ back1-size=back1-size+after-size; back1-next=after-next; free(after); if(head-sizesize) /*修改最大塊值和最大塊個(gè)數(shù)*/ head-size=back1-size; maxblocknum=1; else if(head-size=back1-size) maxblocknum+;/*最佳適應(yīng),back1為回收結(jié)點(diǎn)的地址*/void acceptment2(RECT *head,RECT *back1) RECT *before,*after; int insert ; insert=0; before=head; after=head-next; if(head-next=NULL) /*如果可利用區(qū)表為空*/ head-size=back1-size; head-next=back1; maxblocknum+; back1-next=NULL; else while(after!=NULL) /*與上一塊合并*/ if(back1-address=after-size+after-address) before-next=after-next; back-size=after-size+back1-size; free(after); after=NULL; else after=after-next; before=before-next; before=head; after=head-next; while(after!=NULL) if(after-address=back1-size+back1-address) /*與下一塊合并*/ back1-size=back1-size+after-size; before-next=after-next; free(after); after=NULL; else before=before-next; after=after-next; before=head;/*將回收結(jié)點(diǎn)插入到合適的位置*/ after=head-next; do if(after=NULL|(after-sizeback1-size) before-next=back1; back1-next=after; insert=1; else before=before-next; after=after-next; while(!insert); if(head-sizesize) /*修改最大塊值和最大塊數(shù)*/ head-size=back1-size; maxblocknum+; else if(head-size=back1-size) maxblocknum+; void print(RECT *head) /*輸出鏈表*/ RECT *before,*after; int index,k; before=head-next; index=1; if(head-next=NULL) printf(NO part for assignment!n); else printf(*index*address*end*size*n); while(before!=NULL) printf(-n); printf( %-13d%-13d%-13d%-13dn,index,before-address,before-address+before-size-1,before-size); printf(-n); index+; before=before-next; /*檢查回收塊的合法性,back1為要回收的結(jié)點(diǎn)地址*/int backcheck(RECT *head,RECT *back1) RECT *before,*after; int check=1; if(back1-addresssizenext; while(before!=NULL)&check)/*地址不
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年光纖續(xù)接工具箱項(xiàng)目市場(chǎng)調(diào)查研究報(bào)告
- 熟食旅游紀(jì)念品行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 環(huán)保包裝與回收方案行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 物流無(wú)人機(jī)自主避障技術(shù)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 物理彈射玩具行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 智能墻面噴涂機(jī)器人行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 智能播種玩具行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 智能后視鏡流媒體顯示行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 供銷(xiāo)閥門(mén)合同范例
- 書(shū)同城配送合同范例
- (三模)豫西北教研聯(lián)盟 (平許洛濟(jì))2024-2025學(xué)年高三第三次質(zhì)量檢測(cè)生物試卷(含答案)
- 《思想道德與法治》課件-第三章 繼承優(yōu)良傳統(tǒng) 弘揚(yáng)中國(guó)精神
- NB/T 11646-2024井工煤礦采空區(qū)自然發(fā)火監(jiān)測(cè)預(yù)警技術(shù)規(guī)范
- 2025年勞動(dòng)與社會(huì)保障專業(yè)考核試卷及答案
- 《危險(xiǎn)化學(xué)品企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化規(guī)范》專業(yè)深度解讀與應(yīng)用培訓(xùn)指導(dǎo)材料之1:1范圍+3術(shù)語(yǔ)和定義(雷澤佳編制-2025A0)
- 第18課《井岡翠竹》課件-2024-2025學(xué)年統(tǒng)編版語(yǔ)文七年級(jí)下冊(cè)
- 第16課《有為有不為》公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 【MOOC】《思想道德與法治》(東南大學(xué))章節(jié)中國(guó)大學(xué)慕課答案
- MOOC 中醫(yī)與辨證-暨南大學(xué) 中國(guó)大學(xué)慕課答案
- 國(guó)家開(kāi)放大學(xué)《高等數(shù)學(xué)基礎(chǔ)》形考任務(wù)1-4參考答案
- 焊接件檢驗(yàn)合格率統(tǒng)計(jì)表
評(píng)論
0/150
提交評(píng)論