操作系統(tǒng)作業(yè)調(diào)度實(shí)驗(yàn)報告_第1頁
操作系統(tǒng)作業(yè)調(diào)度實(shí)驗(yàn)報告_第2頁
操作系統(tǒng)作業(yè)調(diào)度實(shí)驗(yàn)報告_第3頁
操作系統(tǒng)作業(yè)調(diào)度實(shí)驗(yàn)報告_第4頁
操作系統(tǒng)作業(yè)調(diào)度實(shí)驗(yàn)報告_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、.實(shí)驗(yàn)二作業(yè)調(diào)度一. 實(shí)驗(yàn)題目1、編寫并調(diào)試一個單道處理系統(tǒng)的作業(yè)等待模擬程序。作業(yè)調(diào)度算法:分別采用先來先服務(wù)(fcfs),最短作業(yè)優(yōu)先(sjf)的調(diào)度算法。( 1)先來先服務(wù)算法: 按照作業(yè)提交給系統(tǒng)的先后順序來挑選作業(yè),先提交的先被挑選。( 2)最短作業(yè)優(yōu)先算法: 是以進(jìn)入系統(tǒng)的作業(yè)所提出的 “執(zhí)行時間 ”為標(biāo)準(zhǔn),總是優(yōu)先選取執(zhí)行時間最短的作業(yè)。二 . 實(shí)驗(yàn)?zāi)康模罕緦?shí)驗(yàn)要求用高級語言 (c 語言實(shí)驗(yàn)環(huán)境) 編寫和調(diào)試一個或多個作業(yè)調(diào)度的模擬程序,了解作業(yè)調(diào)度在操作系統(tǒng)中的作用,以加深對作業(yè)調(diào)度算法的理解三 .實(shí)驗(yàn)過程單道處理系統(tǒng)作業(yè)調(diào)度1)單道處理程序作業(yè)調(diào)度實(shí)驗(yàn)的源程序: zuoye.

2、c執(zhí)行程序 : zuoye.exe2) 實(shí)驗(yàn)分析:1、由于在單道批處理系統(tǒng)中,作業(yè)一投入運(yùn)行,它就占有計(jì)算機(jī)的一切資源直到作業(yè)完成為止, 因此調(diào)度作業(yè)時不必考慮它所需要的資源是否得到滿足,它所占用的cpu 時限等因素。2、每個作業(yè)由一個作業(yè)控制塊jcb 表示, jcb 可以包含如下信息:作業(yè)名、提交時間、 所需的運(yùn)行時間、所需的資源、作業(yè)狀態(tài)、 鏈指針等等。 作業(yè)的狀態(tài)可以是等待w(wait) 、運(yùn)行r(run)和完成 f(finish)三種狀態(tài)之一。 每個作業(yè)的最初狀態(tài)總是等待w。3、對每種調(diào)度算法都要求打印每個作業(yè)開始運(yùn)行時刻、 完成時刻、周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間, 以及這組作業(yè)的平均周轉(zhuǎn)時

3、間及帶權(quán)平均周轉(zhuǎn)時間。3) 流程圖 :.代替二 . 最短作業(yè)優(yōu)先算法代替三. 高響應(yīng)比算法圖一 . 先來先服務(wù)流程圖4) 源程序 :#include #include #include #define getpch(type) (type*)malloc(sizeof(type)#define null 0int n;float t1=0,t2=0;int times=0;struct jcb/作業(yè)控制塊char name10;/作業(yè)名int reachtime;/作業(yè)到達(dá)時間int starttime; /作業(yè)開始時間int needtime;/作業(yè)需要運(yùn)行的時間float super;/作

4、業(yè)的響應(yīng)比int finishtime;/作業(yè)完成時間float cycletime;/作業(yè)周轉(zhuǎn)時間float cltime;/作業(yè)帶權(quán)周轉(zhuǎn)時間char state;/作業(yè)狀態(tài)struct jcb *next;/結(jié)構(gòu)體指針*ready=null,*p,*q;typedef struct jcb jcb;void inize()/初始化界面.printf(nntt*ttn);printf(tttt實(shí)驗(yàn)二 作業(yè)調(diào)度 n);printf(tt*ttn);printf(nnnttttt計(jì)算機(jī)學(xué)院軟件四班n);printf(ttttt藍(lán)小花 n);printf(ttttt3204007102n);pri

5、ntf(ttttt完成日期: 2006 年 11 月 17 號 );printf(nnntt請輸入任意鍵進(jìn)入演示過程n);getch();void inital()/建立作業(yè)控制塊隊(duì)列, 先將其排成先來先服務(wù)的模式隊(duì)列int i;printf(n輸入作業(yè)數(shù) :);scanf(%d,&n);for(i=0;iname);getch();p-reachtime=i;printf(作業(yè)默認(rèn)到達(dá)時間:%d,i);printf(n輸入作業(yè)要運(yùn)行的時間:);scanf(%d,&p-needtime);p-state=w;p-next=null;if(ready=null) ready=q=p;elseq-

6、next=p;q=p;void disp(jcb* q,int m)/顯示作業(yè)運(yùn)行后的周轉(zhuǎn)時間及帶權(quán)周轉(zhuǎn)時間等if(m=3)/顯示高響應(yīng)比算法調(diào)度作業(yè)后的運(yùn)行情況printf(n作業(yè) %s正在運(yùn)行,估計(jì)其運(yùn)行情況:n,q-name);printf(開始運(yùn)行時刻:%dn,q-starttime);printf(完成時刻: %dn,q-finishtime);.printf(周轉(zhuǎn)時間: %fn,q-cycletime);printf(帶權(quán)周轉(zhuǎn)時間:%fn,q-cltime);printf(相應(yīng)比 :%fn,q-super);getch();else/顯示先來先服務(wù), 最短作業(yè)優(yōu)先算法調(diào)度后作業(yè)的運(yùn)

7、行情況printf(n作業(yè) %s正在運(yùn)行,估計(jì)其運(yùn)行情況:n,q-name);printf(開始運(yùn)行時刻:%dn,q-starttime);printf(完成時刻: %dn,q-finishtime);printf(周轉(zhuǎn)時間: %fn,q-cycletime);printf(帶權(quán)周轉(zhuǎn)時間:%fn,q-cltime);getch();void running(jcb *p,int m)/運(yùn)行作業(yè)if(p=ready)/先將要運(yùn)行的作業(yè)從隊(duì)列中分離出來ready=p-next;p-next=null;elseq=ready;while(q-next!=p) q=q-next;q-next=p-ne

8、xt;p-starttime=times;/計(jì)算作業(yè)運(yùn)行后的完成時間, 周轉(zhuǎn)時間等等p-state=r;p-finishtime=p-starttime+p-needtime;p-cycletime=(float)(p-finishtime-p-reachtime);p-cltime=(float)(p-cycletime/p-needtime);t1+=p-cycletime;t2+=p-cltime;disp(p,m);/調(diào)用 disp()函數(shù) , 顯示作業(yè)運(yùn)行情況times+=p-needtime;p-state=f;printf(n%shasbeenfinished!npressany

9、keytocontinue.n,p-name);free(p);/釋放運(yùn)行后的作業(yè)getch();.void super()/計(jì)算隊(duì)列中作業(yè)的高響應(yīng)比jcb *padv;padv=ready;doif(padv-state=w&padv-reachtimesuper=(float)(times-padv-reachtime+padv-needtime)/padv-needtimepadv=padv-next;while(padv!=null);void final()/最后打印作業(yè)的平均周轉(zhuǎn)時間, 平均帶權(quán)周轉(zhuǎn)時間float s,t;t=t1/n;s=t2/n;getch();printf(n

10、n作業(yè)已經(jīng)全部完成!);printf(n%d個作業(yè)的平均周轉(zhuǎn)時間是:%f,n,t);printf(n%d個作業(yè)的平均帶權(quán)周轉(zhuǎn)時間是%f: nnn,n,s);void hrn(int m)/高響應(yīng)比算法jcb *min;int i,iden;system(cls);inital();for(i=0;istate=w&p-reachtimesupermin-super) min=p;p=p-next;while(p!=null);if(iden).i-;times+;/printf(ntime=%d:tno jcb submib.wait.,time);if(times1000)printf(nr

11、untime is too long.error.);getch();elserunning(min,m);/調(diào)用 running()函數(shù)/forfinal();/調(diào)用 running()函數(shù)void sjf(int m)/最短作業(yè)優(yōu)先算法jcb *min;int i,iden;system(cls);inital();for(i=0;istate=w&p-reachtimeneedtimeneedtime) min=p;p=p-next;while(p!=null) ;if(iden) i-; /printf(ntime=%d:tno jcb submib.wait.,time);times

12、+;if(times100)printf(nruntime is too long.error);getch();elserunning(min,m);/調(diào)用 running()函數(shù) /forfinal();/調(diào)用 running()函數(shù)void fcfs(int m)/先來先服務(wù)算法.int i,iden;system(cls);inital();for(i=0;istate=w&p-reachtimenext;while(p!=null&iden) ;if(iden)i-;printf(n沒有滿足要求的進(jìn)程, 需等待 );times+;if(times100)printf(n時間過長 );

13、getch();elserunning(p,m);/調(diào)用 running()函數(shù)final();/調(diào)用 running()函數(shù)void mune()int m;system(cls);printf(nntt*ttn);printf(tttt作業(yè)調(diào)度演示n);printf(tt*ttn);printf(nnnttt1.先來先服務(wù)算法.);printf(nttt2.最短作業(yè)優(yōu)先算法.);printf(nttt3.響應(yīng)比高者優(yōu)先算法);printf(nttt0.退出程序 .);printf(nntttt選擇所要操作:);scanf(%d,&m);switch(m)case 1:fcfs(m);getch();system(cls);mune();.break;case 2:sjf(m);getch();system(cls);mune();break;case 3:hrn(m);getch();system(cls);mune();break;case 0:system(cls);break;default:pr

溫馨提示

  • 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

提交評論