版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
進(jìn)程調(diào)度模擬設(shè)計(jì)——最高響應(yīng)比優(yōu)先調(diào)度算法實(shí)驗(yàn)報(bào)告一、實(shí)驗(yàn)題目與規(guī)定1、實(shí)驗(yàn)題目:加深對作業(yè)概念的理解。進(jìn)一步了解批解決系統(tǒng)如何組織作業(yè)、管理作業(yè)和調(diào)度作業(yè)。2、實(shí)驗(yàn)規(guī)定:編寫程序完畢批解決系統(tǒng)中的作業(yè)調(diào)度,規(guī)定采用響應(yīng)比高者優(yōu)先的作業(yè)調(diào)度算法。實(shí)現(xiàn)具體涉及:一方面擬定作業(yè)控制塊的內(nèi)容和組成方式;然后完畢作業(yè)調(diào)度;最后編寫主函數(shù),對所做工作進(jìn)行測試。二、總的設(shè)計(jì)思想及語言環(huán)境、工具1、總的設(shè)計(jì)思想:最高響應(yīng)比優(yōu)先法(HRRN)是對FCFS方式和SJF方式的一種綜合平衡。HRRN調(diào)度策略同時(shí)考慮每個(gè)作業(yè)的等待時(shí)間長短和估計(jì)需要的執(zhí)行時(shí)間長短,從中選出響應(yīng)比最高的作業(yè)投入執(zhí)行。響應(yīng)比R定義如下:R=(W+T)/T=1+W/T其中T為該作業(yè)估計(jì)需要的執(zhí)行時(shí)間,W為作業(yè)在后備狀態(tài)隊(duì)列中的等待時(shí)間。每當(dāng)要進(jìn)行作業(yè)調(diào)度時(shí),系記錄算每個(gè)作業(yè)的響應(yīng)比,選擇其中R最大者投入執(zhí)行。這樣,即使是長作業(yè),隨著它等待時(shí)間的增長,W/T也就隨著增長,也就有機(jī)會(huì)獲得調(diào)度執(zhí)行。這種算法是介于FCFS和SJF之間的一種折中算法。由于長作業(yè)也有機(jī)會(huì)投入運(yùn)營,在同一時(shí)間內(nèi)解決的作業(yè)數(shù)顯然要少于SJF法,從而采用HRRN方式時(shí)其吞吐量將小于采用SJF法時(shí)的吞吐量。此外,由于每次調(diào)度前要計(jì)算響應(yīng)比,系統(tǒng)開銷也要相應(yīng)增長。2、語言環(huán)境:計(jì)算機(jī)基本配置規(guī)定:操作系統(tǒng):WIN98/2023/XP/2023等Windows平臺內(nèi)存:256MB及以上主存64KB(Memory)(以KB為單位分派)開發(fā)語言:VisualC++6.03、工具:Windows平臺+VisualC++6.0三、數(shù)據(jù)結(jié)構(gòu)與模塊說明(功能與框圖)作業(yè)調(diào)度的實(shí)現(xiàn)重要有兩個(gè)問題:一個(gè)是如何將系統(tǒng)中的作業(yè)組織起來;另一個(gè)是如何進(jìn)行作業(yè)調(diào)度。為了將系統(tǒng)中的作業(yè)組織起來,需要為每個(gè)進(jìn)入系統(tǒng)的作業(yè)建立檔案以記錄和作業(yè)相關(guān)的信息,例如,作業(yè)名、作業(yè)所需資源、作業(yè)執(zhí)行時(shí)間、作業(yè)進(jìn)入系統(tǒng)的時(shí)間、作業(yè)信息在存儲器中的位置、指向下一個(gè)作業(yè)控制塊的指針等信息。這個(gè)記錄作業(yè)相關(guān)信息的數(shù)據(jù)塊稱為作業(yè)控制塊(JCB),并將系統(tǒng)中檔待作業(yè)調(diào)度的作業(yè)控制塊組織成一個(gè)隊(duì)列,這個(gè)隊(duì)列稱為后備隊(duì)列。當(dāng)進(jìn)行作業(yè)調(diào)度時(shí),從后備隊(duì)列中查找選擇作業(yè)。由于實(shí)驗(yàn)中沒有實(shí)際作業(yè),作業(yè)控制塊中的信息內(nèi)容只使用了實(shí)驗(yàn)中需要的數(shù)據(jù)。作業(yè)控制塊中一方面應(yīng)當(dāng)涉及作業(yè)名;另一方面是作業(yè)所需資源(內(nèi)存大小、打印機(jī)的數(shù)量和磁帶機(jī)的數(shù)量);采用響應(yīng)比高者優(yōu)先作業(yè)調(diào)度算法,為了計(jì)算響應(yīng)比,還需要有作業(yè)的估計(jì)執(zhí)行時(shí)間、作業(yè)在系統(tǒng)中的等待時(shí)間;此外,指向下一個(gè)作業(yè)控制塊的指針必不可少。實(shí)驗(yàn)中,作業(yè)控制塊及隊(duì)列的數(shù)據(jù)結(jié)構(gòu)定義如下:structtask{ stringname;/*作業(yè)號*/ intarrTime;/*作業(yè)到達(dá)時(shí)間*/?intserTime;/*作業(yè)規(guī)定服務(wù)時(shí)間*/ intwaiTime;/*等待時(shí)間*/ intbegTime;/*開始運(yùn)營時(shí)間*/ intfinTime;/*結(jié)束運(yùn)營時(shí)間*/?intturTime;/*周轉(zhuǎn)時(shí)間*/ intwTuTime;/*帶權(quán)周轉(zhuǎn)時(shí)間*/?intpriority;/*優(yōu)先權(quán)*/ intfinish;/*是否已經(jīng)完畢*/}JCB[10];存放作業(yè)控制塊的區(qū)域:#definen10JCBjobtable[10];intjobcount;將作業(yè)控制塊組織成一個(gè)隊(duì)列,實(shí)驗(yàn)中采用靜態(tài)鏈表的方式模擬作業(yè)的后備隊(duì)列,作業(yè)隊(duì)列頭指針定義為:int*head;實(shí)驗(yàn)中,內(nèi)存采用可移動(dòng)的動(dòng)態(tài)分區(qū)管理方法,即只要內(nèi)存空閑區(qū)總和比作業(yè)大就可以滿足作業(yè)對內(nèi)存的需求;對打印機(jī)和磁帶機(jī)這兩種獨(dú)占設(shè)備采用靜態(tài)分派法,即作業(yè)執(zhí)行前必須獲得所需資源,并且執(zhí)行完才歸還。采用響應(yīng)比高者優(yōu)先調(diào)度算法進(jìn)行調(diào)度時(shí),必須計(jì)算出系統(tǒng)中所有滿足必要條件作業(yè)的響應(yīng)比,從中選擇響應(yīng)比最高的一個(gè)作業(yè)裝入主存儲器分派資源。由于是實(shí)驗(yàn),所以就將作業(yè)控制塊出隊(duì),并輸出作業(yè)名代替裝入處存儲器,同時(shí)修改系統(tǒng)的資源數(shù)量。最高響應(yīng)比優(yōu)先調(diào)度算法的作業(yè)調(diào)度程序流程圖(如下)四、參考源程序:#include<dos.h>#include<time.h>#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<string.h>typedefcharstring[10];/*//定義string為具有10個(gè)字符元素的字符數(shù)組類型*/structtask{?stringname;/*作業(yè)號*/?intarrTime;/*作業(yè)到達(dá)時(shí)間*/?intserTime;/*作業(yè)規(guī)定服務(wù)時(shí)間*/ intwaiTime;/*等待時(shí)間*/ intbegTime;/*開始運(yùn)營時(shí)間*/?intfinTime;/*結(jié)束運(yùn)營時(shí)間*/?intturTime;/*周轉(zhuǎn)時(shí)間*/ intwTuTime;/*帶權(quán)周轉(zhuǎn)時(shí)間*/ intpriority;/*優(yōu)先權(quán)*/ intfinish;/*是否已經(jīng)完畢*/}JCB[10];intnum;voidinput(){?inti;system("cls");?printf("\n請輸入作業(yè)數(shù)量:");?scanf("%d",&num);?for(i=0;i<num;i++) { ?printf("\n請輸入作業(yè)NO.%d:\n",i);? printf("作業(yè)名稱:");??scanf("%s",JCB[i].name);??printf("到達(dá)時(shí)間:"); ?scanf("%d",&JCB[i].arrTime); ?printf("服務(wù)時(shí)間:");??scanf("%d",&JCB[i].serTime); JCB[i].priority=0; JCB[i].finish=0;?}}intHRN(intpre){ intcurrent=1,i,j;/*優(yōu)先權(quán)=(等待時(shí)間+服務(wù)時(shí)間)/服務(wù)時(shí)間*/ for(i=0;i<num;i++)?{JCB[i].waiTime=JCB[pre].finTime-JCB[i].a(chǎn)rrTime;/*等待時(shí)間=上一個(gè)作業(yè)的完畢時(shí)間-到達(dá)時(shí)間*/JCB[i].priority=(JCB[i].waiTime+JCB[i].serTime)/JCB[i].serTime;?} for(i=0;i<num;i++) { if(!JCB[i].finish)??{ ? current=i;/*找到第一個(gè)還沒完畢的作業(yè)*/ ??break; }?}?for(j=i;j<num;j++)/*和后面的作業(yè)比較*/ {? if(!JCB[j].finish)/*還沒完畢(運(yùn)營)*/??{ ??if(JCB[current].arrTime<=JCB[pre].finTime)/*假如作業(yè)在上一個(gè)作業(yè)完畢之前到達(dá)*/???{?? if(JCB[j].arrTime<=JCB[pre].finTime&&JCB[j].priority>JCB[current].priority)??? ?current=j;/*找出到達(dá)時(shí)間在上一個(gè)作業(yè)完畢之前,優(yōu)先權(quán)高的作業(yè)*/? ?}???else/*假如作業(yè)是在上一個(gè)作業(yè)完畢之后到達(dá)*/???{ ? ?if(JCB[j].arrTime<JCB[current].arrTime) ?? ?current=j;/*找出比較早到達(dá)的一個(gè)*/ ?if(JCB[j].a(chǎn)rrTime==JCB[current].arrTime)/*假如同時(shí)到達(dá)*/ ?if(JCB[j].priority>JCB[current].priority) ? ??current=j;/*找出服務(wù)時(shí)間比較短的一個(gè)*/? } } }?returncurrent;/*返回當(dāng)前作業(yè)*/}voidruning(inti,inttimes,intpre,intstaTime,intendTime){ if(times==0)?{ JCB[i].begTime=JCB[i].arrTime;? ? ? ?JCB[i].finTime=JCB[i].begTime+JCB[i].serTime; ?JCB[i].turTime=JCB[i].serTime; ? ? ?JCB[i].wTuTime=1.0; ? ? ?? ?? staTime=JCB[i].begTime;?}?else?{ if(JCB[i].arrTime>JCB[pre].finTime)? ?JCB[i].begTime=JCB[i].arrTime; else JCB[i].begTime=JCB[pre].finTime;? JCB[i].finTime=JCB[i].begTime+JCB[i].serTime;? JCB[i].turTime=JCB[i].finTime-JCB[i].arrTime; JCB[i].wTuTime=JCB[i].turTime/JCB[i].serTime;??}?if(times==num-1)??endTime=JCB[i].finTime; JCB[i].finish=1;?}voidprint(inti,inttimes){?if(times==0) {??printf("名稱到達(dá)時(shí)間服務(wù)時(shí)間開始時(shí)間完畢時(shí)間周轉(zhuǎn)時(shí)間帶權(quán)周轉(zhuǎn)時(shí)間\n"); }?printf("%9s%9d%9d%9d%9d%9d%9d\n", ?JCB[i].name,JCB[i].arrTime,JCB[i].serTime,? JCB[i].begTime,JCB[i].finTime,JCB[i].turTime,JCB[i].wTuTime);}voidcheck(){ inti;?intstaTime,endTime,sumTurTime=0.0,sumWTuTime=0.0,aveTurTime,aveWTuTime; intcurrent=0,times=0,pre=0;?JCB[pre].finTime=0; for(i=0;i<num;i++) {??JCB[i].finish=0; }?staTime,endTime,sumTurTime=0.0,sumWTuTime=0.0,aveTurTime,aveWTuTime; current=0;times=0;pre=0; JCB[pre].finTime=0; printf("-------------------------------------------------------------------------\n"); for(i=0;i<num;i++)?{ JCB[i].finish=0; ?}?staTime,endTime,sumTurTime=0.0,sumWTuTime=0.0,aveTurTime,aveWTuTime; current=0;times=0;pre=0; JCB[pre].finTime=0;?printf("\n--HRRN-----------------------------------------------------------------\n"); for(times=0;times<num;times++)?{??current=HRN(pre); ?runing(current,times,pre,staTime,endTime);??print(current,times);? pre=current; } for(i=0;i<num;i++) {?? sumTurTime+=JCB[i].turTime; ??sumWTuTime+=JCB[i].wTuTime; }?aveTurTime=sumTurTime/num;?aveWTuTime=sumWTuTime/num;?printf("(計(jì)與平均值)%9d%9d%9d%9d\n",NULL,sumTurTime,aveTurTime,aveWTuTime);?printf("-------------------------------------------------------------------------\n");}voidmain(){?charagain; do{ ?system("cls");/*清屏*/ ?printf("pleaseinput4groupsofdatas:\n");? input();??check();??printf("Continu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年江蘇食品藥品職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年遼寧城市建設(shè)職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年黑龍江建筑職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試參考題庫含詳細(xì)答案解析
- 2026年黑龍江商業(yè)職業(yè)學(xué)院單招綜合素質(zhì)筆試備考試題含詳細(xì)答案解析
- 2026年江西工業(yè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試備考題庫及答案詳細(xì)解析
- 2026年三峽電力職業(yè)學(xué)院單招綜合素質(zhì)筆試模擬試題含詳細(xì)答案解析
- 2026年天津職業(yè)大學(xué)單招職業(yè)技能考試模擬試題含詳細(xì)答案解析
- 2026年資陽環(huán)境科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試備考試題及答案詳細(xì)解析
- 2026年宿遷職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試模擬試題含詳細(xì)答案解析
- 2026年內(nèi)江衛(wèi)生與健康職業(yè)學(xué)院單招職業(yè)技能考試備考試題含詳細(xì)答案解析
- 北京2025年北京市疾病預(yù)防控制中心面向應(yīng)屆生招聘26人筆試歷年參考題庫附帶答案詳解
- 2025年高考數(shù)學(xué)三輪復(fù)習(xí)考前沖刺練習(xí)05 圓錐曲線(解答題)(教師版)
- 2026年及未來5年中國TFT液晶面板行業(yè)市場發(fā)展數(shù)據(jù)監(jiān)測及投資方向研究報(bào)告
- 酒吧消防安全規(guī)范
- 龍湖物業(yè)消防安全培訓(xùn)課件
- 大唐集團(tuán)機(jī)考行測題庫
- 高壓旋噴樁止水防滲施工方案
- 中建建筑電氣系統(tǒng)調(diào)試指導(dǎo)手冊
- 安全生產(chǎn)麻痹思想僥幸心理
- 2026年浙江高考地理試題及答案
- 護(hù)理護(hù)理評估工具與應(yīng)用
評論
0/150
提交評論