




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C語言課程設計-存儲管理分區(qū)分配算法-課程設計C語言課程設計-存儲管理分區(qū)分配算法|c語言程序代碼編程小程序設計|c語言課程設計報告課程案例/*pcb.c*/#includestdio.h#includestdlib.h#includestring.h#defineMAX32767typedefstructnode/*設置分區(qū)描述器*/intaddress,size;structnode*next;RECT;/*函數(shù)原型*/RECT*assignment(RECT*head,intapplication);voidacceptment1(RECT*head,RECT*back1);voidac
2、ceptment2(RECT*head,RECT*back1);intbackcheck(RECT*head,RECT*back1);voidprint(RECT*head);/*變量聲明*/RECT*head,*back,*assign1,*p;intapplication1,maxblocknum;charway;/*主函數(shù)*/main()charchoose10;intcheck;head=malloc(sizeof(RECT);/*建立可利用區(qū)表的初始狀態(tài)*/p=malloc(sizeof(RECT);head-size=MAX;head-address=0;head-next=p;m
3、axblocknum=1;p-size=MAX;p-address=0;p-next=NULL;print(head);/*輸出可利用表初始狀態(tài)*/printf(Entertheway(bestorfirst(b/f)n);/*選擇適應策略*/scanf(%c,&way);doprintf(Entertheassignoraccept(as/ac)n);scanf(%s,choose);/*選擇分配或回收*/if(strcmp(choose,as)=0)/*as為分酉己*/printf(Inputapplication:n);scanf(%d,&application1);/*輸入申請空間大小
4、*/assign1=assignment(head,application1);/*l用分酉己函數(shù)*/if(assign1-address=-1)/吩酉己不成功*/printf(Toolargeapplication!,assignfails!nn);elseprintf(Success!ADDRESS=%5dn,assign1-address);/*分配成功*/print(head);/*輸出*/elseif(strcmp(choose,ac)=0)/*回收*/back=malloc(sizeof(RECT);printf(InputAdressandSize!n);scanf(%d%d,&
5、back-address,&back-size);/*輸入回收地址和大小*/check=backcheck(head,back);/檢查*/if(check=1)if(tolower(way)=f)/*首先適應算法*/acceptment1(head,back);/首先適*應*/elseacceptment2(head,back);服佳適應*/print(head);while(!strcmp(choose,as)|!strcmp(choose,ac);/*分配函數(shù)*/RECT*assignment(RECT*head,intapplication)RECT*after,*before,*as
6、sign;assign=malloc(sizeof(RECT);/*分配申請空間*/assign-size=application;assign-next=NULL;if(applicationhead-size|applicationaddress=-1;/申*請無效*/elsebefore=head;after=head-next;while(after-sizenext;after=after-next;if(after-size=application)/*結點大小等于申請大小則完全分配*/if(after-size=head-size)maxblocknum-;before-next
7、=after-next;assign-address=after-address;free(after);elseif(after-size=head-size)maxblocknum-;after-size=after-size-application;/*大于申請空間則截取相應大小分配*/assign-address=after-address+after-size;if(tolower(way)=b)/*如果是最佳適應,將截取后剩余結點重新回收到合適位置*/before-next=after-next;back=after;acceptment2(head,back);if(maxblo
8、cknum=0)/*修改最大數(shù)和頭結點值*/before=head;head-size=0;maxblocknum=1;while(before!=NULL)if(before-sizehead-size)head-size=before-size;maxblocknum=1;elseif(before-size=head-size)maxblocknum+;before=before-next;assign1=assign;returnassign1;/*返回分配給用戶的地址*/voidacceptment1(RECT*head,RECT*back1)/*首先適應*/RECT*before,
9、*after;intinsert;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;elsebefore=before-next;after=after-next;if(back1-address=before-address+before-size)由上一塊合并*/before-size=be
10、fore-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)/*修改最大塊值和最大塊個數(shù)*/head-size=back1-size;maxblocknum=1;elseif(head-size=back1-size)max
11、blocknum+;/*最佳適應,back1為回收結點的地址*/voidacceptment2(RECT*head,RECT*back1)RECT*before,*after;intinsert;insert=0;before=head;after=head-next;if(head-next=NULL)/*如果可利用區(qū)表為空*/head-size=back1-size;head-next=back1;maxblocknum+;back1-next=NULL;elsewhile(after!=NULL)/*與上一塊合并*/if(back1-address=after-size+after-ad
12、dress)before-next=after-next;back-size=after-size+back1-size;free(after);after=NULL;elseafter=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
13、;elsebefore=before-next;after=after-next;before=head;/*|等回收結點插入到合適的位置*/after=head-next;doif(after=NULL|(after-sizeback1-size)before-next=back1;back1-next=after;insert=1;elsebefore=before-next;after=after-next;while(!insert);if(head-sizesize)/*修改最大塊值和最大塊數(shù)*/head-size=back1-size;maxblocknum+;elseif(hea
14、d-size=back1-size)maxblocknum+;voidprint(RECT*head)/*輸出鏈表*/RECT*before,*after;intindex,k;before=head-next;index=1;if(head-next=NULL)printf(NOpartforassignment!n);elseprintf(I*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為要回收的結點地址*/intbackcheck(RECT*head,RECT*back1)RECT*before,*after;intcheck=1;if(back1-addresssizenext;while(before!=NULL)&check)/*地址不
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖南軟件職業(yè)技術大學單招職業(yè)適應性測試題庫及答案1套
- 第六單元名著導讀《簡·愛》教學設計 2023-2024學年統(tǒng)編版語文九年級下冊
- 6 兩、三位數(shù)的加法和減法第二課時(教學設計)-2023-2024學年二年級下冊數(shù)學蘇教版
- 第三單元 豐富多樣的自然資源 大單元教學設計-2024-2025學年七年級地理上學期中華中圖版
- 第二單元第八課《玩轉工具箱》教學設計 2023-2024學年浙教版(2013)初中信息技術七年級下冊
- 2025至2030年中國水果桶數(shù)據(jù)監(jiān)測研究報告
- 江西省上饒市藍天教育集團2024-2025學年高一上學期第二次月考地理試題(解析版)
- Unit6 Hitting the road教學設計2024-2025學年外研版英語七年級下冊
- 2025河北建筑安全員B證考試題庫及答案
- 2025至2030年中國指壓點穴按摩器數(shù)據(jù)監(jiān)測研究報告
- 電信寬帶注銷委托書
- 新教材人教版高中數(shù)學必修第二冊全冊教案
- 班(組)戰(zhàn)斗動作訓練教案
- 農產品電商運營-完整全套課件
- 唐河縣泌陽凹陷郭橋天然堿礦產資源開采與生態(tài)修復方案
- 科研項目匯報ppt
- 建設工程項目法律風險防控培訓稿PPT講座
- “不作為、慢作為、亂作為”自查自糾報告范文(三篇)
- 上海市楊浦區(qū)2022屆初三中考二模英語試卷+答案
- 課件《中國式現(xiàn)代化》
- 公共事業(yè)管理案例
評論
0/150
提交評論