<span id="plx27"><var id="plx27"></var></span>
<dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>
  • 歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
    裝配圖網(wǎng)
    ImageVerifierCode 換一換
    首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

    時間片輪轉(zhuǎn)調(diào)度算法實驗報告

    • 資源ID:157060813       資源大小:57KB        全文頁數(shù):10頁
    • 資源格式: DOC        下載積分:10積分
    快捷下載 游客一鍵下載
    會員登錄下載
    微信登錄下載
    三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
    二維碼
    微信掃一掃登錄
    下載資源需要10積分
    郵箱/手機:
    溫馨提示:
    用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
    支付方式: 支付寶    微信支付   
    驗證碼:   換一換

     
    賬號:
    密碼:
    驗證碼:   換一換
      忘記密碼?
        
    友情提示
    2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
    3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
    4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
    5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

    時間片輪轉(zhuǎn)調(diào)度算法實驗報告

    .wd.xx大學(xué)操作系統(tǒng)實驗報告姓名:學(xué)號:班級:實驗日期:實驗名稱:時間片輪轉(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<=100 時間片q 依次輸入進程名進程到達(dá)時間進程服務(wù)時間(2) 輸出的形式進程名到達(dá)時間服務(wù)時間完成時間周轉(zhuǎn)時間帶權(quán)周轉(zhuǎn)時間所有進程平均周轉(zhuǎn)時間:所有進程平均帶權(quán)周轉(zhuǎn)時間:(3) 程序所能到達(dá)的功能1) 進程個數(shù)n,輸入時間片大小q,每個進程的到達(dá)時間T1, ,Tn和服務(wù)時間S1, ,Sn。2要求時間片輪轉(zhuǎn)法RR調(diào)度進程運行,計算每個進程的周轉(zhuǎn)時間和帶權(quán)周轉(zhuǎn)時間,并且計算所有進程的平均周轉(zhuǎn)時間和帶權(quán)平均周轉(zhuǎn)時間;3輸出:模擬整個調(diào)度過程,輸出每個時刻的進程運行狀態(tài);4輸出:輸出計算出來的每個進程的周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、所有進程的平均周轉(zhuǎn)時間以及帶權(quán)平均周轉(zhuǎn)時間。(4) 測試數(shù)據(jù),包括正確的輸入及其輸出結(jié)果和含有錯誤的輸入及其輸出結(jié)果。正確輸入:錯誤輸入:2、概要設(shè)計所有抽象數(shù)據(jù)類型的定義:static int MaxNum=100int ArrivalTime/到達(dá)時間 int ServiceTime/服務(wù)時間 int FinishedTime/完畢時間 int WholeTime/周轉(zhuǎn)時間 double WeightWholeTime/帶權(quán)周轉(zhuǎn)時間double AverageWT /平均周轉(zhuǎn)時間double AverageWWT /平均帶權(quán)周轉(zhuǎn)時間主程序的流程:l 變量初始化l 承受用戶輸入的n,q ,T1.Tn,S1.Sn;l 進展進程調(diào)度,計算進程的開場運行時間、完畢時間、執(zhí)行順序、周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間;l 計算所有進程的平均周轉(zhuǎn)時間、平均帶權(quán)周轉(zhuǎn)時間;l 按照格式輸出調(diào)度結(jié)果。各程序模塊之間的層次(調(diào)用)關(guān)系Main函數(shù)通過對Input函數(shù)進展調(diào)用,對函數(shù)的成員變量進展賦值,再通過RRAlgorithm函數(shù)求出題目要求的各個數(shù)據(jù)結(jié)果,最后通過display函數(shù)對結(jié)果進展格式輸出。3、詳細(xì)設(shè)計實現(xiàn)程序模塊的具體算法。void RRAlgorithm() char processMoment100; /存儲每個時間片p對應(yīng)的進程名稱 RRqueue.push(RRarray0); int processMomentPoint = 0; int CurrentTime=0; int tempTime; /聲明此變量控制CurrentTime的累加時間,當(dāng)前進程的服務(wù)時間小于時間片q的時候,起到重要作用 int i=1; /指向還未處理的進程的下標(biāo) int finalProcessNumber = 0; /執(zhí)行RR算法后,進程的個數(shù) int processTime50; /CurrentTime的初始化 if (RRarray0.ServiceTime>=q) CurrentTime = q; else CurrentTime = RRarray0.ServiceTime; while(!RRqueue.empty() for (int j=i;j<n;j+) /使得滿足進程的到達(dá)時間小于當(dāng)前時間的進程都進入隊列 if (RRarrayj.name!=NULL && CurrentTime >= RRarrayj.ArrivalTime) RRqueue.push(RRarrayj); i+; if (RRqueue.front().ServiceTime<q) tempTime = RRqueue.front().ServiceTime; else tempTime = q; RRqueue.front().ServiceTime -= q; /進程每執(zhí)行一次,就將其服務(wù)時間 -q /將隊首進程的名稱放入數(shù)組中 processMomentprocessMomentPoint = RRqueue.front().name; processMomentPoint+; processTimefinalProcessNumber = tempTime; finalProcessNumber+; if (RRqueue.front().ServiceTime <= 0) /把執(zhí)行完的進程退出隊列 /RRqueue.front().FinishedTime = CurrentTime; RRqueue.pop(); /如果進程的服務(wù)時間小于等于,即該進程已經(jīng)服務(wù)完了,將其退棧 else /將隊首移到隊尾 RRqueue.push(RRqueue.front(); RRqueue.pop(); CurrentTime += tempTime; /進程輸出處理 每個時間段對應(yīng)的執(zhí)行的進程 cout<<"各進程的執(zhí)行時刻信息:"<<endl; cout<<" "<<"0時刻 -> "<<setw(2)<<processTime0<<"時刻" processTimefinalProcessNumber=0; int time = processTime0; int count = 0; for (i=0;i<finalProcessNumber;i+) count = 0; cout<<setw(3)<<processMomenti<<setw(3)<<endl; while(RRarraycount.name!=processMomenti && count<n) count+; RRarraycount.FinishedTime = time; if (i<finalProcessNumber - 1) cout<<setw(3)<<time<<"時刻"<<" -> "<<setw(2)<<time + processTimei+1<<"時刻"<<setw(3); time += processTimei+1; cout<<endl; /周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、平均周轉(zhuǎn)時間、帶權(quán)平均周轉(zhuǎn)時間的計算 /1. 周轉(zhuǎn)時間 = 完成時間 - 到達(dá)時間 /2. 帶權(quán)周轉(zhuǎn)時間 = 周轉(zhuǎn)時間/服務(wù)時間 for ( i=0;i<n;i+) RRarrayi.WholeTime = RRarrayi.FinishedTime - RRarrayi.ArrivalTime; RRarrayi.WeightWholeTime = (double)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算法的性能分析每個進程被分配一個時間段,即該進程允許運行的時間。如果在時間片完畢時進程還在運行,那么CPU將被剝奪并分配給另一個進程。如果進程在時間片完畢前阻塞或完畢,那么CPU當(dāng)即進展切換。調(diào)度程序所要做的就是維護一張就緒進程列表,當(dāng)進程用完它的時間片后,它被移到隊列的末尾。3經(jīng)歷體會通過本次實驗,深入理解了時間片輪轉(zhuǎn)RR進程調(diào)度算法的思想,培養(yǎng)了自己的動手能力,通過實踐加深了記憶。5、用戶使用說明程序的使用說明,列出每一步的操作步驟。輸入進程個數(shù)和時間篇長度開場進程運行時間-時間片時間運行隊首進程按到達(dá)時間從小到大次序輸入進程名,到達(dá)時間和預(yù)計服務(wù)時間運行時間=0Y運行完成,將進程從隊列中取出中短進程,進程調(diào)至隊列尾部N輸出結(jié)果完畢7、附錄帶注釋的源程序,注釋應(yīng)清楚具體#include <iostream> #include <queue> #include <iomanip> #include <fstream> #define MaxNum 100 using namespace std; typedef struct char name; int ArrivalTime; int ServiceTime; int FinishedTime; int WholeTime; double WeightWholeTime; RR; static queue<RR>RRqueue; /聲明一個隊列 static double AverageWT =0,AverageWWT=0; static int q; /時間片 static int n; /進程個數(shù) static RR RRarrayMaxNum; /進程構(gòu)造 void Input() /文件讀取模式 ifstream inData; inData.open("./data4.txt"); /data.txt表示q = 4的RR調(diào)度算法 /data2.txt表示q = 1的RR調(diào)度算法 inData>>n; inData>>q; for (int i=0;i<n;i+) inData>>RRarrayi.name; for (i=0;i<n;i+) inData>>RRarrayi.ArrivalTime; for (i=0;i<n;i+) inData>>RRarrayi.ServiceTime; /用戶輸入模式 cout<<"*"<<endl; cout<<"請輸入進程個數(shù) n : " cin>>n; cout<<"請輸入時間片 q : " cin>>q; cout<<"請按到達(dá)時間的順序依次輸入進程名:"<<endl; for (i=0;i<n;i+) cin>>RRarrayi.name; cout<<"請從小到大輸入進程到達(dá)時間:"<<endl; for (i=0;i<n;i+) cin>>RRarrayi.ArrivalTime; cout<<"請按到達(dá)時間的順序依次輸入進程服務(wù)時間:"<<endl; for (i=0;i<n;i+) cin>>RRarrayi.ServiceTime; cout<<"*"<<endl; /輸出用戶所輸入的信息 cout<<"The information of processes is the following:"<<endl; cout<<setw(10)<<"進程名"<<" " cout<<setw(10)<<"到達(dá)時間"<<" " cout<<setw(10)<<"服務(wù)時間"<<" "<<endl; for ( i=0;i<n;i+) cout<<setw(10)<<RRarrayi.name<<" " cout<<setw(10)<<RRarrayi.ArrivalTime<<" " cout<<setw(10)<<RRarrayi.ServiceTime<<" "<<endl; cout<<"*"<<endl; void RRAlgorithm() char processMoment100; /存儲每個時間片p對應(yīng)的進程名稱 RRqueue.push(RRarray0); int processMomentPoint = 0; int CurrentTime=0; int tempTime; /聲明此變量控制CurrentTime的累加時間,當(dāng)前進程的服務(wù)時間小于時間片q的時候,起到重要作用 int i=1; /指向還未處理的進程的下標(biāo) int finalProcessNumber = 0; /執(zhí)行RR算法后,進程的個數(shù) int processTime50; /CurrentTime的初始化 if (RRarray0.ServiceTime>=q) CurrentTime = q; else CurrentTime = RRarray0.ServiceTime; while(!RRqueue.empty() for (int j=i;j<n;j+) /使得滿足進程的到達(dá)時間小于當(dāng)前時間的進程都進入隊列 if (RRarrayj.name!=NULL && CurrentTime >= RRarrayj.ArrivalTime) RRqueue.push(RRarrayj); i+; if (RRqueue.front().ServiceTime<q) tempTime = RRqueue.front().ServiceTime; else tempTime = q; RRqueue.front().ServiceTime -= q; /進程每執(zhí)行一次,就將其服務(wù)時間 -q /將隊首進程的名稱放入數(shù)組中 processMomentprocessMomentPoint = RRqueue.front().name; processMomentPoint+; processTimefinalProcessNumber = tempTime; finalProcessNumber+; if (RRqueue.front().ServiceTime <= 0) /把執(zhí)行完的進程退出隊列 /RRqueue.front().FinishedTime = CurrentTime; RRqueue.pop(); /如果進程的服務(wù)時間小于等于,即該進程已經(jīng)服務(wù)完了,將其退棧 else /將隊首移到隊尾 RRqueue.push(RRqueue.front(); RRqueue.pop(); CurrentTime += tempTime; /進程輸出處理 每個時間段對應(yīng)的執(zhí)行的進程 cout<<"各進程的執(zhí)行時刻信息:"<<endl; cout<<" "<<"0時刻 -> "<<setw(2)<<processTime0<<"時刻" processTimefinalProcessNumber=0; int time = processTime0; int count = 0; for (i=0;i<finalProcessNumber;i+) count = 0; cout<<setw(3)<<processMomenti<<setw(3)<<endl; while(RRarraycount.name!=processMomenti && count<n) count+; RRarraycount.FinishedTime = time; if (i<finalProcessNumber - 1) cout<<setw(3)<<time<<"時刻"<<" -> "<<setw(2)<<time + processTimei+1<<"時刻"<<setw(3); time += processTimei+1; cout<<endl; /周轉(zhuǎn)時間、帶權(quán)周轉(zhuǎn)時間、平均周轉(zhuǎn)時間、帶權(quán)平均周轉(zhuǎn)時間的計算 /1. 周轉(zhuǎn)時間 = 完成時間 - 到達(dá)時間 /2. 帶權(quán)周轉(zhuǎn)時間 = 周轉(zhuǎn)時間/服務(wù)時間 for ( i=0;i<n;i+) RRarrayi.WholeTime = RRarrayi.FinishedTime - RRarrayi.ArrivalTime; RRarrayi.WeightWholeTime = (double)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; void display() cout<<"*"<<endl; cout<<"RR調(diào)度算法執(zhí)行后:進程相關(guān)信息如下:"<<endl; cout<<setw(10)<<"進程名ID"<<" " cout<<setw(10)<<"到達(dá)時間"<<" " cout<<setw(10)<<"服務(wù)時間"<<" " cout<<setw(10)<<"完成時間"<<" " cout<<setw(10)<<"周轉(zhuǎn)時間"<<" " cout<<setw(10)<<"帶權(quán)周轉(zhuǎn)時間"<<endl; for (int i = 0;i<n;i+) cout<<setw(10)<<RRarrayi.name<<" " cout<<setw(10)<<RRarrayi.ArrivalTime<<" " cout<<setw(10)<<RRarrayi.ServiceTime<<" " cout<<setw(10)<<RRarrayi.FinishedTime<<" " cout<<setw(10)<<RRarrayi.WholeTime<<" " cout<<setw(10)<<RRarrayi.WeightWholeTime<<" "<<endl; cout<<"所有進程的平均周轉(zhuǎn)時間 = "<<AverageWT<<endl; cout<<"所有進程的平均帶權(quán)周轉(zhuǎn)時間 = "<<AverageWWT<<endl; cout<<"*"<<endl; int main() Input(); RRAlgorithm(); display(); return 0;

    注意事項

    本文(時間片輪轉(zhuǎn)調(diào)度算法實驗報告)為本站會員(馨***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

    溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




    關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

    copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

    備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


    本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!

    欧美久久久一区二区三区,国产精品亚洲一区二区无码,亚洲国产精品综合久久20声音,亚洲国产精品无码久久久蜜芽
    <span id="plx27"><var id="plx27"></var></span>
    <dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>