操作系統(tǒng) 時(shí)間片輪轉(zhuǎn)RR進(jìn)程調(diào)算法 java版_第1頁
操作系統(tǒng) 時(shí)間片輪轉(zhuǎn)RR進(jìn)程調(diào)算法 java版_第2頁
操作系統(tǒng) 時(shí)間片輪轉(zhuǎn)RR進(jìn)程調(diào)算法 java版_第3頁
操作系統(tǒng) 時(shí)間片輪轉(zhuǎn)RR進(jìn)程調(diào)算法 java版_第4頁
操作系統(tǒng) 時(shí)間片輪轉(zhuǎn)RR進(jìn)程調(diào)算法 java版_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)二 間片輪轉(zhuǎn)RR進(jìn)程調(diào)度算法1、 實(shí)驗(yàn)?zāi)康耐ㄟ^這次實(shí)驗(yàn),加深對(duì)進(jìn)程概念的理解,進(jìn)一步掌握進(jìn)程狀態(tài)的轉(zhuǎn)變、進(jìn)程調(diào)度的策略及對(duì)系統(tǒng)性能的評(píng)價(jià)方法。2、 試驗(yàn)內(nèi)容問題描述:設(shè)計(jì)程序模擬進(jìn)程的時(shí)間片輪轉(zhuǎn)RR調(diào)度過程。假設(shè)有n個(gè)進(jìn)程分別在T1, ,Tn時(shí)刻到達(dá)系統(tǒng),它們需要的服務(wù)時(shí)間分別為S1, ,Sn。分別利用不同的時(shí)間片大小q,采用時(shí)間片輪轉(zhuǎn)RR進(jìn)程調(diào)度算法進(jìn)行調(diào)度,計(jì)算每個(gè)進(jìn)程的完成時(shí)間、周轉(zhuǎn)時(shí)間和帶權(quán)周轉(zhuǎn)時(shí)間,并且統(tǒng)計(jì)n個(gè)進(jìn)程的平均周轉(zhuǎn)時(shí)間和平均帶權(quán)周轉(zhuǎn)時(shí)間。3、 程序要求:1)進(jìn)程個(gè)數(shù)n;每個(gè)進(jìn)程的到達(dá)時(shí)間T1, ,Tn和服務(wù)時(shí)間S1, ,Sn;輸入時(shí)間片大小q。2)要求時(shí)間片輪轉(zhuǎn)法RR調(diào)

2、度進(jìn)程運(yùn)行,計(jì)算每個(gè)進(jìn)程的周轉(zhuǎn)時(shí)間和帶權(quán)周轉(zhuǎn)時(shí)間,并且計(jì)算所有進(jìn)程的平均周轉(zhuǎn)時(shí)間和帶權(quán)平均周轉(zhuǎn)時(shí)間;3)輸出:要求模擬整個(gè)調(diào)度過程,輸出每個(gè)時(shí)刻的進(jìn)程運(yùn)行狀態(tài),如“時(shí)刻3:進(jìn)程B開始運(yùn)行”等等;4)輸出:要求輸出計(jì)算出來的每個(gè)進(jìn)程的周轉(zhuǎn)時(shí)間、帶權(quán)周轉(zhuǎn)時(shí)間、所有進(jìn)程的平均周轉(zhuǎn)時(shí)間以及帶權(quán)平均周轉(zhuǎn)時(shí)間。4、 需求分析(1) 輸入的形式和輸入值的范圍時(shí)間片真實(shí)進(jìn)程數(shù)各進(jìn)程的到達(dá)時(shí)間各進(jìn)程的服務(wù)時(shí)間(2) 輸出的形式模擬整個(gè)調(diào)度過程、周轉(zhuǎn)時(shí)間、帶權(quán)周轉(zhuǎn)時(shí)間、所有進(jìn)程的平均周轉(zhuǎn)時(shí)間以及帶權(quán)平均周轉(zhuǎn)時(shí)間。(3)測(cè)試用例 作業(yè)情況時(shí)間片進(jìn)程名ABCDE平均到達(dá)時(shí)間01234服務(wù)時(shí)間43524RRq=1完成時(shí)

3、間1210181117周轉(zhuǎn)時(shí)間1291681311.6帶權(quán)周轉(zhuǎn)時(shí)間333.243.253.29RRq=4完成時(shí)間47181317周轉(zhuǎn)時(shí)間461610139.8帶權(quán)周轉(zhuǎn)時(shí)間123.253.252.895、 調(diào)試分析由于自己自編寫代碼方面與他人有一定的差距,因此在做實(shí)驗(yàn)的過程中我在網(wǎng)上搜了很多相關(guān)的資料,了解實(shí)現(xiàn)該算法的原理及各部分實(shí)現(xiàn)的代碼,同時(shí)參考了幾個(gè)別人寫好的源代碼,然后自己在理解的基礎(chǔ)上不斷的根據(jù)要求修改寫程序,不過其中碰見的很多的問題。我已經(jīng)自己調(diào)了好多錯(cuò)誤,在一遍遍的調(diào)試和修改中,發(fā)現(xiàn)自己的經(jīng)驗(yàn)在快速增長,這個(gè)感覺真的很不錯(cuò)。然而,實(shí)驗(yàn)的運(yùn)行結(jié)果還不是很完美,每個(gè)進(jìn)程在最后一個(gè)時(shí)間片

4、的運(yùn)行過程中,進(jìn)程列表的更新總是修改錯(cuò)誤。不過在在本次試驗(yàn)中學(xué)到了不少東西,一點(diǎn)點(diǎn)的在進(jìn)步。6、 測(cè)試結(jié)果輸入時(shí)間片,進(jìn)程數(shù),進(jìn)程到達(dá)時(shí)間,服務(wù)時(shí)間輸出輸入時(shí)間片,進(jìn)程數(shù),進(jìn)程到達(dá)時(shí)間,服務(wù)時(shí)間輸出7、 附錄(java)package experiment;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.util.Scanner;public class B_RR / 聲明變量/ 時(shí)間片public static

5、int q = 0;/ 允許的最大進(jìn)程數(shù)public static int MaxNum = 100;/ 真正的進(jìn)程數(shù)public static int realNum;/ order數(shù)組的一個(gè)下標(biāo)public static int number;/ 當(dāng)前時(shí)間public static int NowTime;/ 各進(jìn)程的達(dá)到時(shí)間public static int ArrivalTime = new intMaxNum;/ 各進(jìn)程的服務(wù)時(shí)間public static int ServiceTime = new intMaxNum;/ 各進(jìn)程的服務(wù)時(shí)間(用于記錄進(jìn)程服務(wù)時(shí)間隨時(shí)間片輪轉(zhuǎn)減少的過程

6、)public static int PServiceTime = new intMaxNum;/ 各進(jìn)程的完成時(shí)間public static int FinishTime = new intMaxNum;/ 各進(jìn)程的周轉(zhuǎn)時(shí)間public static int WholeTime = new intMaxNum;/ 進(jìn)程調(diào)度隊(duì)列(存放的是各個(gè)進(jìn)程的數(shù)字代號(hào),如進(jìn)程A數(shù)字代號(hào)為1)public static int order = new intMaxNum;/ 各進(jìn)程的帶權(quán)周轉(zhuǎn)時(shí)間public static double WeightWholeTime = new doubleMaxNum;/

7、 平均周轉(zhuǎn)時(shí)間、平均帶權(quán)周轉(zhuǎn)時(shí)間public static double AverageWT, AverageWWT;/ 周轉(zhuǎn)時(shí)間總和public static int SumWT = 0;/ 帶權(quán)周轉(zhuǎn)時(shí)間總和public static double SumWWT = 0;/ 進(jìn)程是否已經(jīng)結(jié)束的標(biāo)志public static boolean Finished = new booleanMaxNum;public static Scanner stdin;public static void main(String args) throws FileNotFoundException / 從文件

8、中輸入數(shù)據(jù)BufferedInputStream in = new BufferedInputStream(new FileInputStream("./file/02");System.setIn(in);stdin = new Scanner(System.in);q = stdin.nextInt(); / 時(shí)間片qrealNum = stdin.nextInt(); / 真實(shí)進(jìn)程數(shù)for (int i = 0; i < realNum; i+) / 各進(jìn)程的服務(wù)時(shí)間ArrivalTimei = stdin.nextInt();for (int j = 0; j

9、 < realNum; j+) / 各進(jìn)程的服務(wù)時(shí)間ServiceTimej = stdin.nextInt();PServiceTimej = ServiceTimej; /用于記錄進(jìn)程服務(wù)時(shí)間隨時(shí)間片輪轉(zhuǎn)減少的過程Finishedj = false;stdin.close();int all_add = 1; /就緒隊(duì)列中的進(jìn)程個(gè)數(shù)order0 = 0; /進(jìn)程調(diào)度隊(duì)列(存放的是各個(gè)進(jìn)程的數(shù)字代號(hào),如進(jìn)程A數(shù)字代號(hào)為1)number = 1;NowTime = 0; /現(xiàn)在時(shí)間while (order0 != 100) /order0為100,是認(rèn)為規(guī)定進(jìn)程調(diào)度結(jié)束的標(biāo)志/ 調(diào)度程序

10、char w = 'A'System.out.println("時(shí)刻" + NowTime + ":進(jìn)程" + (char)(w + order0) + "開始運(yùn)行;");if (PServiceTimeorder0 > q) /進(jìn)程還未完成PServiceTimeorder0 = PServiceTimeorder0 - q; /對(duì)應(yīng)的進(jìn)程的服務(wù)時(shí)間減去一個(gè)時(shí)間片NowTime += q; /現(xiàn)在時(shí)刻增加一個(gè)時(shí)間片System.out.println("時(shí)刻" + NowTime + &qu

11、ot;:進(jìn)程" + (char)(w + order0) + "停止運(yùn)行,加入就緒序列尾;"); else /進(jìn)程剩一個(gè)時(shí)間片后結(jié)束NowTime += PServiceTimeorder0; /現(xiàn)在時(shí)間增加一個(gè)時(shí)間片PServiceTimeorder0 = 0; /對(duì)應(yīng)進(jìn)程的服務(wù)時(shí)間歸零System.out.println("時(shí)刻" + NowTime + ":進(jìn)程" + (char)(w + order0) + "運(yùn)行結(jié)束;");FinishTimeorder0 = NowTime;WholeTime

12、order0 = NowTime - ArrivalTimeorder0;WeightWholeTimeorder0 = 1.0 * WholeTimeorder0 / ServiceTimeorder0;/ 將到達(dá)的程序加入序列尾if (all_add < realNum) for (int i = 1; i < realNum; i+) if (NowTime >= ArrivalTimei && Finishedi = false) /判斷該進(jìn)程是否已經(jīng)在就緒隊(duì)列中ordernumber+ = i;all_add+; Finishedi = true;/

13、 將序列首程序調(diào)到序列尾int temp = order0;for (int i = 0; i < number - 1; i+) /將order中的每個(gè)數(shù)前移一位orderi = orderi + 1;if (PServiceTimetemp = 0) /進(jìn)程已將全部調(diào)度結(jié)束,通過將order的第一個(gè)數(shù)標(biāo)記為100,來結(jié)束進(jìn)程調(diào)度order-number = 100; else /進(jìn)程還未調(diào)度結(jié)束ordernumber - 1 = temp;double all = 0, all1 = 0;for (int i = 0; i < realNum; i+) / 計(jì)算總周轉(zhuǎn)時(shí)間和總帶權(quán)周轉(zhuǎn)時(shí)間all += WholeTimei;all1 += WeightWholeTimei;System.out.println("n進(jìn)程名t到達(dá)時(shí)間t服務(wù)時(shí)間t完成時(shí)間t周轉(zhuǎn)時(shí)間t帶權(quán)周轉(zhuǎn)時(shí)間");for (int i = 0; i < realNum; i+) System.out.println(char)(i + 'A') + "t" + ArrivalTimei + "t"+ ServiceTimei + "t" + FinishTimei + &quo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論