課程設(shè)計:存儲管理_第1頁
課程設(shè)計:存儲管理_第2頁
課程設(shè)計:存儲管理_第3頁
課程設(shè)計:存儲管理_第4頁
課程設(shè)計:存儲管理_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

目錄TOC\o"1-5"\h\z目錄 2概述 3課程設(shè)計任務(wù)及要求 32.1設(shè)計任務(wù) 32.2設(shè)計要求 3\o"CurrentDocument"2.3課程設(shè)計任務(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è)計與實(shí)現(xiàn) 10\o"CurrentDocument"4.1程序流程圖 10\o"CurrentDocument"4.2程序代碼(要注釋) 104.3實(shí)驗(yàn)結(jié)果 17結(jié)論 18收獲、體會和建議。 18\o"CurrentDocument"詹煥齊總結(jié): 18\o"CurrentDocument"劉偉業(yè)總結(jié): 18參考文獻(xiàn)。 19動態(tài)分區(qū)分配是根據(jù)進(jìn)程的實(shí)際需要,動態(tài)地為之分配內(nèi)存空間,而在分配時,須按照一定的分配算法,從空閑分區(qū)表或空閑分區(qū)鏈中選出一分區(qū)分配給該作業(yè)。在本實(shí)驗(yàn)中運(yùn)用了五種分配算法,分別是:首次適應(yīng)算法循環(huán)首次適應(yīng)算法最壞適應(yīng)算法最佳適應(yīng)算法快速適應(yīng)算法2.課程設(shè)計任務(wù)及要求2.1設(shè)計任務(wù)要求設(shè)計主界面以靈活選擇其中算法,5種算法都要求實(shí)現(xiàn)。2.2設(shè)計要求1)首先由系統(tǒng)生成當(dāng)前的內(nèi)存狀態(tài),要求未分配的分區(qū)數(shù)量不少于3個,且空間大小隨機(jī),然后隨機(jī)生成一個數(shù),表示等待分配進(jìn)程的大小。2)然后顯示上述算法由用戶選擇,結(jié)果顯示分配后的狀態(tài)。2.3課程設(shè)計任務(wù)安排日期劉偉業(yè)詹煥齊星期三下午研究算法研究算法星期四早上設(shè)計算法參與設(shè)計星期四下午設(shè)計算法,編寫界面參與設(shè)計星期五早上編寫算法完成部分文檔星期五下午程序測試并優(yōu)化程序測試,完成文檔3.算法及數(shù)據(jù)結(jié)構(gòu)3.1算法的總體思想(流程)設(shè)計程序模擬四種動態(tài)分區(qū)分配算法:首次適應(yīng)算法、循環(huán)首次適應(yīng)算法、最佳適應(yīng)算法和最壞適應(yīng)算法的工作過程。假設(shè)內(nèi)存中空閑分區(qū)個數(shù)為n,空閑分區(qū)大小分別為P,…,P,在動態(tài)分區(qū)分配過程中需要分配的進(jìn)程個數(shù)為m(mWn),它們需要的1n分區(qū)大小分別為S,…,S,分別利用四種動態(tài)分區(qū)分配算法將m個進(jìn)程放入n個空閑1m分區(qū),進(jìn)程在空閑分區(qū)中的分配情況。3.2首次適應(yīng)算法3.2.1功能在首次適應(yīng)算法中,是從已建立好的數(shù)組中順序查找,直至找到第一個大小能滿足要求的空閑分區(qū)為止,然后再按照作業(yè)大小,從該分區(qū)中劃出一塊內(nèi)存空間分配給請求者,余下的空間令開辟一塊新的地址,大小為原來的大小減去作業(yè)大小,若查找結(jié)束都不能找到一個滿足要求的分區(qū),則此次內(nèi)存分配失敗。3.2.2數(shù)據(jù)結(jié)構(gòu)(包括變量的定義,要注釋?。﹑rivatestaticintMaxNum=100;〃空閑分區(qū)個數(shù)privatestaticintn;〃作業(yè)個數(shù)privatestaticintm;〃空閑分區(qū)大小privatestaticintFreePartition[]=newint[MaxNum];〃作業(yè)名稱privatestaticcharProcessName[]=newchar[MaxNum];〃作業(yè)需求空間大小privatestaticintProcessNeed[]=newint[MaxNum];〃作業(yè)分配標(biāo)志privatestaticbooleanstate[]=newboolean[MaxNum];〃空閑分區(qū)個數(shù)privatestaticintPartitionNum;〃作業(yè)個數(shù)privatestaticintProcessNum;〃記錄作業(yè)分配privatestaticcharorder[][]=newchar[MaxNum][MaxNum];3.2.3算法(流程圖表示,或偽C表示)publicstaticvoidFirst(){fOr(i=0;i<m;i++){for(j=0;jvnj++){〃找到第一個合適的空閑分區(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)存空間時,不再是每次都從第一個空間開始查找,而是從上次找到的空閑分區(qū)的下一個空閑分區(qū)開始查找,直至找到第一個能滿足要求的空閑分區(qū),從中劃出一塊與請求大小相等的內(nèi)存空間分配給作業(yè),為實(shí)現(xiàn)本算法,設(shè)置一個全局變量f,來控制循環(huán)查找,當(dāng)f%N==0時,f=0;若查找結(jié)束都不能找到一個滿足要求的分區(qū),則此次內(nèi)存分配失敗。3.3.2數(shù)據(jù)結(jié)構(gòu)privatestaticintMaxNum=100;〃空閑分區(qū)個數(shù)privatestaticintn;〃作業(yè)個數(shù)privatestaticintm;〃空閑分區(qū)大小privatestaticintFreePartition[]=newint[MaxNum];〃作業(yè)名稱privatestaticcharProcessName[]=newchar[MaxNum];〃作業(yè)需求空間大小privatestaticintProcessNeed[]=newint[MaxNum];〃作業(yè)分配標(biāo)志privatestaticbooleanstate[]=newboolean[MaxNum];〃空閑分區(qū)個數(shù)privatestaticintPartitionNum;〃作業(yè)個數(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ù)組,總是把能滿足條件的,又是最小的空閑分區(qū)分配給作業(yè),避免“大材小用”。該算法要求將所有的空閑分區(qū)按其容量以從小到大的順序形成一空閑分區(qū)鏈。這樣,第一次找到的能滿足要求的空閑區(qū)必然是最佳的。3.4.2數(shù)據(jù)結(jié)構(gòu)privatestaticintMaxNum=100;〃空閑分區(qū)個數(shù)privatestaticintn;〃作業(yè)個數(shù)privatestaticintm;〃空閑分區(qū)大小privatestaticintFreePartition[]=newint[MaxNum];〃作業(yè)名稱privatestaticcharProcessName[]=newchar[MaxNum];〃作業(yè)需求空間大小privatestaticintProcessNeed[]=newint[MaxNum];〃作業(yè)分配標(biāo)志privatestaticbooleanstate[]=newboolean[MaxNum];〃空閑分區(qū)個數(shù)privatestaticintPartitionNum;〃作業(yè)個數(shù)privatestaticintProcessNum;〃記錄作業(yè)分配privatestaticcharorder[][]=newchar[MaxNum][MaxNum];3.4.3算法publicstaticvoidBest(){for(i=0;ivm;i++){temp=FreePartition[0];k=0;〃找到第一個合適的空閑分區(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ù)組,總是把能滿足條件的,又是最大的空閑分區(qū)分配給作業(yè)。對中小作業(yè)有利,同時查找效率很高。3.5.2數(shù)據(jù)結(jié)構(gòu)privatestaticintMaxNum=100;〃空閑分區(qū)個數(shù)privatestaticintn;〃作業(yè)個數(shù)privatestaticintm;〃空閑分區(qū)大小privatestaticintFreePartition[]=newint[MaxNum];〃作業(yè)名稱privatestaticcharProcessName[]=newchar[MaxNum];〃作業(yè)需求空間大小privatestaticintProcessNeed[]=newint[MaxNum];〃作業(yè)分配標(biāo)志privatestaticbooleanstate[]=newboolean[MaxNum];〃空閑分區(qū)個數(shù)privatestaticintPartitionNum;〃作業(yè)個數(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è)計與實(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ū)個數(shù)privatestaticintn;//作業(yè)個數(shù)privatestaticintm;//空閑分區(qū)大小privatestaticintFreePartitio[]二newint[MaxNum];//作業(yè)名稱privatestaticcharProcessNam[]=newchar[MaxNum];//作業(yè)需求空間大小privatestaticintProcessNee[]=newint[MaxNum];//作業(yè)分配標(biāo)志privatestaticbooleanstate[]=newboolean[MaxNum];//空閑分區(qū)個數(shù)privatestaticintPartitionNu;//作業(yè)個數(shù)privatestaticintProcessNu;//記錄作業(yè)分配privatestaticcharorder[][]=newchar[MaxNum][MaxNum];//?????privatestaticcharch[]=newchar[MaxNum];//臨時變量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二"對作業(yè)用首次適應(yīng)算法進(jìn)行空間分配:\n"+output(n);break;case2:suanfaString二"循環(huán)首次適應(yīng)算法";CycleFirst(n);zuoyexinxi二"對作業(yè)用循環(huán)首次適應(yīng)算法進(jìn)行空間分配:\n"+output(n);break;case3:suanfaString二"最佳適應(yīng)算法";Best(n);zuoyexinxi二"對作業(yè)用最佳適應(yīng)算法進(jìn)行空間分配:\n"+output(n);break;case4:suanfaString二"最壞適應(yīng)算法";Worst(n);zuoyexinxi="對作業(yè)用最壞適應(yīng)算法進(jìn)行空間分配:\n"+output(n);break;}//返回數(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ū)大小(KB)for(i=0;i<n;i++){FreePartitio[i]二RandomTestO;result二result+FreePartitio[i]+"";}result="隨機(jī)的"+n+"個空閑分區(qū)大小為:"+result+"\n"+"隨機(jī)的作業(yè)大小為:";//請輸入作業(yè)個數(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++){//找到第一個合適的空閑分區(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;//找到第一個合適的空閑分區(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ū)的個數(shù)(不能少于外)首探適應(yīng)算法情壞首決適應(yīng)算諾最隹適應(yīng)算法最壞迢應(yīng)算法04開貽算法5.結(jié)論在上學(xué)期末幾天的時間中,我

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論