資源描述:
《最早期限優(yōu)先調(diào)度算法(EDF)實(shí)驗(yàn)報(bào)告》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱:最早期限優(yōu)先調(diào)度算法(EDF)實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?)了解實(shí)時(shí)調(diào)度,了解最早截止期優(yōu)先算法(EDF算法);2)使用C語(yǔ)言實(shí)現(xiàn)最早截止期優(yōu)先算法(EDF算法);3)計(jì)算多個(gè)任務(wù)的調(diào)度順序。二、實(shí)驗(yàn)原理最早截止期優(yōu)先算法(EDF),也稱為最早死限調(diào)度算法(DDS),是一種采用動(dòng)態(tài)調(diào)度的優(yōu)先級(jí)調(diào)度算法,任務(wù)的優(yōu)先級(jí)根據(jù)任務(wù)的截止時(shí)間來(lái)確定。任務(wù)的截止時(shí)間越近,任務(wù)的優(yōu)先級(jí)越高;任務(wù)的截止時(shí)間越遠(yuǎn),任務(wù)額優(yōu)先級(jí)越低。當(dāng)有新的任務(wù)處于就緒狀態(tài)時(shí),任務(wù)的優(yōu)先級(jí)就有可能需要進(jìn)行調(diào)整。EDF算法的測(cè)試如果所有的任務(wù)都是
2、周期性的,并且對(duì)應(yīng)的時(shí)間限等于它們的周期,對(duì)任務(wù)集的調(diào)度性的測(cè)試是非常簡(jiǎn)單的:如果任務(wù)集的總利用率不大于1,那么任務(wù)集就可以由EDF算法在一個(gè)單處理器上進(jìn)行合理的調(diào)度。對(duì)于那些任務(wù)的時(shí)間限并不全等于其周期的情況,沒(méi)有簡(jiǎn)答的調(diào)度性測(cè)試。在這樣的情況下,需要使用EDF算法生成一個(gè)時(shí)間表,來(lái)判斷是不是在一個(gè)給定的時(shí)間區(qū)間內(nèi)所有的時(shí)間限都被滿足。在這種情況下EDF的一個(gè)可調(diào)度性測(cè)試如下:定義u=i=1n(ei/Pi),dmax=max1≤i≤n{di}以及P=lcm(P1,…Pn)(這里的“l(fā)cm”表示最小公倍數(shù))。定義hT
3、(t)是任務(wù)集T中所有滿足其時(shí)間限的絕對(duì)值小魚(yú)t的任務(wù)執(zhí)行時(shí)間之和。一個(gè)由n個(gè)任務(wù)構(gòu)成的集合不是可行的EDF的充分必要條件是:u>1或存在某個(gè)tt(其中n為任務(wù)集中任務(wù)的數(shù)量;ei為任務(wù)Ti的執(zhí)行時(shí)間;Pi為周期任務(wù)的周期;di為任務(wù)Ti的相對(duì)時(shí)間限;hTt為在絕對(duì)時(shí)間不遲于t的任務(wù)集合T中,所有重復(fù)的任務(wù)執(zhí)行時(shí)間和。)三、實(shí)驗(yàn)儀器硬件:PC機(jī);軟件:Windows7,VisualStudio2010集成開(kāi)發(fā)環(huán)境一、實(shí)驗(yàn)步驟1)理解EDF調(diào)度
4、算法的原理并通過(guò)實(shí)例用EDF算法判斷多任務(wù)的調(diào)度順序。2)新建EDF.h頭文件,在其中定義變量,結(jié)構(gòu)體,函數(shù)。3)新建input.c文件,用input函數(shù)從鍵盤(pán)獲取多個(gè)任務(wù)的名稱、執(zhí)行時(shí)間、周期和釋放時(shí)間,將任務(wù)分成一個(gè)個(gè)時(shí)間片存在數(shù)組中,并輸出數(shù)組和各時(shí)間片屬性。4)新建edf.c文件,用EDF函數(shù)將數(shù)組中的時(shí)間片根據(jù)截止時(shí)間的大小從小到大進(jìn)行排序,輸出它們的截止時(shí)間排序,再判斷是否可調(diào)度,若是不可調(diào)度輸出“不可調(diào)度!”,若是可調(diào)度輸出調(diào)度順序。5)新建main.c文件,在其中調(diào)用input函數(shù)和EDF函數(shù)。6)編
5、譯運(yùn)行程序,輸入多個(gè)任務(wù)調(diào)試程序至結(jié)果無(wú)誤。7)對(duì)實(shí)驗(yàn)進(jìn)行分析、反思,與同學(xué)討論。二、實(shí)驗(yàn)結(jié)果程序完成后,輸入了多種情況進(jìn)行驗(yàn)證,運(yùn)行結(jié)果正確,符合按照最早截止期優(yōu)先算法得出的結(jié)果。1)不可調(diào)度當(dāng)五個(gè)任務(wù)的執(zhí)行時(shí)間和周期都為1時(shí),是不可調(diào)度的。(由EDF算法的測(cè)試可知)2)可調(diào)度當(dāng)五個(gè)任務(wù)的執(zhí)行時(shí)間和周期分別為1、3,2、12,1、6,1、4,3、20,釋放時(shí)間分別為0,1,0,1,0時(shí),是可調(diào)度的。結(jié)果如下:一、實(shí)驗(yàn)分析與討論1)編程前要理解清楚算法。對(duì)算法理解不清就編寫(xiě)代碼實(shí)現(xiàn),那么寫(xiě)出來(lái)的程序與計(jì)算出來(lái)的結(jié)果會(huì)
6、不一致、運(yùn)行不正確。重新理解算法,調(diào)試程序,會(huì)造成不必要的時(shí)間浪費(fèi)。2)實(shí)驗(yàn)前一定要做好實(shí)驗(yàn)設(shè)計(jì)。如變量設(shè)置,功能語(yǔ)句設(shè)計(jì)等。否則在編寫(xiě)程序的過(guò)程中容易出現(xiàn)思維邏輯不清晰,無(wú)法繼續(xù)實(shí)現(xiàn)必需功能的問(wèn)題。這樣仍然會(huì)造成不必要的時(shí)間浪費(fèi)。附:源代碼//EDF.h#include#include#definen5intnumber;intschedule[1000][2];intFS[1000][2];structProgram{intname;intrun;intperiod;int
7、release;}A[1000];voidInput();voidEDF();//input.c/*************輸入*************/#include"EDF.h"voidInput(){//programA[n];chars;inti,j,k;intname,run,period,release;number=0;for(i=0;i<5;i++)/*i是任務(wù)個(gè)數(shù)*/{????????????????printf("Program'sname,Executiontime,Period(=Dead
8、line),Releasetime:");????????????????scanf("%d%d%d%d",&name,&run,&period,&release);????????????????k=0;????????????????while(k<5)/*k是周期數(shù)*/????????????????{??????????????????