資源描述:
《基于某java進程調(diào)度算法模擬的程序設(shè)計短作業(yè)優(yōu)先先來先服務(wù)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、實用標(biāo)準(zhǔn)文案華北科技學(xué)院計算機學(xué)院綜合性實驗實驗報告課程名稱計算機操作系統(tǒng)實驗學(xué)期2014至2015學(xué)年第一學(xué)期學(xué)生所在系部計算機學(xué)院年級2012專業(yè)班級計科B121學(xué)生姓名張傳輝學(xué)號201207014117任課教師王祥仲實驗成績計算機學(xué)院制精彩文檔實用標(biāo)準(zhǔn)文案《操作系統(tǒng)》課程綜合性實驗報告開課實驗室:基礎(chǔ)六2014年11月30日實驗題目進程調(diào)度算法模擬程序設(shè)計一、實驗?zāi)康耐ㄟ^對進程調(diào)度算法的模擬,進一步理解進程的基本概念,加深對進程運行狀態(tài)和進程調(diào)度過程、調(diào)度算法的理解。二、設(shè)備與環(huán)境1.硬件設(shè)備:PC機一臺2.軟件環(huán)境:安裝
2、Windows操作系統(tǒng)或者Linux操作系統(tǒng),并安裝相關(guān)的程序開發(fā)環(huán)境,如CC++Java等編程語言環(huán)境。三、實驗內(nèi)容(1)用C語言(或其它語言,如Java)編程實現(xiàn)對N個進程采用某種進程調(diào)度算法(如動態(tài)優(yōu)先權(quán)調(diào)度算法、先來先服務(wù)算法、短進程優(yōu)先算法、時間片輪轉(zhuǎn)調(diào)度算法)調(diào)度執(zhí)行的模擬。(2)每個用來標(biāo)識進程的進程控制塊PCB可用結(jié)構(gòu)來描述,包括以下字段:2進程標(biāo)識數(shù)ID。2進程優(yōu)先數(shù)PRIORITY,并規(guī)定優(yōu)先數(shù)越大的進程,其優(yōu)先權(quán)越高。2進程已占用CPU時間CPUTIME。2進程還需占用的CPU時間ALLTIME。當(dāng)進程
3、運行完畢時,ALLTIME變?yōu)?。2進程的阻塞時間STARTBLOCK,表示當(dāng)進程再運行STARTBLOCK個時間片后,進程將進入阻塞狀態(tài)。2進程被阻塞的時間BLOCKTIME,表示已阻塞的進程再等待BLOCKTIME個時間片后,將轉(zhuǎn)換成就緒狀態(tài)。2進程狀態(tài)STATE。2隊列指針NEXT,用來將PCB排成隊列。(3)優(yōu)先數(shù)改變的原則:2進程在就緒隊列中呆一個時間片,優(yōu)先數(shù)增加1。2進程每運行一個時間片,優(yōu)先數(shù)減3。(4)為了清楚地觀察每個進程的調(diào)度過程,程序應(yīng)將每個時間片內(nèi)的進程的情況顯示出來,包括正在運行的進程,處于就緒隊列中
4、的進程和處于阻塞隊列中的進程。(5)分析程序運行的結(jié)果,談一下自己的認識。精彩文檔實用標(biāo)準(zhǔn)文案代碼:importjava.io.BufferedReader;importjava.io.InputStreamReader;publicclassFCFSANDSJF{privatestaticinti;privateintj;privateinttemp;privateintm[];privateintn[];privateintprocess_number;privateintarrival_time[];privateints
5、ervices_time[];privateintstart_time[];privateintcompletion_time[];privateintturn_around_time[];privatedoubleadd1;privatedoubleadd2;privatedoubleadd3;privatedoubleadd4;privatedoubleright_turn_around_time[];privatevoidFCFS(){System.out.println("===FCFS先來先服務(wù)算法===");Sy
6、stem.out.println("到達時間是:");for(i=0;i7、i++){n[i]=arrival_time[i];m[i]=i;}for(i=0;in[j]){temp=n[i];n[i]=n[j];n[j]=temp;temp=m[i];m[i]=m[j];m[j]=temp;}}}start_time[m[0]]=arrival_time[m[0]];for(i=1;i8、t_time[m[i-1]]+services_time[m[i-1]])start_time[m[i]]=start_time[m[i-1]]+services_time[m[i-1]];elsestart_time[m[i]]=arrival_time[m[