版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗二時間片輪轉(zhuǎn)RR進程調(diào)度算法一:需求分析程序的設計的任務和目的:設計程序模擬進程的時間片輪轉(zhuǎn)RR調(diào)度過程。假設有n個進程分別在T1,…,Tn時刻到達系統(tǒng),它們需要的服務時間分別為S1,-,Sn。分別利用不同的時間片大小q,采用時間片輪轉(zhuǎn)RR進程調(diào)度算法進行調(diào)度,計算每個進程的完成時間、周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間,并且統(tǒng)計n個進程的平均周轉(zhuǎn)時間和平均帶權(quán)周轉(zhuǎn)時間。通過這次實驗,加深對進程概念的理解,進一步掌握進程狀態(tài)的轉(zhuǎn)變、進程調(diào)度的策略及對系統(tǒng)性能的評價方法。輸入的形式和輸入值的范圍為避免測試時頻繁輸入數(shù)據(jù),將測試數(shù)據(jù)放在七乂七文件中采用讀文件方法讀取數(shù)據(jù)。在同目錄下的txt文件中輸入數(shù)據(jù),第一行為進程到達時間,中間用空格隔開,第二行為進程服務時間,不同進程的服務時間之間用空格隔開。輸出的形式輸出每個時刻的進程運行狀態(tài),并且輸出計算出來的每個進程的周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、所有進程的平均周轉(zhuǎn)時間以及帶權(quán)平均周轉(zhuǎn)時間。(詳見運行截圖)程序所能達到的功能;能夠模擬進程的時間片輪轉(zhuǎn)RR調(diào)度過程,可以輸入時間片大小,然后采用時間片輪轉(zhuǎn)RR進程調(diào)度算法進行調(diào)度,可以模擬調(diào)度過程,輸出每個時刻的進程運行狀態(tài),另外也實現(xiàn)了輸出計算出來的每個進程的周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、所有進程的平均周轉(zhuǎn)時間以及帶權(quán)平均周轉(zhuǎn)時間。(4)測試數(shù)據(jù),包括正確的輸入及其輸出結(jié)果和含有錯誤的輸入及其輸出結(jié)果。作業(yè)、間片進程名ABCDE平均到達時間01234服務時間435242完成時間813181017周轉(zhuǎn)時間8121671311.2帶權(quán)周轉(zhuǎn)時間243.23.53.253.194完成時間47181317周轉(zhuǎn)時間461610139.8帶權(quán)周轉(zhuǎn)時間123.253.252.89詳見運行結(jié)果截圖2、概要設計使用鏈表創(chuàng)建隊列,用鏈表方法實現(xiàn)時間片輪轉(zhuǎn)調(diào)度。主要有主函數(shù),時間片輪轉(zhuǎn)調(diào)度函數(shù)voidRR(int*ArrivalTime,int*ServiceTime,intn,intq,LinkQueue&Q)和輸出函數(shù)voidprint(intn,intarray[]),voidprint(intn,doublearray[]);三:詳細設計時間片輪轉(zhuǎn)算法流程圖:將未完成的插入隊尾將未完成的插入隊尾程序主要設計思想:(1)創(chuàng)建進程,使用鏈表的方法,鏈表中的每個結(jié)點相當于一個進程。(2)讀入文件中進程數(shù)據(jù)(進程的到達時間和服務時間)。(3)創(chuàng)建一個進程單鏈表,作為進程隊列。(4)請用戶輸入時間片大小。(5)創(chuàng)建執(zhí)行隊列。(6)定義時間軸,初始化時間軸和執(zhí)行隊列。(7)當進程數(shù)不為零時,分配給執(zhí)行隊列隊首一個時間片。繼續(xù)有未完成進程時進程隊列的隊首進程是否到達,若到達,將其插入到執(zhí)行隊列的隊尾。執(zhí)行隊列不為空時,執(zhí)行隊列的隊首進程的,判斷是否執(zhí)行完。執(zhí)行完,該進程退出執(zhí)行隊列。(8)執(zhí)行隊列隊首是否得到過一個完整的時間片,若有則該進程插入到執(zhí)行隊列的隊
尾。(9)執(zhí)行隊列不為空時,轉(zhuǎn)到第(7)步。當執(zhí)行隊列和進程隊列都為空時,轉(zhuǎn)到第(6)步。當兩隊列都為空時,所有進程運行完,模擬結(jié)束。四:調(diào)試分析調(diào)試過程中遇到的問題即在時間片輪轉(zhuǎn)算法中由于循環(huán)使用不當導致無法實現(xiàn)預期的結(jié)果,后通過問同學,網(wǎng)上查找資料解決。算法改進:可加一個循環(huán)將讀入的進程按到達時間從先至后排列。經(jīng)驗體會:通過這次實驗,又熟悉了鏈表的使用方法,加深了對進程概念的理解,進一步掌握了進程狀態(tài)的轉(zhuǎn)變、進程調(diào)度的策略及對系統(tǒng)性能的評價方法。五:用戶使用說明1、在同目錄的txt文件中輸入進程到達時間和服務時間,第一行為進程到達時間,中間用空格隔開,第二行為進程服務時間,不同進程的服務時間之間用空格隔開。2、運行時按指示輸入,如“請輸入時間片長度”時輸入時間片大小,若退出按,繼續(xù)則繼續(xù)輸入時間片大小。六:測試結(jié)果時間片長度為2時:削]*.25@遠遠遠運運運運遠運運信信遠遠運運運運17日度邸在在在在在卷在在在在在在在任在在在Hm長掌正正正正正正正正正正正正正正正正正i削]*.25@遠遠遠運運運運遠運運信信遠遠運運運運17日度邸在在在在在卷在在在在在在在任在在在Hm長掌正正正正正正正正正正正正正正正正正ie-ll不0011220033441224428miE.k._VD王S王口王口王口主□王口玉口王口王O王0王0王|0王目王口王口壬口王口王Lt謎遇送避謎謎進進進遇避講ais13B=niiwH-lBi-u-llllUM?■===■■■1cL\xl012345t?890x2345G?M-JL1,1?It1?1,?d"■-「J'JZ刻刻刻刻刻刻均臼亦門寸寸寸.寸.寸寸寸寸S—1-nHMnHHAHHnuUDnHU□□nHHnHnHnHHHHflunD□□nHU□□rp平至2311.枷.,間2s^tsi?涕周t市-TTZT-T-T-T-T-T-T-THZIT-T-T—^1退出一邱or箱J人時間片大小時間片長度為4時:片侗一亍rrr_片侗一亍rrr_ZZIT-T.-T-TTXVJ-ZT-Z工Hlrr覆運運運運運運運倒M在在在在在在在在在在在在在在在11韜正正正正正正正正正正正正正正正正正正13仍r00R_Hl1122223344442一日-一日-專aC王D王曰王O王口王口王口壬口王口王口王口王口王王口王口王口王口王8&。進謎進避避避a普進進謎謎避避避避is字&柏廨-0123456789012345G744larHn點r一,nmX:美居辛出?刻?刻刻^^^^^^^刻.!1]刻刻nHnHHHHHHHHQuBBB曰曰曰曰曰日日日日Br7-T-#include<iostream>#include<iomanip>#include<fstream>#include<sstream>usingnamespacestd;typedefintQElemType;#defineOK1#defineERROR0#defineOVERFLOW-1typedefintStatus;typedefstructQNode{//定義隊列節(jié)點QElemTypedata;structQNode*next;}QNode,*QueuePtr;typedefstruct{//定義隊列QueuePtrfront;QueuePtrrear;}LinkQueue;StatusInitQueue(LinkQueue&Q);//初始化隊列StatusDestroyQueue(LinkQueue&Q);//刪除隊列StatusEnQueue(LinkQueue&Q,QElemTypee);//進入隊列intDeQueue(LinkQueue&Q,QElemTypee);//離開隊列boolQueueEmpty(LinkQueue&Q);//判讀隊列是否為空〃創(chuàng)建隊列QLinkQueue〃創(chuàng)建隊列QstaticconstintMaxNum=100;intn,q,ArrivalTime[MaxNum],ServiceTime[MaxNum],FinishedTime[MaxNum],WholeTime[MaxNum];//定義進程調(diào)度中的時間變量doubleWeightWholeTime[MaxNum],Average_WT,Average_WWT;voidprint(intn,intarray[]);voidprint(intn,doublearray[]);voidRR(int*ArrivalTime,int*ServiceTime,intn,intq,LinkQueue&Q);voidmain(){//讀文件,到達時間和完成時間intia,ib,i,q;ifstreamin("test.txt");strings;getline(in,s);istringstreamsin(s);for(i=0;sin>>ia;i++)ArrivalTime[i]=ia;getline(in,s);istringstreamsinn(s);for(i=0;sinn>>ib;i++)ServiceTime[i]=ib;intn=i;〃輸出進程數(shù)、到達時間、服務時間cout<<"輸入進程數(shù)(n):"<<n<<endl;cout<<"Arrivaltime:";print(i,ArrivalTime);cout<<"Servicetime:";print(i,ServiceTime);〃輸入時間片長度cout<<"請輸入時間片長度(q):";cin>>q;cout<<"時間片輪轉(zhuǎn)算法RR"<<endl;RR(ArrivalTime,ServiceTime,n,q,Q);while(q){//循環(huán)輸入時間片長度q,直到q==0結(jié)束cout<<endl<<"退出-->0or輸入時間片大?。?;cin>>q;if(q==0)return;RR(ArrivalTime,ServiceTime,n,q,Q);}}voidRR(int*ArrivalTime,int*ServiceTime,intn,intq,LinkQueue&Q)(//初始化模塊intcountTime=0,e;intSTime[MaxNum],pushed[MaxNum];for(inti=0;i<n;i++)(STime[i]=ServiceTime[i];pushed[i]=0;}InitQueue(Q);EnQueue(Q,0);pushed[0]=1;inttime=0;//時間片輪轉(zhuǎn)模塊while(QueueEmpty(Q)==false)(e=DeQueue(Q,e);if(STime[e]>q)(STime[e]=STime[e]-q;countTime+=q;}else(countTime+=STime[e];STime[e]=0;FinishedTime[e]=countTime;}while(time<countTime)(if(STime>0)cout<<"時刻"<<setw(2)<<time<<":進程"<<e<<"正在運行"<<endl;time++;}for(i=1;i<n;i++)if(STime!=0&&i!=e&&ArrivalTime[i]<countTime&&pushed[i]==0||STime!=0&&i!=e&&ArrivalTime[i]二二countTime){EnQueue(Q,i);pushed[i]=1;}}if(STime[e]>0)EnQueue(Q,e);}//計算模塊Average_WT=0,Average_WWT=0;for(i=0;i<n;i++){WholeTime[i]=FinishedTime[i]-ArrivalTime[i];WeightWholeTime[i]=(double)(WholeTime[i]*1.000000/ServiceTime[i]);Average_WT+=WholeTime[i];Average_WWT+=WeightWholeTime[i];}Average_WT/=n;Average_WWT/=n;//輸出模塊cout<<"完成:";print(n,FinishedTime);cout<<"周轉(zhuǎn):";print(n,WholeTime);cout<<"帶權(quán)周轉(zhuǎn)時間:";print(n,WeightWholeTime);cout<<"平均周轉(zhuǎn)時間為:"<<Average_WT<<endl;cout<<"平均帶權(quán)周轉(zhuǎn)時間為:"<<Average_WWT<<endl;DestroyQueue(Q);}StatusInitQueue(LinkQueue&Q){Q.front二Q.rear=(QueuePtr)malloc(sizeof(QNode));if(!Q.front)exit(OVERFLOW);Q.front->next=NULL;returnOK;}StatusDestroyQueue(LinkQueue&Q){while(Q.front)(Q.rear=Q.front->next;free(Q.front);Q.front=Q.rear;}returnOK;}StatusEnQueue(LinkQueue&Q,QElemTypee){QueuePtrp=(QueuePtr)malloc(sizeof(QNode));if(!p)exit(OVERFLOW);p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p;returnOK;}intDeQueue(LinkQueue&Q,QElemTypee){QueuePtrp;if(Q.front==Q.rear)returnERROR;p=Q.front->next;e=p->data;Q.front->next=p->nex
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 深度解析(2026)GBT 19212.11-2020變壓器、電抗器、電源裝置及其組合的安全 第11部分:高絕緣水平分離變壓器和輸出電壓超過1000V的分離變壓器的特殊要求和試驗
- 財務面試寶典財務知識面試題及答案
- 光纖融接設備項目可行性分析報告范文
- 實戰(zhàn)面試題員工自助崗運營專員崗位解析與參考答案
- 物流主管面試題庫與參考答案
- 系統(tǒng)集成項目經(jīng)理的職位全解及答案
- 特殊人群毒理數(shù)據(jù)亞組展示策略
- 深度解析(2026)《GBT 18481-2001電能質(zhì)量 暫時過電壓和瞬態(tài)過電壓》
- 電信行業(yè)網(wǎng)絡運營總監(jiān)面試題網(wǎng)絡優(yōu)化與安全保障
- 工程項目經(jīng)理職位的招聘面準備題集
- 2025四川成都經(jīng)濟技術(shù)開發(fā)區(qū)(龍泉驛區(qū))區(qū)屬國有企業(yè)專業(yè)技術(shù)人員招聘18人筆試考試參考試題及答案解析
- 地鐵車站設施與服務優(yōu)化策略
- 文化創(chuàng)業(yè)街區(qū)創(chuàng)意
- 年會合同協(xié)議書模板
- 中西醫(yī)結(jié)合治療類風濕關(guān)節(jié)炎疼痛
- 2025國際胰腺病學會急性胰腺炎修訂指南解讀課件
- 雨課堂學堂云在線《中國馬克思主義與當代(北京化工大學 )》單元測試考核答案
- 貴州省貴陽市2025-2026學年高三上學期11月質(zhì)量監(jiān)測化學試卷(含答案)
- 機場設備維修與保養(yǎng)操作手冊
- 動脈穿刺法教案(2025-2026學年)
- 2025年黨的二十屆四中全會精神宣講稿及公報解讀輔導報告
評論
0/150
提交評論