時間片輪轉(zhuǎn)調(diào)度算法實驗報告材料_第1頁
時間片輪轉(zhuǎn)調(diào)度算法實驗報告材料_第2頁
時間片輪轉(zhuǎn)調(diào)度算法實驗報告材料_第3頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、XX大學操作系統(tǒng)實驗報告姓名:學號:班級:實驗日期: 實驗名稱:時間片輪轉(zhuǎn)RR進程調(diào)度算法實驗二時間片輪轉(zhuǎn)RR進程調(diào)度算法1. 實驗?zāi)康模和ㄟ^這次實驗,理解時間片輪轉(zhuǎn)RR進程調(diào)度算法的運行原理,進一步掌握進程狀態(tài)的轉(zhuǎn)變、進程調(diào)度的策略及對系統(tǒng)性能的評價方法。2. 需求分析(1)輸入的形式和輸入值的范圍;輸入:進程個數(shù) n范圍:0 n/i,3rDject5RRCehLigRn.exe穩(wěn)鑼簫囂序爲心程名=i.k從4、到大輸人詛程到達時間=litr liif h*hhhC Auii vl jjrut if ua i_u t Ji!# fo lluwiiiy - 迸程容 到達時面 膈務(wù)時閭a.a2&*

2、!hA0同怖吋IT戦時同-務(wù)咸時闔2H 啟諸按到達時間的幀丿字氓從輛入進樨施牌廿I富:t h h h h總帶嘆周牡時間2、概要設(shè)計所有抽象數(shù)據(jù)類型的定義:static int MaxNum=100int ArrivalTime /到達時間int ServiceTime /服務(wù)時間int Fi ni shedTime /結(jié)束時間int WholeTime /周轉(zhuǎn)時間double WeightWholeTime /帶權(quán)周轉(zhuǎn)時間double AverageWT / 平均周轉(zhuǎn)時間double AverageWWT /平均帶權(quán)周轉(zhuǎn)時間主程序的流程:變量初始化接受用戶輸入的n, q , T1.Tn, S1

3、.Sn;進行進程調(diào)度,計算進程的開始運行時間、結(jié)束時間、執(zhí)行順序、周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間;計算所有進程的平均周轉(zhuǎn)時間、平均帶權(quán)周轉(zhuǎn)時間;按照格式輸出調(diào)度結(jié)果。各程序模塊之間的層次(調(diào)用)關(guān)系Main函數(shù)通過對In put函數(shù)進行調(diào)用,對函數(shù)的成員變量進行賦值,再通過RRAIgorithm函數(shù)求出題目要求的各個數(shù)據(jù)結(jié)果,最后通過display函數(shù)對結(jié)果進行格式輸出。3、詳細設(shè)計實現(xiàn)程序模塊的具體算法。void RRAIgorithm()char processMoment1OO; /存儲每個時間片p對應(yīng)的進程名稱RRqueue.push(RRarray0);int processMome ntP

4、o int = 0;int Curre ntTime=0;int tempTime; /聲明此變量控制CurrentTime的累加時間,當前進程的服務(wù)時間小于時間片q的時候,起到重要作用int i=1; /指向還未處理的進程的下標int finalProcessNumber = 0; /執(zhí)行RR算法后,進程的個數(shù)int processTime50;/Curre ntTime的初始化if (RRarray0.ServiceTime=q)Curre ntTime = q;elseCurre ntTime = RRarrayO.ServiceTime;while(!RRqueue.empty()fo

5、r (int j=i;j=RRarrayj.ArrivalTime)RRqueue.push(RRarrayj);i+;if (RRqueue.fro nt().ServiceTimeq)tempTime = RRqueue.fr on t().ServiceTime;elsetempTime = q;RRqueue.fro nt().ServiceTime-= q; /進程每執(zhí)行一次,就將其服務(wù)時間-q/將隊首進程的名稱放入數(shù)組中processMome ntprocessMome ntPoi nt = RRqueue.fro nt( ).n ame;processMome ntPo in t

6、+;processTimefi nalProcessNumber = tempTime;fin alProcessNumber+;if (RRqueue.fro nt().ServiceTime = 0) /把執(zhí)行完的進程退出隊列/RRqueue.fro nt().Fi nishedTime = Curre ntTime;RRqueue.pop(); /如果進程的服務(wù)時間小于等于,即該進程已經(jīng)服務(wù)完了,將其退棧else/將隊首移到隊尾RRqueue.push(RRqueue.fro nt();RRqueue.pop();Curre ntTime += tempTime;/ 進程輸出處理每個時間

7、段對應(yīng)的執(zhí)行的進程coutvv 各進程的執(zhí)行時刻信息: vvsetw(2)vvprocessTime0vv時刻;processTimefi nalProcessNumber=0;int time = processTime0;int count = 0;for (i=0;ifi nalProcessNumber;i+)count = 0;coutsetw(3)vvprocessMome ntivsetw(3)ve ndl;while(RR!=processMomenti & countvn)coun t+;RRarrayco un t.Fi nishedTime

8、= time;if (ifi nalProcessNumber - 1)coutsetw(3)time時刻 setw(2)timeprocessTimei+1時刻setw(3);time += processTimei+1; coute ndl;/周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、平均周轉(zhuǎn)時間、帶權(quán)平均周轉(zhuǎn)時間的計算/1. 周轉(zhuǎn)時間=完成時間-到達時間2.帶權(quán)周轉(zhuǎn)時間=周轉(zhuǎn)時間/服務(wù)時間for ( i=0;i n;i+) RRarrayi.WholeTimeRRarrayi.Fi nishedTimeRRarrayi.ArrivalTime;RRarrayi.WeightWholeTime(double

9、)RRarrayi.WholeTime/RRarrayi.ServiceTime;double x=0,y=0;for (i=0;i n ;i+)x += RRarrayi.WholeTime;y += RRarrayi.WeightWholeTime;AverageWT = x/n;AverageWWT = y/n;4、調(diào)試分析(1)調(diào)試過程中遇到的問題以及解決方法,設(shè)計與實現(xiàn)的回顧討論和分析 在算法設(shè)計時,由于一開始不知道如何將位于隊首的進程,在執(zhí)行完后如何移至隊尾進行循環(huán),所以思考了很久,后來想到將隊首進程進行重新壓入隊列 從而解決了此問題。(2)算法的性能分析每個進程被分配一個時間段,

10、即該進程允許運行的時間。如果在時間片結(jié)束 時進程還在運行,則CPU將被剝奪并分配給另一個進程。如果進程在時間片結(jié)束 前阻塞或結(jié)束,則CPU當即進行切換。調(diào)度程序所要做的就是維護一張就緒進程 列表,當進程用完它的時間片后,它被移到隊列的末尾。(3)經(jīng)驗體會通過本次實驗,深入理解了時間片輪轉(zhuǎn) RR進程調(diào)度算法的思想,培養(yǎng)了自 己的動手能力,通過實踐加深了記憶。5、用戶使用說明程序的使用說明,列出每一步的操作步驟輸入進程個數(shù)和時間篇長度7、附錄帶注釋的源程序,注釋應(yīng)清楚具體#i nclude #in elude #i nclude #in elude #defi ne MaxNum 100using

11、 n amespace std;typedef structchar n ame;int ArrivalTime;int ServiceTime;int Fini shedTime;int WholeTime;double WeightWholeTime;RR;static queueRRqueue; /聲明一個隊列static double AverageWT =0,AverageWWT=0; static int q; /時間片static int n; /進程個數(shù)static RR RRarrayMaxNum; /進程結(jié)構(gòu)void In put()/文件讀取模式ifstream in D

12、ata;in Data.ope n(./data4.txt);/data.txt 表示q = 4的RR調(diào)度算法 /data2.txt 表示q = 1的RR調(diào)度算法 in Data n;in Dataq;for (int i=0;in;i+)in DataRRarrayi. name;for (i=0;i n ;i+)in DataRRarrayi.ArrivalTime;for (i=0;i n ;i+)in DataRRarrayi.ServiceTime;/用戶輸入模式cout* *n;coutvv請輸入時間片q :;cinq;coutvv請按到達時間的順序依次輸入進程名:e ndl;fo

13、r (i=0;i RRarrayi. name;coutvv請從小到大輸入進程到達時間:e ndl;for (i=0;i RRarrayi.ArrivalTime;coutvv請按到達時間的順序依次輸入進程服務(wù)時間: RRarrayi.ServiceTime; coutvv* *vve ndl;/輸出用戶所輸入的信息coutvvThe in formatio n of processes is the follow in g:vve ndl;coutvvsetw(10)vv 進程名vv;coutvvsetw(10)vv 到達時間vv;coutvvsetw(10)vv服務(wù)時間vv vvendl;

14、for ( i=0;i vn ;i+)coutsetw(10)vvRR;coutvsetw(10)vvRRarrayi.ArrivalTimev;coutvsetw(10)vvRRarrayi.ServiceTimev e ndl;cout*=q)Curre ntTime = q;elseCurren tTime = RRarray0.ServiceTime;while(!RRqueue.empty()for(int j=i;j=RRarrayj.ArrivalTime)RRqueue.push(RRarrayj);i+;if (RRqueue.fron t().Serv

15、iceTimeq)tempTime = RRqueue.fro nt().ServiceTime;elsetempTime = q;RRqueue.fro nt().ServiceTime-= q; /進程每執(zhí)行一次,就將其服務(wù)時間-q/將隊首進程的名稱放入數(shù)組中processMome ntprocessMome ntPoi nt = RRqueue.fro nt( ).n ame;processMome ntPo in t+;processTimefi nalProcessNumber = tempTime;fin alProcessNumber+;if (RRqueue.fro nt().

16、ServiceTime = 0) /把執(zhí)行完的進程退出隊列/RRqueue.fro nt().Fi nishedTime = Curre ntTime;RRqueue.pop(); /如果進程的服務(wù)時間小于等于,即該進程已經(jīng)服務(wù)完了,將其退棧else/將隊首移到隊尾RRqueue.push(RRqueue.fro nt();RRqueue.pop();Curre ntTime += tempTime;/進程輸出處理每個時間段對應(yīng)的執(zhí)行的進程coutvv各進程的執(zhí)行時刻信息: vvsetw(2)vvprocessTime0vv 時刻;processTimefi nalProcessNumber=

17、O;int time = processTime0;int count = 0;for (i=0;ifi nalProcessNumber;i+)count = 0;coutsetw(3)vvprocessMome ntivsetw(3)ve ndl;while(RRarrayco un t. name!=processMome nti & countvn)coun t+;RRarrayco un t.Fi nishedTime = time;if (ifi nalProcessNumber - 1)coutsetw(3)time時刻 setw(2)timeprocessTimei+1時刻se

18、tw(3);time += processTimei+1; coute ndl;/周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、平均周轉(zhuǎn)時間、帶權(quán)平均周轉(zhuǎn)時間的計算/1. 周轉(zhuǎn)時間=完成時間-到達時間2.帶權(quán)周轉(zhuǎn)時間=周轉(zhuǎn)時間/服務(wù)時間for ( i=0;i n ;i+)RRarrayi.WholeTime=RRarrayi.F ini shedTimeRRarrayi.ArrivalTime;RRarrayi.WeightWholeTime (double)RRarrayi.WholeTime/RRarrayi.ServiceTime;double x=0,y=0;for (i=0;i n ;i+)x += RRarrayi.WholeTime;y += RRarrayi.WeightWho

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論