




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄TOC\o"1-5"\h\z目錄 2概述 3課程設(shè)計(jì)任務(wù)及要求 32.1設(shè)計(jì)任務(wù) 32.2設(shè)計(jì)要求 3\o"CurrentDocument"2.3課程設(shè)計(jì)任務(wù)安排 3算法及數(shù)據(jù)結(jié)構(gòu) 3\o"CurrentDocument"3.1算法的總體思想(流程) 3\o"CurrentDocument"3.2首次適應(yīng)算法 3321功能 4322數(shù)據(jù)結(jié)構(gòu)(包I括變量的定義,要注釋?。?4算法(流程圖表示,或偽C表示) 4\o"CurrentDocument"3.3循環(huán)首次適應(yīng)算法 5\o"CurrentDocument"功能 5\o"CurrentDocument"3.3.2數(shù)據(jù)結(jié)構(gòu) 5\o"CurrentDocument"算法 6\o"CurrentDocument"3.4最佳適應(yīng)算法 6341功能 7\o"CurrentDocument"3.4.2數(shù)據(jù)結(jié)構(gòu) 7\o"CurrentDocument"算法 7\o"CurrentDocument"3.5最壞適應(yīng)算法 8\o"CurrentDocument"功能 8\o"CurrentDocument"3.5.2數(shù)據(jù)結(jié)構(gòu) 8\o"CurrentDocument"算法 9程序設(shè)計(jì)與實(shí)現(xiàn) 10\o"CurrentDocument"4.1程序流程圖 10\o"CurrentDocument"4.2程序代碼(要注釋) 104.3實(shí)驗(yàn)結(jié)果 17結(jié)論 18收獲、體會(huì)和建議。 18\o"CurrentDocument"詹煥齊總結(jié): 18\o"CurrentDocument"劉偉業(yè)總結(jié): 18參考文獻(xiàn)。 19動(dòng)態(tài)分區(qū)分配是根據(jù)進(jìn)程的實(shí)際需要,動(dòng)態(tài)地為之分配內(nèi)存空間,而在分配時(shí),須按照一定的分配算法,從空閑分區(qū)表或空閑分區(qū)鏈中選出一分區(qū)分配給該作業(yè)。在本實(shí)驗(yàn)中運(yùn)用了五種分配算法,分別是:首次適應(yīng)算法循環(huán)首次適應(yīng)算法最壞適應(yīng)算法最佳適應(yīng)算法快速適應(yīng)算法2.課程設(shè)計(jì)任務(wù)及要求2.1設(shè)計(jì)任務(wù)要求設(shè)計(jì)主界面以靈活選擇其中算法,5種算法都要求實(shí)現(xiàn)。2.2設(shè)計(jì)要求1)首先由系統(tǒng)生成當(dāng)前的內(nèi)存狀態(tài),要求未分配的分區(qū)數(shù)量不少于3個(gè),且空間大小隨機(jī),然后隨機(jī)生成一個(gè)數(shù),表示等待分配進(jìn)程的大小。2)然后顯示上述算法由用戶選擇,結(jié)果顯示分配后的狀態(tài)。2.3課程設(shè)計(jì)任務(wù)安排日期劉偉業(yè)詹煥齊星期三下午研究算法研究算法星期四早上設(shè)計(jì)算法參與設(shè)計(jì)星期四下午設(shè)計(jì)算法,編寫界面參與設(shè)計(jì)星期五早上編寫算法完成部分文檔星期五下午程序測(cè)試并優(yōu)化程序測(cè)試,完成文檔3.算法及數(shù)據(jù)結(jié)構(gòu)3.1算法的總體思想(流程)設(shè)計(jì)程序模擬四種動(dòng)態(tài)分區(qū)分配算法:首次適應(yīng)算法、循環(huán)首次適應(yīng)算法、最佳適應(yīng)算法和最壞適應(yīng)算法的工作過程。假設(shè)內(nèi)存中空閑分區(qū)個(gè)數(shù)為n,空閑分區(qū)大小分別為P,…,P,在動(dòng)態(tài)分區(qū)分配過程中需要分配的進(jìn)程個(gè)數(shù)為m(mWn),它們需要的1n分區(qū)大小分別為S,…,S,分別利用四種動(dòng)態(tài)分區(qū)分配算法將m個(gè)進(jìn)程放入n個(gè)空閑1m分區(qū),進(jìn)程在空閑分區(qū)中的分配情況。3.2首次適應(yīng)算法3.2.1功能在首次適應(yīng)算法中,是從已建立好的數(shù)組中順序查找,直至找到第一個(gè)大小能滿足要求的空閑分區(qū)為止,然后再按照作業(yè)大小,從該分區(qū)中劃出一塊內(nèi)存空間分配給請(qǐng)求者,余下的空間令開辟一塊新的地址,大小為原來的大小減去作業(yè)大小,若查找結(jié)束都不能找到一個(gè)滿足要求的分區(qū),則此次內(nèi)存分配失敗。3.2.2數(shù)據(jù)結(jié)構(gòu)(包括變量的定義,要注釋!)privatestaticintMaxNum=100;〃空閑分區(qū)個(gè)數(shù)privatestaticintn;〃作業(yè)個(gè)數(shù)privatestaticintm;〃空閑分區(qū)大小privatestaticintFreePartition[]=newint[MaxNum];〃作業(yè)名稱privatestaticcharProcessName[]=newchar[MaxNum];〃作業(yè)需求空間大小privatestaticintProcessNeed[]=newint[MaxNum];〃作業(yè)分配標(biāo)志privatestaticbooleanstate[]=newboolean[MaxNum];〃空閑分區(qū)個(gè)數(shù)privatestaticintPartitionNum;〃作業(yè)個(gè)數(shù)privatestaticintProcessNum;〃記錄作業(yè)分配privatestaticcharorder[][]=newchar[MaxNum][MaxNum];3.2.3算法(流程圖表示,或偽C表示)publicstaticvoidFirst(){fOr(i=0;i<m;i++){for(j=0;jvnj++){〃找到第一個(gè)合適的空閑分區(qū)if((ProcessNeed[i]<=FreePartition[jl)&&(!state[i])){for(k=0;k<3;k++) 〃記錄作業(yè)分配{if(order[j][k]==0)〃為空{(diào)order[j][k]=ProcessName[i];break;}elsecontinue;}FreePartition[j]=FreePartition[j]-ProcessNeed[i];state[i]=true;}}}}3.3循環(huán)首次適應(yīng)算法3.3.1功能該算法是由首次適應(yīng)算法演變而成,在為進(jìn)程分配內(nèi)存空間時(shí),不再是每次都從第一個(gè)空間開始查找,而是從上次找到的空閑分區(qū)的下一個(gè)空閑分區(qū)開始查找,直至找到第一個(gè)能滿足要求的空閑分區(qū),從中劃出一塊與請(qǐng)求大小相等的內(nèi)存空間分配給作業(yè),為實(shí)現(xiàn)本算法,設(shè)置一個(gè)全局變量f,來控制循環(huán)查找,當(dāng)f%N==0時(shí),f=0;若查找結(jié)束都不能找到一個(gè)滿足要求的分區(qū),則此次內(nèi)存分配失敗。3.3.2數(shù)據(jù)結(jié)構(gòu)privatestaticintMaxNum=100;〃空閑分區(qū)個(gè)數(shù)privatestaticintn;〃作業(yè)個(gè)數(shù)privatestaticintm;〃空閑分區(qū)大小privatestaticintFreePartition[]=newint[MaxNum];〃作業(yè)名稱privatestaticcharProcessName[]=newchar[MaxNum];〃作業(yè)需求空間大小privatestaticintProcessNeed[]=newint[MaxNum];〃作業(yè)分配標(biāo)志privatestaticbooleanstate[]=newboolean[MaxNum];〃空閑分區(qū)個(gè)數(shù)privatestaticintPartitionNum;〃作業(yè)個(gè)數(shù)privatestaticintProcessNum;〃記錄作業(yè)分配privatestaticcharorder[][]=newchar[MaxNum][MaxNum];3.3.3算法publicstaticvoidCycleFirst(){i=0;j=0;while((i<n)&&(/km)){if((ProcessNeed[i]<=FreePartition[/])&&(!state[i])){for(k=0;kv3;k++) 〃記錄作業(yè)分配{if(order[/][k]==0){order[/][k]=ProcessName[i];break;}elsecontinue;3.4最佳適應(yīng)算法3.4.1功能最佳適應(yīng)分配算法是每次為作業(yè)分配內(nèi)存時(shí),掃描整個(gè)數(shù)組,總是把能滿足條件的,又是最小的空閑分區(qū)分配給作業(yè),避免“大材小用”。該算法要求將所有的空閑分區(qū)按其容量以從小到大的順序形成一空閑分區(qū)鏈。這樣,第一次找到的能滿足要求的空閑區(qū)必然是最佳的。3.4.2數(shù)據(jù)結(jié)構(gòu)privatestaticintMaxNum=100;〃空閑分區(qū)個(gè)數(shù)privatestaticintn;〃作業(yè)個(gè)數(shù)privatestaticintm;〃空閑分區(qū)大小privatestaticintFreePartition[]=newint[MaxNum];〃作業(yè)名稱privatestaticcharProcessName[]=newchar[MaxNum];〃作業(yè)需求空間大小privatestaticintProcessNeed[]=newint[MaxNum];〃作業(yè)分配標(biāo)志privatestaticbooleanstate[]=newboolean[MaxNum];〃空閑分區(qū)個(gè)數(shù)privatestaticintPartitionNum;〃作業(yè)個(gè)數(shù)privatestaticintProcessNum;〃記錄作業(yè)分配privatestaticcharorder[][]=newchar[MaxNum][MaxNum];3.4.3算法publicstaticvoidBest(){for(i=0;ivm;i++){temp=FreePartition[0];k=0;〃找到第一個(gè)合適的空閑分區(qū)while(ProcessNeed[i]>temp){k++;temp=FreePartition[k];}for(j=0;j<n;j++){〃按最佳適應(yīng)算法找到符合的空閑區(qū)if((ProcessNeed[i]<=FreePartition[jl)&&(temp>FreePartition[j)&&(!state[i])){temp=FreePartition[j];k=j;}elsecontinue;}for(d=0;d<3;d++) 〃記錄作業(yè)分配{if(order[k][d]==0){order[k][d]=ProcessName[i];break;}elsecontinue;}FreePartition[k]=FreePartition[k]-ProcessNeed[i];state[i]=true;}}3.5最壞適應(yīng)算法3.5.1功能最壞適應(yīng)分配算法選擇空閑分區(qū)的策略正好與最佳適應(yīng)算法相反。是每次為作業(yè)分配內(nèi)存時(shí),掃描整個(gè)數(shù)組,總是把能滿足條件的,又是最大的空閑分區(qū)分配給作業(yè)。對(duì)中小作業(yè)有利,同時(shí)查找效率很高。3.5.2數(shù)據(jù)結(jié)構(gòu)privatestaticintMaxNum=100;〃空閑分區(qū)個(gè)數(shù)privatestaticintn;〃作業(yè)個(gè)數(shù)privatestaticintm;〃空閑分區(qū)大小privatestaticintFreePartition[]=newint[MaxNum];〃作業(yè)名稱privatestaticcharProcessName[]=newchar[MaxNum];〃作業(yè)需求空間大小privatestaticintProcessNeed[]=newint[MaxNum];〃作業(yè)分配標(biāo)志privatestaticbooleanstate[]=newboolean[MaxNum];〃空閑分區(qū)個(gè)數(shù)privatestaticintPartitionNum;〃作業(yè)個(gè)數(shù)privatestaticintProcessNum;〃記錄作業(yè)分配privatestaticcharorder[][]=newchar[MaxNum][MaxNum];3.5.3算法publicstaticvoidWorst(){for(i=0;ivm;i++){temp=FreePartition[0];k=0;for(j=0;j<n;/++){〃按最壞適應(yīng)算法找到合適的空閑分區(qū)if((ProcessNeed[i]<=FreePartition[/])&&(temp<FreePartition[j]&&
(!state[i])){temp=FreePartition[j]k=j;}elsecontinue;}for(d=0;dv3;d++) 〃記錄作業(yè)分配{if(order[k][d]==0){order[k][d]=ProcessName[i];break;}elsecontinue:}FreePartition[k]=FreePartition[k]-ProcessNeed[i];state[i]=true;}}4.程序設(shè)計(jì)與實(shí)現(xiàn)4.1程序流程圖4.2程序代碼(要注釋)D_ProcessPartition.javaimportjava.io.BufferedlnputStream;importiava.io.FilelnputStream;importjava.io.FileNotFoundException;importjava,util.Random;importjava,util.Scanner;publicclassD_ProcessPartition{privatestaticintMaxNum=100;//空閑分區(qū)個(gè)數(shù)privatestaticintn;//作業(yè)個(gè)數(shù)privatestaticintm;//空閑分區(qū)大小privatestaticintFreePartitio[]二newint[MaxNum];//作業(yè)名稱privatestaticcharProcessNam[]=newchar[MaxNum];//作業(yè)需求空間大小privatestaticintProcessNee[]=newint[MaxNum];//作業(yè)分配標(biāo)志privatestaticbooleanstate[]=newboolean[MaxNum];//空閑分區(qū)個(gè)數(shù)privatestaticintPartitionNu;//作業(yè)個(gè)數(shù)privatestaticintProcessNu;//記錄作業(yè)分配privatestaticcharorder[][]=newchar[MaxNum][MaxNum];//?????privatestaticcharch[]=newchar[MaxNum];//臨時(shí)變量privatestaticinttemp;//算法選擇//l-首次適應(yīng)算法//2-循環(huán)首次適應(yīng)算法//3-最佳適應(yīng)算法//4-最壞適應(yīng)算法privatestaticintoption=0;//for循環(huán)中使用privatestaticinti;privatestaticintj;privatestaticintk;privatestaticintd;privatestaticScannerstdin;publicStringDProcessPartition(intoption,intn)throwsFileNotFoundException{Stringxinxi二;Stringzuoyexinxi二;StringsuanfaString二"“;//輸入數(shù)據(jù)xinxi二input(n);//選擇算法//1-首次適應(yīng)算法//2-循環(huán)首次適應(yīng)算法//3-最佳適應(yīng)算法//4-最壞適應(yīng)算法switch(option){case1:suanfaString二"首次適應(yīng)算法";First(n);zuoyexinxi二"對(duì)作業(yè)用首次適應(yīng)算法進(jìn)行空間分配:\n"+output(n);break;case2:suanfaString二"循環(huán)首次適應(yīng)算法";CycleFirst(n);zuoyexinxi二"對(duì)作業(yè)用循環(huán)首次適應(yīng)算法進(jìn)行空間分配:\n"+output(n);break;case3:suanfaString二"最佳適應(yīng)算法";Best(n);zuoyexinxi二"對(duì)作業(yè)用最佳適應(yīng)算法進(jìn)行空間分配:\n"+output(n);break;case4:suanfaString二"最壞適應(yīng)算法";Worst(n);zuoyexinxi="對(duì)作業(yè)用最壞適應(yīng)算法進(jìn)行空間分配:\n"+output(n);break;}//返回?cái)?shù)據(jù)在JTA上顯示出來Stringall二"你選擇了"+suanfaString+"\n\n"+xinxi+"\n\n"+zuoyexinxi;returnall;}//輸入數(shù)據(jù)publicstaticStringinput(intn)throwsFileNotFoundException{//算法選擇//l-首次適應(yīng)算法//2-循環(huán)首次適應(yīng)算法//3-最佳適應(yīng)算法//4-最壞適應(yīng)算法Stringresult二"";//請(qǐng)依次輸入空閑分區(qū)大小(KB)for(i=0;i<n;i++){FreePartitio[i]二RandomTestO;result二result+FreePartitio[i]+"";}result="隨機(jī)的"+n+"個(gè)空閑分區(qū)大小為:"+result+"\n"+"隨機(jī)的作業(yè)大小為:";//請(qǐng)輸入作業(yè)個(gè)數(shù),按題目要求默認(rèn)為1可設(shè)置m=1;//固定的作業(yè)名稱ProcessNam[i]="Process".charAt(0);ch[i]=ProcessNam[i];//按題目要求隨機(jī)作業(yè)大小(KB)for(i=0;i<m;i++){ProcessNee[i]=RandomTest();state[i]二false;result二result+ProcessNee[i];}returnresult;}publicstaticintRandomTest(){intmin=1;Randomrandom=newRandom();ints=random.nextint(MaxNum)%(MaxNum-min+1)+min;System.out.println(s);returns;}//1――首次適應(yīng)算法publicstaticvoidFirst(intn){for(i=0;i<m;i++){for(j=O;j〈n;j++){//找到第一個(gè)合適的空閑分區(qū)if((ProcessNee[i]<=FreePartitio[j])&&(!state[i])){for(k=0;k<3;k++) //記錄作業(yè)分配{辻(order[j][k]==0) //為空{(diào)order[j][k]二ProcessNam[i];break;}elsecontinue;}FreePartitio[j]二FreePartitio[j]-ProcessNee[i];state[i]=true;}}}}//2――循環(huán)首次適應(yīng)算法publicstaticvoidCycleFirst(intn){i=0;j=0;while((i<n)&&(j〈m)){if((ProcessNee[i]<=FreePartitio[j])&&(!state[i])){for(k=0;k<3;k++) //記錄作業(yè)分配{辻(order[j][k]==0){order[j][k]=ProcessNam[i];break;}elsecontinue;}FreePartitio[j]二FreePartitio[j]-ProcessNee[i];state[i]=true;i++;}elsej++;}}//3——最佳適應(yīng)算法publicstaticvoidBest(intn){for(i=0;i<m;i++){temp二FreePartitio[0];k=0;//找到第一個(gè)合適的空閑分區(qū)while(ProcessNee[i]>temp){k++;temp=FreePartitio[k];}for(j=0;j〈n;j++){//按最佳適應(yīng)算法找到符合的空閑區(qū)if((ProcessNee[i]<=FreePartitio[j])&&(temp>FreePartitio[j])&&(!state[i])){temp二FreePartitio[j];k=j;}elsecontinue;}for(d=0;d<3;d++) //記錄作業(yè)分配{if(order[k][d]==0){order[k][d]=ProcessNam[i];break;}elsecontinue;}FreePartitio[k]二FreePartitio[k]-ProcessNee[i];state[i]=true;}}//4——最壞適應(yīng)算法publicstaticvoidWorst(intn){for(i=0;i<m;i++){temp二FreePartitio[0];k=0;for(j=0;j〈n;j++){//按最壞適應(yīng)算法找到合適的空閑分區(qū)if((ProcessNee[i]<=FreePartitio[j])&&(temp<FreePartitio[j])&&(!state[i])){temp二FreePartitio[j];k=j;}elsecontinue;}for(d=0;d<3;d++) //記錄作業(yè)分配{if(order[k][d]==0){order[k][d]=ProcessNam[i];break;}elsecontinue;}FreePartitio[k]二FreePartitio[k]-ProcessNee[i];state[i]=true;}}//結(jié)果輸出publicstaticStringoutput(intn){StringresuItString="";for(i=0;i<n;i++){System.out.print("|");resuItString=resuItString+"|";for(j=0;j〈3;j++){if(order[i][j]==0){System.out.print("");resuItString=resuItString+"";}else{System.out.print(order[i][j]);resuItString=resuItString+order[i][j];}}}System.out.print("|\n");resuItString=resuItString+"|\n";4.3實(shí)驗(yàn)結(jié)果諸輸入空閑分區(qū)的個(gè)數(shù)(不能少于外)首探適應(yīng)算法情壞首決適應(yīng)算諾最隹適應(yīng)算法最壞迢應(yīng)算法04開貽算法5.結(jié)論在上學(xué)期末幾天的時(shí)間中,我
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 天津理工大學(xué)中環(huán)信息學(xué)院《數(shù)據(jù)科學(xué)與工程引論》2023-2024學(xué)年第一學(xué)期期末試卷
- 宜春學(xué)院《現(xiàn)代舞技術(shù)(2)》2023-2024學(xué)年第二學(xué)期期末試卷
- 上海大學(xué)《全球變化導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 江蘇省徐州市豐縣2024-2025學(xué)年四下數(shù)學(xué)期末學(xué)業(yè)水平測(cè)試試題含解析
- 山東現(xiàn)代學(xué)院《中級(jí)英語(yǔ)閱讀1》2023-2024學(xué)年第一學(xué)期期末試卷
- 蘇州百年職業(yè)學(xué)院《知識(shí)管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 克孜勒蘇職業(yè)技術(shù)學(xué)院《無(wú)線寬帶接入技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 二零二五版品牌加盟合作協(xié)議書
- 綜合研究論證
- 英語(yǔ)演講藝術(shù)
- 共享菜園協(xié)議書5篇
- 人教版小學(xué)數(shù)學(xué)知識(shí)點(diǎn)總結(jié)大全
- 無(wú)人機(jī)事故應(yīng)急響應(yīng)應(yīng)急預(yù)案
- 2025至2030年尼龍?jiān)偕享?xiàng)目投資價(jià)值分析報(bào)告
- 畢業(yè)設(shè)計(jì)(論文)-基于SolidWorks的廚余垃圾處理器設(shè)計(jì)
- 股份制公司運(yùn)營(yíng)方案
- 電氣自動(dòng)化設(shè)備安裝與維修專業(yè)調(diào)研報(bào)告
- 北師大版小學(xué)數(shù)學(xué)家長(zhǎng)會(huì)發(fā)言稿范文
- 基于改進(jìn)YOLOv8的電梯內(nèi)電動(dòng)車檢測(cè)算法研究
- 2025年全球及中國(guó)玻璃通孔(TGV)工藝的激光設(shè)備行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2008年高考數(shù)學(xué)試卷(文)(全國(guó)卷Ⅱ)(解析卷)
評(píng)論
0/150
提交評(píng)論