




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實驗報告:時間片輪轉(zhuǎn)RR進程調(diào)度算法題目:時間片輪轉(zhuǎn)算法的實現(xiàn)班級:軟件工程2班 姓名:代其全 學號:1025111022完成日期:2012/10/23需求分析程序要實現(xiàn)時間片輪轉(zhuǎn)進程調(diào)度算法接收用戶輸入的進程數(shù)(n),各個進程的進程名,到達時間(T1.Tn)和 服務(wù)時間(S1.Sn),以及時間片大小q。輸出各個進程首次運行的時間 輸出各個進程的完成時間,周轉(zhuǎn)時間,帶權(quán)周轉(zhuǎn)時間,所有進程的平均周 轉(zhuǎn)時間,以及帶權(quán)平均周轉(zhuǎn)時間。 測試數(shù)據(jù)為:進程數(shù)n為5,各進程的名字,到達時間,服務(wù)時間分別 為:a 0 4 ; b 1 3; c 2 5; d 3 2; e 4 4。時間片大小 q 為 1 和 5
2、。概要設(shè)計抽象數(shù)據(jù)類型的定義:int ArrivalTime100;/ 到達時間int ServiceTime100;/月艮務(wù)時間int FinishTime100;/完成時間int WholeTime100;/周 轉(zhuǎn)時間double WeightWholeTime100;/帶權(quán)周轉(zhuǎn)時間double AverageWT,AverageWWT;bool Finished100;/ 完成標識typedef struct QNode一char name;/進程標識int arrivaltime;/ 到達時間int servicetime;/ 服務(wù)時間int workedtime; /進程已經(jīng)運行的時
3、間bool status;表示進程的狀態(tài),1表示已經(jīng)結(jié)束,0表示還未執(zhí)行struct QNode *next;QNode, *QueuePtr;typedef structQueuePtr front;/ 隊頭指針QueuePtr rear;/ 隊尾指針LinkQueue;主程序的流程:調(diào)用Init()函數(shù)初始化到達時間,服務(wù)時間,時間片等進程信息, 調(diào)度RR ()函數(shù)實現(xiàn)輪轉(zhuǎn)調(diào)度發(fā),最后調(diào)度print()函數(shù)輸出運算結(jié)果詳細設(shè)計初始化函數(shù)void init()int cputime;int x,y;char name;coutn; 進程個數(shù)coutendl;for(int i=0;in;i+
4、)QNode node;cout請輸入第i+1namexy;=name;node.arrivaltime=ArrivalTimei=x;node.servicetime=ServiceTimei=y;node.workedtime=0;node.status=Finishedi=0;node.next=NULL;arrayi=node;/cout隊中增加一個元素endl;coutendl;/各個進程的到達時間和服務(wù)時間coutcputime;q=cputime;/時間片大小RR()函數(shù)void RR()int temp;QNode e;int count1=0;按到達時間先后
5、排序進程信息數(shù)組for(int i=0;in;i+)for(int j=1;jarrayi+1.arrivaltime)temp=arrayi.arrivaltime;arrayi.arrivaltime=arrayi+1.arrivaltime;arrayi.arrivaltime=temp;/此時,array數(shù)組中的元素都是按到達時間從小到大排列的for(i=0;in;i+)if(Finishedi=0)count1+;for(intj=0;jn;j+)if(arrayj.arrivaltime=currentTime)EnQueue(queue,arrayj);/將到達時間為當前時間的進
6、程加入到 隊列中if(count1!=0)/依然有進程未完成for(intj=0;j=(*queue.front-next).servicetime)/ 時間片大于進程服務(wù)時間時, 進程一次性執(zhí)行完,進入下一進程/cout!;cout 時 亥【J currentTime”:進 程next-name”開始執(zhí)行endl;for(int x=0;xnext).servicetime;x+)currentTime+;for(int y=0;ynext).servicetime;/ 更新 當前時間cout當前時間為:currentTimenext).workedtimenext).servicetime
7、)/ 進程已 工作時間小于服務(wù)時間時if(*queue.front-next).workedtime=0)/ 進程已工作時間為零 時/ cout!;cout 時亥【JcurrentTime”: 進 程next).name”開始執(zhí)行endl;/ currentTime=currentTime+q;/更 新當前時間 for(int x=0;xq;x+)currentTime+;for(int j=0;jnext).workedtime+=q;/ 更新進程已工作時 間DeQueue(queue,e);/ 將該進程出隊EnQueue(queue,e);/將該進程入隊,加入到了隊列的末尾 else/進程
8、工作時間不為零且未達到服務(wù)時間時for(inti=0;inext).workedtime!=(*queue.front-next).servicetime;i+ +)currentTime+;/ 當前時間加一 for(int j=0;jnext).workedtime=(*queue.front-next).servicetime)/ 已工作 時間達到要求的服務(wù)時間(*queue.front-next).status=1;count+;Finishedcount=1;DeQueue(queue,e);FinishTimecount=currentTime;/ 當前時間為完 成時間,返回存放入F
9、inishTime數(shù)組中3.輸出函數(shù)void print(int n)cout完成時間:;for(int i=0;in;i+)coutFinishTimei;coutendl;cout周轉(zhuǎn)時間:;for(i=0;in;i+)WholeTimei=FinishTimei-ArrivalTimei;coutWholeTimei;coutendl;cout帶權(quán)周轉(zhuǎn)時間:;for(i=0;in;i+)WeightWholeTimei=double(WholeTimei)/ServiceTimei;coutWeightWholeTimei;coutendl;for(i=1;in;i+)WholeTime
10、0+=WholeTimei;AverageWT=double(WholeTime0)/n;cout”平 均周轉(zhuǎn)時間AverageWTendl;for(i=1;in;i+)WeightWholeTime0+=WeightWholeTimei;AverageWWT=WeightWholeTime0/n;cout帶權(quán)平均周轉(zhuǎn)時間:AverageWWTnext=NULL;return 1;int EnQueue(LinkQueue &q,QNode &e)QueuePtr p=(QueuePtr)malloc(sizeof(QNode);if(!p)return 0;p-name=;p-a
11、rrivaltime=e.arrivaltime;p-servicetime=e.servicetime;p-status=e.status;p-workedtime=e.workedtime;p-next=NULL;q.rear-next=p;q.rear=p;return 1;int DeQueue(LinkQueue &q,QNode &e)if(q.rear=q.front)return 0;QueuePtr p=q.front-next;=p-name;e.arrivaltime=p-arrivaltime;e.servicetime=p-servicetime;e.st
12、atus=p-status;e.workedtime=p-workedtime;q.front-next=p-next;if(q.rear=p)q.rear=q.front;free(p);return 1;調(diào)試分析在時間片大于所有進程的服務(wù)時間時,程序正常運行,當時間片小于某些進 程的服務(wù)時間時,程序不能輸出正確的運算結(jié)果。用戶使用說明根據(jù)提示輸入進程的個數(shù),各進程的名字,到達時間,服務(wù)時間,時間片大小等。按下回車鍵得到輸出結(jié)果。六.測試結(jié)果當輸入進程信息,設(shè)定時間片大小q為5時,運行結(jié)果為:C:UsersAdmlnistratorXDesktopXDebugRR (lj.KeH青輸入進程的
13、個數(shù)/睛輸入第1個進程的名字、到達時間和服務(wù)時間迫0 4R青輸入第2個進程的名字、到達時間和服務(wù)時間:b 1 3R青輸入第3個進程的名字、到達時間和服務(wù)時間* 2 5H青輸入第4個進程的名字、到達時間和服務(wù)時間/ 3 2H青輸入第s個進程的名字、到達時間和服務(wù)時間沖4 44 J:丸丸丸E、1 一-c 一-c 丁 口A口 I . 111,.- 111,.- h. J i 0 J片一 可口王eg任eg王4Han 入0:4:7:1214人07周周平 Ses 兀屈正壬市PFde? :aki若王呈間to9時y:周y4 -15 -1青輸入第S個進程的名字、到達時間和服務(wù)時間沖4 4青輸入第4個進程的名字、到達時間和服務(wù)時間河3 2青輸入第3個進程的名
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 配件買賣合同
- 湖北省十堰市2024-2025學年高二上學期1月期末地理試題 含解析
- 日常辦公事務(wù)處理文書詳案
- 融資借款合同協(xié)議書
- 數(shù)據(jù)傳輸效率評估表
- 產(chǎn)品分銷合同協(xié)議規(guī)范書
- 中學生科普知識解讀征文
- 電商平臺在線客服機器人技術(shù)支持協(xié)議
- 《現(xiàn)代酒店管理基礎(chǔ)》(第二版)課件 任務(wù)9 酒店集團化管理
- 幼兒啟蒙成語故事解讀
- 2024年3、6、9月青少年軟件編程Python等級考試一級真題(全3套 含答案)
- 部編版小學語文三年級語文下冊第三單元集體備課教材分析解讀
- 2023年河北省安全生產(chǎn)舉報和獎勵答試題及答案
- 教學講解課件-杜鵑花
- 護理查對制度-課件
- 設(shè)備清單-15年物聯(lián)網(wǎng)智慧生活實訓平臺專業(yè)版
- 漢字偏旁部首表及例字
- 2021年中國遠洋海運集團有限公司招聘筆試試題及答案解析
- 《大學物理學》課程教學大綱
- 勵志班會你想成為什么樣人
- ISOTS-9002:2022質(zhì)量管理體系ISO9001:2022-應(yīng)用指南
評論
0/150
提交評論