計(jì)算機(jī)122王玉園_第1頁
計(jì)算機(jī)122王玉園_第2頁
計(jì)算機(jī)122王玉園_第3頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、實(shí)驗(yàn)報(bào)告遼寧科技大學(xué)電信學(xué)院(系)計(jì)算機(jī)科學(xué)與技術(shù)2014年 10月 16日課名:編譯原理實(shí)驗(yàn)項(xiàng)目名稱: (進(jìn)程)作業(yè)調(diào)度班級:計(jì)算機(jī) 122姓名:王玉園學(xué)號(hào): 任課教師:柴玉梅實(shí)驗(yàn)?zāi)康模洪喿x,調(diào)試并注釋一個(gè)單道批處理系統(tǒng)的作業(yè)調(diào)度程序, 通過對本程序的閱讀, 加深對作業(yè)調(diào)度算法的理解。實(shí)驗(yàn)分析與要求:1、 由于在單道批處理系統(tǒng)中, 作業(yè)一旦投入運(yùn)行, 它就占有計(jì)算機(jī)的一切資源直到作業(yè)完成為止。 因此調(diào)度作業(yè)時(shí),不必考慮它所需要的資源是否得到滿足、占用的 cpu 時(shí)限等因素2、每個(gè)作業(yè)由一個(gè)作業(yè)控制塊 JCB表示,JCB可以包含以下信息:作業(yè)名,提交時(shí)間,所需運(yùn)行時(shí)間, 所需資源,作業(yè)狀態(tài)等。

2、作業(yè)的狀態(tài)可以是等待、 運(yùn)行、和完成三種狀態(tài)之一。每個(gè)作業(yè)的最初狀態(tài)總是處于等待狀態(tài)中。3、對每種調(diào)度算法都要求顯示每一個(gè)作業(yè)開始運(yùn)行時(shí)刻,完成時(shí)刻,周轉(zhuǎn)時(shí)間,帶權(quán)周轉(zhuǎn)時(shí)間,這組作業(yè)的 pig 均周轉(zhuǎn)和時(shí)間和帶權(quán)平均周轉(zhuǎn)時(shí)間。4、可以自行編碼實(shí)現(xiàn),語言不限。實(shí)驗(yàn)內(nèi)容:package test;publicclassjob staticintjobin ,count ;staticintjobnum = 100;staticdoubledaiT =newdouble jobnum ;/帶權(quán)周轉(zhuǎn)時(shí)間staticdoubleT1,T2;publicstaticvoidpaixuFCFS(intjob

3、in) for ( inti = 0; i < jobin.length ; i+) /按照到達(dá)時(shí)間進(jìn)行升序排序(冒泡排序)for ( intj = i + 1; j < jobin.length ; j+) 1 / 7if(jobini0 > jobinj0) for(intm = 0; m < 8; m+) count= jobinim;jobinim = jobinjm;jobinjm =count;publicstaticvoidpaixuSJF(intjobin) paixuFCFS (jobin);/到達(dá)時(shí)間已經(jīng)是升序inttime =newintjobin

4、.length ;for(inti = 0; i < time.length ; i+) /初始化滿足條件的工作所需要的時(shí)間timei = 9999;intm = 1;intFtime = jobin00 + jobin01;/第一個(gè)工作開始,算出完成時(shí)間for(inti3 = 1; i3 < jobin.length ; i3+) / 未完成的工作for(inti1 = i3, a = 0; i1 < jobin.length; i1+) if(Ftime >= jobini10) / 工作完成時(shí)已經(jīng)到達(dá)的工作所需要的時(shí)間 timea = jobini11;a+;fo

5、r( int i = 0; i < time. length ; i+) / 找其中所需要時(shí)間最小的 time0 = time0 < timei ? time0 : timei;for( intn = i3; n < jobin.length; n+) if(jobinn1 = time0)/找出該工作是對應(yīng)的第幾個(gè)工作for ( int m1 = 0; m1 < 8; m1+) / 將他與將要執(zhí)行的工作交換 count = jobini3m1;jobini3m1 = jobinnm1;jobinnm1 =count ;2 / 7Ftime += jobinm1;/下一

6、個(gè)工作已確定,需要時(shí)間加上m+;publicstaticvoidpaixuHRN( intjobin) paixuFCFS (jobin);/冒泡排序比較哪個(gè)工作先到達(dá)的doublerp =newdouble jobin.length; /響應(yīng)比intfiT;/作業(yè)完成時(shí)候的時(shí)間intwaitT =newint jobin.length; /等待時(shí)間rp0 = 9999;fiT = jobin00 + jobin01;/第一個(gè)工作完成時(shí)的時(shí)間waitT0 = 0;/第一個(gè)工作不用等待inti = 1, i4, max = 10;while(i < jobin.length) /還要執(zhí)行

7、length-1個(gè)工作for( inti2 = i; i2 < jobin.length; i2+) /剩下的未執(zhí)行的工作 ,計(jì)算響應(yīng)比if(jobini20 <= fiT) /如果到達(dá)時(shí)間大于完成時(shí)間waitTi2 = fiT - jobini20;/等待時(shí)間等于上一個(gè)工作的完成時(shí)的時(shí)間減自己的到達(dá)時(shí)間rpi2 = (double ) waitTi2 / (double )jobini21;/計(jì)算出響應(yīng)比elserpi2 = 0.0;max = i;for(i4 = i + 1; i4 < rp.length; i4+) /對響應(yīng)比數(shù)組選擇最大的max = rpi4 >

8、; rpmax ? i4 : max;if(max != i) for( intm = 0; m < 8; m+) /交換每行的數(shù)據(jù)count= jobinmaxm;jobinmaxm = jobinim;jobinim =count ;fiT += jobini1;i+;3 / 7publicstaticvoidjisuan(intjobin) /計(jì)算各工作的開始,結(jié)束,等待,周轉(zhuǎn)時(shí)間jobin03 = jobin00;jobin04 = jobin03 + jobin01;jobin05 = 0;jobin06 = jobin04 - jobin00;daiT 0 = (float)

9、 jobin06 / (float) jobin01);for( inti = 1; i <jobnum ; i+) jobini3 = (jobini0 > jobini - 14) ?jobini0: jobini - 14;/開始時(shí)間jobini4 = jobini3 + jobini1;/結(jié)束時(shí)間jobini5 = (jobini3 - jobini0);/等待時(shí)間jobini6 = jobini4 - jobini0;/周轉(zhuǎn)時(shí)間daiT i = (float) jobini6 / (float) jobini1);/帶權(quán)周轉(zhuǎn)時(shí)間publicstaticvoidPJ( in

10、tjobin,double daiT2) /計(jì)算平均周轉(zhuǎn)時(shí)間和帶權(quán)平均周轉(zhuǎn)時(shí)間doublem = 0.0, n = 0.0;for( inti = 0; i < jobin.length; i+) /累加求和m += jobini6;n += daiT2i;T1 = m;T2 = n;publicstaticvoidoutput(intjobin,doubleT1,doubleT2) /輸出運(yùn)行結(jié)果for( inti = 0; i <jobnum ; i+) System. out .print(" 工作 " + jobini2 +" 開始運(yùn)行 &qu

11、ot; );System. out .print("開始時(shí)刻為: " + jobini3);System. out .print("結(jié)束時(shí)刻為: " + jobini4);System. out .print("周轉(zhuǎn)時(shí)間為: " + jobini6);System. out .println("帶權(quán)周轉(zhuǎn)時(shí)間為: " +daiT i +"運(yùn)行結(jié)束。 " );4 / 7System. out .println(" 作業(yè)的平均周轉(zhuǎn)時(shí)間為:" + T1 /jobin.length+&

12、quot; 帶權(quán)平均周轉(zhuǎn)時(shí)間為: "+ T2 / jobin.length);publicstaticvoidmain(String args) System. out .print(" 請輸入工作的個(gè)數(shù): " );Scanner a =new Scanner(System.in );jobnum = a.nextInt();intjobin =newint jobnum 8;for( inti = 0; i <jobnum ; i+) System. out .print(" 請輸入工作 " + (i + 1) +" 的到達(dá)時(shí)

13、間和完成所需要的時(shí)間: " );for( intj = 0; j< 2; j+) /jobini0表示到達(dá)時(shí)間, jobini1表示需要時(shí)間jobinij = a.nextInt();jobini2 = i + 1;/ jobini2表示第幾個(gè)工作intchoice;System. out .println(" 請選擇您想要那種算法:" );System. out .println("1.FCFS 算法(先來先服務(wù)) " );System. out .println("2.SJF 算法: ( 最短作業(yè)優(yōu)先 )" );System. out .println("3.HRN 算法(最高響應(yīng)比) " );choice = a.nextInt();switch(choice) case 1:System. out .println( " 您選擇了 FCFS算法(先來先服務(wù)) " ); job. paixuFCFS (jobin);break ;case 2:System. out .println( &qu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論