資源描述:
《實驗一--先來先服務(wù)FCFS和短作業(yè)優(yōu)先SJF進程調(diào)度算法.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、實驗一先來先服務(wù)FCFS和短作業(yè)優(yōu)先SJF進程調(diào)度算法1、需求分析(1)輸入的形式和輸入值的范圍首先輸入進程個數(shù),然后輸入進程到達的時間和服務(wù)時間,輸入完成,程序顯示FCFS和SJF算法的結(jié)果。(2)輸出的形式程序的輸出根據(jù)用戶輸入的到達時間以及服務(wù)時間,通過相應(yīng)的計算輸出其各自的完成時間,周轉(zhuǎn)時間,帶全周轉(zhuǎn)時間以及平均值,程序會先輸出FCFS的結(jié)果,然后輸入SJF的結(jié)果。3)程序所能達到的功能1)輸入進程個數(shù)n;每個進程的到達時間T1,…,Tn和服務(wù)時間S1,…,Sn。2)采用先來先服務(wù)FCFS和短作業(yè)優(yōu)先SJF分別調(diào)度進程運
2、行,計算每個進程的周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間,并且計算所有進程的平均周轉(zhuǎn)時間和帶權(quán)平均周轉(zhuǎn)時間;3)輸出:輸出計算出來的每個進程的周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、所有進程的平均周轉(zhuǎn)時間以及帶權(quán)平均周轉(zhuǎn)時間。(4)測試數(shù)據(jù),包括正確的輸入及其輸出結(jié)果和含有錯誤的輸入及其輸出結(jié)果正確輸入的結(jié)果錯誤輸入的結(jié)果1、概要設(shè)計抽象數(shù)據(jù)類型的定義:staticintMaxNum=100;//進程的最大值intArrivalTime[100];//到達時間intServiceTime[100];//服務(wù)時間intFinishTime[100];//完成時間
3、intWholeTime[100];//周轉(zhuǎn)時間doubleWeightWholeTime[100];//帶權(quán)周轉(zhuǎn)時間doubleAverageWT_FCFS,AverageWT_SJF;//平均周轉(zhuǎn)時間doubleAverageWWT_FCFS,AverageWWT_SJF;//平均帶權(quán)周轉(zhuǎn)時間intNum=0;intNowTime=0;//記錄當(dāng)前時間doubleSumWT=0,SumWWT=0;//SumWT用來計算總的周轉(zhuǎn)時間,SumWWT用來計算總的帯權(quán)周轉(zhuǎn)時間inti;intchoice;//記錄選擇主程序的流程以及
4、各程序模塊之間的層次(調(diào)用)關(guān)系:定義和初始化程序的數(shù)據(jù)輸出運算的結(jié)果進行SJF算法進行FCFS算法提示用戶輸入各數(shù)據(jù)相應(yīng)的值1、詳細(xì)設(shè)計首先定義一個臨時數(shù)組,把到達時間的數(shù)組賦值給它,然后對其進行排序,同時將原來到達時間的數(shù)組的序號給數(shù)組。從而再用一個for循環(huán),便可得到各個進程的完成時間,周轉(zhuǎn)時間,和加權(quán)周轉(zhuǎn)時間FinishTime[num1[k]]=ServiceTime[num1[k]]+FinishTime[num1[k-1]];WholeTime[num1[k]]=ServiceTime[num1[k]]+Finis
5、hTime[num1[k-1]]-tem[k];WeightWholeTime[num1[k]]=(double)WholeTime[num1[k]]/ServiceTime[num1[k]];從而得到平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間(2)SJF算法該算法默認(rèn)輸入的進程按照到達時間先后輸入先將第一個到達的進程在它的服務(wù)時間里運行,將此進程運行完成時已經(jīng)到達的進程進行排序,選擇時間最短的那一個運行,然后依次類推,如果一個服務(wù)運行完沒有其他的服務(wù)到達,則等到其他服務(wù)到達時再運行,最后得到其完成時間,這樣也就能夠求出其他的所求量。4、調(diào)
6、試分析(1)調(diào)試過程中遇到的問題以及解決方法,設(shè)計與實現(xiàn)的回顧討論和分析一開始沒有對程序是否到達進行判斷,導(dǎo)致了算法的錯誤,后來調(diào)試中發(fā)現(xiàn)及時改正解決了這個問題。(2)算法的性能分析(包括基本操作和其它算法的時間復(fù)雜度和空間復(fù)雜度的分析)及其改進設(shè)想FCFS算法比較有利于長作業(yè),而不利于短作業(yè);SJF算法能有效的降低作業(yè)的平均等待時間,提高系統(tǒng)吞吐量,但是該算法對長作業(yè)不利,沒有考慮作業(yè)的緊迫程度且該算法不一定能真正做到短作業(yè)優(yōu)先調(diào)度。改進:能夠生成一個直觀的過程的界面。(3)經(jīng)驗和體會通過本次實驗,深入理解了FCFS和SJF算
7、法的思想,培養(yǎng)了自己的動手能力,通過實踐加深了記憶。5、用戶使用說明1)輸入進程個數(shù)n2)輸入每個進程的到達時間3)輸入每個進程的服務(wù)時間6、測試結(jié)果7、附錄//zy1_my.cpp:定義控制臺應(yīng)用程序的入口點。//#includeusingnamespacestd;intmain(){voidFCFS(int*ArrivalTime,int*ServiceTime,intnum);voidSJF(int*ArrivalTime,int*ServiceTime,intnum);cout<<"請輸入進程的個數(shù)"
8、<>num;int*ArrivalTime=newint[num];int*ServiceTime=newint[num];cout<<"請輸入到達時間"<