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

下載本文檔

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

文檔簡(jiǎn)介

1、深圳大學(xué)實(shí)驗(yàn)報(bào)告課程名稱:操作系統(tǒng)實(shí)驗(yàn)項(xiàng)目名稱:進(jìn)程調(diào)度學(xué)院:軟件學(xué)院專業(yè):軟件工程指導(dǎo)教師:梁正平報(bào)告人:文成學(xué)號(hào):2011150259班級(jí):2實(shí)驗(yàn)時(shí)間:2013.04.27實(shí)驗(yàn)報(bào)告提交時(shí)間:2013.04.30教務(wù)處制.實(shí)驗(yàn)?zāi)康哪M在單處理器多進(jìn)程情況下的處理器調(diào)度,幫助學(xué)生加深了解處理器調(diào)度的工作。該實(shí)驗(yàn)為模擬實(shí)驗(yàn),不要求創(chuàng)建真正的進(jìn)程調(diào)度。主要目的是編寫程序模擬調(diào)度即可。1、編寫并調(diào)試一個(gè)模擬的進(jìn)程調(diào)度程序,采用“最高優(yōu)先數(shù)優(yōu)先”調(diào)度算法對(duì)進(jìn)程進(jìn)行調(diào)度?!白罡邇?yōu)先數(shù)優(yōu)先調(diào)度算法的基本思想是把CPU分配給就緒隊(duì)列中優(yōu)先數(shù)最高的進(jìn)程。嘗試靜態(tài)優(yōu)先數(shù)與動(dòng)態(tài)優(yōu)先數(shù)兩種方法:a)靜態(tài)優(yōu)先數(shù)是指優(yōu)

2、先數(shù)在整個(gè)進(jìn)程運(yùn)行期間不再改變。優(yōu)先數(shù)可以在數(shù)據(jù)輸入時(shí)指定,也可以根據(jù)到達(dá)順序、運(yùn)行時(shí)間確定。b)動(dòng)態(tài)優(yōu)先數(shù)是指進(jìn)程的優(yōu)先數(shù)在創(chuàng)建進(jìn)程時(shí)可以給定一個(gè)初始值,并且可以按一定原則修改優(yōu)先數(shù)。例如進(jìn)程獲得一次CPU后就將其優(yōu)先數(shù)減少1?;蛘哌M(jìn)程等待的時(shí)間超過(guò)某一時(shí)限時(shí)增加其優(yōu)先數(shù)的值。2、編寫并調(diào)試一個(gè)模擬的進(jìn)程調(diào)度程序,模擬實(shí)現(xiàn)多級(jí)反饋隊(duì)列調(diào)度算法。3、編寫并調(diào)試一個(gè)模擬的進(jìn)程調(diào)度程序,模擬實(shí)現(xiàn)最低松弛度優(yōu)先算法。二.實(shí)驗(yàn)要求程序與報(bào)告要求:a)對(duì)上述要求1、2、3,至少要完成一項(xiàng),鼓勵(lì)嘗試多種算法。b)輸出結(jié)果要盡量詳細(xì)清晰,能夠反映調(diào)度后隊(duì)列變化,PCB內(nèi)部變化。c)可以選擇在Windows或

3、Linux環(huán)境下編寫、運(yùn)行程序d)鼓勵(lì)使用不同的開發(fā)工具在不同平臺(tái)環(huán)境上進(jìn)行開發(fā)比較。在實(shí)驗(yàn)報(bào)告中,一方面可以對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析,一方面可以對(duì)各種算法進(jìn)行比較,分析它們的優(yōu)劣,說(shuō)明各種算法適用于哪些情況下的調(diào)度。3 .方法、步驟實(shí)驗(yàn)方法:統(tǒng)一利用例程中程序的功能和實(shí)現(xiàn)過(guò)程,進(jìn)行修改并調(diào)式。實(shí)驗(yàn)步驟:1 .按照實(shí)驗(yàn)指導(dǎo)的例程,在WINDOWS下運(yùn)行VirsualC+6.0。2 .按照實(shí)驗(yàn)要求編寫程序,內(nèi)容在下面會(huì)有提及。3 .運(yùn)行并調(diào)試編寫好的程序,測(cè)試其運(yùn)作過(guò)程及結(jié)果。得出實(shí)驗(yàn)結(jié)論。4 .實(shí)驗(yàn)過(guò)程及內(nèi)容1、設(shè)計(jì)一個(gè)有N個(gè)進(jìn)程共行的進(jìn)程調(diào)度程序。2、每個(gè)進(jìn)程有一個(gè)進(jìn)程控制塊PCB來(lái)表示,進(jìn)程控制

4、塊的格式為:進(jìn)程名優(yōu)先數(shù)到達(dá)時(shí)間需要運(yùn)行時(shí)間已占用CPU時(shí)間進(jìn)程狀態(tài)a)進(jìn)程優(yōu)先數(shù)、需要運(yùn)行時(shí)間、到達(dá)時(shí)間可以事先人為地指定,也可以隨機(jī)產(chǎn)生,注意初始化上述數(shù)值時(shí)要盡量使進(jìn)程并發(fā)執(zhí)行,而不是按到達(dá)時(shí)間順序調(diào)度。b)進(jìn)程的運(yùn)行時(shí)間以時(shí)間片為單位進(jìn)行計(jì)算。c)進(jìn)程狀態(tài)分為就緒、運(yùn)行、完成三種狀態(tài)之,分別用W、R、F表示。3、進(jìn)程調(diào)度規(guī)則如下:a)就緒進(jìn)程獲得CPU后都只能運(yùn)行一個(gè)時(shí)間片。用已占用CPU時(shí)間加1來(lái)表示。b)如果運(yùn)行一個(gè)時(shí)間片后,進(jìn)程已占用CPU時(shí)間達(dá)到所需要運(yùn)行時(shí)間,則進(jìn)程完成,撤銷該進(jìn)程。c)如果運(yùn)行一個(gè)時(shí)間片后,進(jìn)程已占用CPU時(shí)間還未達(dá)到所需要運(yùn)行時(shí)間,即進(jìn)程需要繼續(xù)運(yùn)行,將它

5、插入就緒隊(duì)列,隊(duì)列重新排序,等待CPU。d)重復(fù)以上過(guò)程,直到所要進(jìn)程都完成為止。4、算法流程圖如下:5 .源程序清單選擇實(shí)現(xiàn)先來(lái)先服務(wù)和短作業(yè)優(yōu)先算法#include#include#defineNumber5voidmain()intn;intdaodaNumber,fuwuNumber,i;cout請(qǐng)依次輸入各個(gè)進(jìn)程的到達(dá)時(shí)間并以空格間隔for(i=0;idaodai;.11.cout請(qǐng)依次輸入各個(gè)進(jìn)程的服務(wù)時(shí)間,并以空格間隔for(i=0;ifuwui;coutn;while(n3)coutn;structstatedd聲明結(jié)構(gòu)booldoneF,doneS;intdaoda,fuwu

6、;floatwancheng,zhouzhuan,daiquan,wan,zhou,dai;stateddprocessNumber;inttimeflyF=0,timeflyS=0;定義兩個(gè)類似于秒表的變量intj,k,l,nextproF,nextproS;/獲取數(shù)據(jù)for(i=0;iNumber;i+)processi.doneF=false;processi.doneS=false;processi.wancheng=0;processi.zhouzhuan=0;processi.daiquan=0;processi.wan=0;processi.zhou=0;processi.dai

7、=0;processi.daoda=daodai;processi.fuwu=fuwui;/獲取最先到達(dá)的進(jìn)程下標(biāo)firstintfirst=0;l=first;for(i=1;idaodai)first=i;processfirst.doneF=true;processfirst.doneS=true;processfirst.wancheng=processfirst.fuwu+processfirst.daoda;processfirst.wan=processfirst.fuwu+processfirst.daoda;timeflyF+=processfirst.daoda+proce

8、ssfirst.fuwu;timeflyS+=processfirst.daoda+processfirst.fuwu;/接下去到達(dá)的進(jìn)程/*/fcfs*for(j=1;jNumber;j+)nextproF=Number+1;for(k=0;kNumber;k+)if(!processk.doneF)if(processk.daodaprocessk.daoda)nextproF=k;/獲取到達(dá)時(shí)刻最先的進(jìn)程/else/if2/if1/for/處理processnextproF.wancheng=processnextproF.fuwu+timeflyF;timeflyF+=processn

9、extproF.fuwu;processnextproF.doneF=true;/circle2/SJF*for(j=1;jNumber;j+)nextproS=Number+1;for(k=0;kNumber;k+)if(!processk.doneS)if(processk.daodaprocessk.fuwu)nextproS=k;/瞅取服務(wù)時(shí)間最小的進(jìn)程/else/if2/if1/for/處理processnextproS.wan=processnextproS.fuwu+timeflyS;timeflyS+=processnextproS.fuwu;processnextproS.d

10、oneS=true;/circle2*floatFz=0,Fdq=0,Sz=0,Sdq=0;/for(i=0;iNumber;i+)/processi.zhouzhuan=processi.wancheng-processi.daoda;Fz+=processi.zhouzhuan;processi.daiquan=processi.zhouzhuan/processi.fuwu;Fdq+=processi.daiquan;/processi.zhou=processi.wan-processi.daoda;Sz+=processi.zhou;processi.dai=processi.zho

11、u/processi.fuwu;Sdq+=processi.dai;/=輸出=/-if(n=1|n=3)couttendl;coutFCFS:endl;for(i=0;iNumber;i+)if(i1)cout時(shí)刻l:進(jìn)程i+1在運(yùn)行endl;)elsecout時(shí)亥1Jvvprocessi-1.wanchengvv:進(jìn)程i+l在運(yùn)行endl;)coutvvsetw(10)vv進(jìn)程IDcoutvvsetw(10)vv完成時(shí)間;coutvvsetw(10)vv”周轉(zhuǎn)時(shí)間“vv”;coutvvsetw(10)vv”帶權(quán)周轉(zhuǎn)時(shí)間endl;for(i=0;iNumber;i+)(coutsetw(10)

12、i+1coutsetw(10)setiosflags(ios:fixed)setprecision(2)processi.wanchengcoutsetw(10)setiosflags(ios:fixed)setprecision(2)processi.zhouzhuancoutsetw(10)setiosflags(ios:fixed)setprecision(2)processi.daiquanendl;)cout平均周轉(zhuǎn)時(shí)間為:setiosflags(ios:fixed)setprecision(2)Fz/Numberendl;cout平均帶權(quán)周轉(zhuǎn)時(shí)間為:setiosflags(ios:

13、fixed)setprecision(2)Fdq/Numberendl;)/-if(n=2|n=3)couttendl;coutSJF:endl;for(i=0;iNumber;i+)(coutvv”時(shí)刻vv|vv”:進(jìn)程vvi+lvv在運(yùn)行vvendl;)else(coutvv時(shí)亥卜Vvprocessi-1.wanvv:進(jìn)程vvi+1vv”在運(yùn)行vvendl;)coutvvsetw(10)vv進(jìn)程IDcoutvvsetw(10)vv”完成時(shí)間“vv”;coutsetw(10)周轉(zhuǎn)時(shí)間;coutsetw(10)帶權(quán)周轉(zhuǎn)時(shí)間endl;for(i=0;iNumber;i+)coutsetw(10)

14、i+1”;coutsetw(10)setiosflags(ios:fixed)setprecision(2)processi.wan;;coutsetw(10)setiosflags(ios:fixed)setprecision(2)processi.zhou;;coutsetw(10)setiosflags(ios:fixed)setprecision(2)processi.daiendl;cout平均周轉(zhuǎn)時(shí)間為:setiosflags(ios:fixed)setprecision(2)Sz/Numberendl;cout平均帶權(quán)周轉(zhuǎn)時(shí)間為:setiosflags(ios:fixed)set

15、precision(2)Sdq/Numberendl;coutt黨隔 我人的的的 依呵人人 照請(qǐng)請(qǐng)凱圮蛭格司 聿SJF五者n =3同n=8n=l:0 1 3 4 6隔;5 7 3 8 2 時(shí)調(diào)用FCFS和JF.n由虱山進(jìn)程工在運(yùn)行 糕S進(jìn)根在魴_士曼1弓二排崔4茬運(yùn)卷 技3 :進(jìn)程5在運(yùn)行進(jìn)程ID完成時(shí)間1212hH315.69423.UU525.H3E均期巷時(shí)間為:n.20 附帶楨周轉(zhuǎn)時(shí)間為:3.69 hress any key to contimue周轉(zhuǎn)時(shí)間帶權(quán)周轉(zhuǎn)時(shí)間1.0011.001.57進(jìn)程I。2345工委進(jìn)退3在運(yùn)行%進(jìn)程4在運(yùn)行 國(guó)程5在運(yùn)行目二進(jìn)遑1在運(yùn)行 巧:進(jìn)程2在遑行完成時(shí)間5 5017.0013.眄為,10.a0時(shí)間為L(zhǎng)92帶權(quán)周轉(zhuǎn)時(shí)間 1.00 2.29 l.fc7 2.3 2.002 一 n間格=3 至以喘. 9 klen-周轉(zhuǎn)時(shí)間 S3 16.0 5.00 21.03 4.00福川13 4 6旬隔:5 7 3 8 2司時(shí)調(diào)用FCFS和JP.n=6ress any key to continue-c:: 昂=2yn 霏者斡 慧網(wǎng)翻 田用-F Ji s;pclt- 選送味 =111 B Tt 次次入的的

溫馨提示

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