專利名稱::Aadl模型的一種調(diào)度分析方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及調(diào)度分析
技術(shù)領(lǐng)域:
,具體來講,涉及一種在由AADL模型所描述的嵌入式系統(tǒng)中,分析線程集合是否能在規(guī)定時限內(nèi)正常執(zhí)行完畢的方法。
背景技術(shù):
:AADL是一種用來設(shè)計和分析性能關(guān)鍵實時系統(tǒng)的字符化和圖形化的模型語言。它能夠用來描述組件之間的功能接口,也能描述組件的時間需求。它也能夠描述組件之間的交互關(guān)系,如數(shù)據(jù)輸入輸出、軟件組件和硬件組件之間的綁定關(guān)系等。因此設(shè)計者可能從各個方面對模型進行分析和評估。下面簡要介紹AADL模型元素組件是AADL的主要建模單位,組件包括有線程組件、處理器組件等。每個線程組件可以處于停止、睡眠或活躍狀態(tài)。一個活躍的線程可以等待分派、執(zhí)行或由于臨界資源訪問而阻塞。線程的屬性可以有最壞執(zhí)行時間、截止時間、分派協(xié)議、最小到達間隔時間等參數(shù)。根據(jù)線程的分派協(xié)議和對外部事件的響應,其類型可以分為周期線程、非周期線程、零星線程和后臺線程。線程組件的調(diào)度協(xié)議定義在處理器組件的參數(shù)上。調(diào)度分析領(lǐng)域自二十世紀六七十年代提出以來已經(jīng)是一個研究相對成熟的領(lǐng)域,已發(fā)表了大量的論文。但是對于有不確定到達時間的非周期線程的系統(tǒng),仍然缺乏精確分析的方法。傳統(tǒng)上處理不確定到達時間的非周期線程的系統(tǒng)采用近似的悲觀方法,即考慮最壞情況下非周期線程到達的最大頻率,因此該種方法為其預留的處理器資源過多,無法精確計算是否可以調(diào)度。目前已有一些支持AADL模型元素調(diào)度分析的工具,主要是Furness工具集和Cheddar工具。但是Furness工具集不能分析由外部環(huán)境驅(qū)動的嵌入式系統(tǒng)的調(diào)度性分析,而Cheddar工具本不是針對AADL模型元素開發(fā),需要進行語義轉(zhuǎn)換,且使用悲觀的最壞情況分析,其調(diào)度分析結(jié)果不精確。上述工具和方法由于語義不同或分析范圍的局限性,均不能有效的精確分析AADL的調(diào)度性,從而不能反饋給AADL建模人員準確的信息。目前AADL模型方法正在嘗試使用在國內(nèi)某航天飛行器的設(shè)計過程中,因此設(shè)計一種能夠有效的精確分析AADL的調(diào)度性方式是十分必要的。
發(fā)明內(nèi)容本發(fā)明的目的在于克服現(xiàn)有調(diào)度分析方法的不足,提供AADL模型的一種能準確分析非周期性線程的調(diào)度分析方法。為實現(xiàn)上述目的,本發(fā)明的AADL模型的一種調(diào)度分析方法,包括以下步驟(1)、對每個線程實例設(shè)計一個語義圖'l.l)、在語義圖中,每個線程實例可以處于如下位置等待分派、就緒、執(zhí)行和錯誤;對每個線程實例7V使用兩個計時器^和^來分別計時其執(zhí)行時間和截止時間,其中下標/表示第/個線程,下標y表示第y'個實例,在任何位置上計時器^/單位時間增長率都一直為1,計時器^.只在running位置上單位時間增長率為l,其余位置上為0;等待分派位置為每個線程實例7V的初始位置;對每個計時器^和^都分別存在一個最大正整數(shù)值^和A,一旦某個線程實例&的計時器e々計時超過W或計時器%計時超過A,則該兩個計時器%和^的值都同時置為0;1.2)、函數(shù)v表示計時器的值,在每個線程實例7V的就緒,執(zhí)行位置上都存在如下的限制V(W^A,執(zhí)行位置上還存在限制V(^)^W;1.3)、每個線程實例7V的位置之間的遷移條件的限制是如下的形式V:=VAV|V()~C|vfe)-v(U)~C,其中~6{<,>^,^,=},C是整數(shù)。^是線程實例rw的計時其執(zhí)行時間的計時器,^和f目是線程實例7\,和r目的計時其截止時間的計時器,將具體的調(diào)度策略編碼成位置之間遷移條件限制;1.4)、對非周期線程,將其就緒和執(zhí)行位置分別細分《個,表示為readypready2...ready/c禾口running!,running2...runnings,{吏用{立置的個數(shù)來i己錄目前分派緩沖隊列中的事件個數(shù),尺對每個線程是常數(shù);1.5)、線程之間的分派關(guān)系由遷移之間的同步事件表示,具有相同同步事件的遷移才能同時發(fā)生;線程實例7^執(zhí)行完后激活非周期線程實例4表示在線程實例&的執(zhí)行位置到等待分派位置的遷移上標記同步事件且在線程實例rM的等待分派位置到就緒位置readyi的遷移上、readyi到ready2的遷移上、...read化i到ready《的遷移上都標記相同的同步事件;(2)、用同步時間來描述每個線程到達時間行為在每個線程到達時間行為圖中,存在與語義圖中定義相同的位置、計時器和遷移條件,只是在到達時間行為圖中,計時器的增長率任何時間都為1且名字不同于任何已用的計時器;(3)、為了分析某個任務實例的error位置是否可以到達,在DBM矩陣現(xiàn)有操作技術(shù)的基礎(chǔ)上進行了操作修改有A:個計時器:x!,x2,…^,DBM是一個A+l維矩陣,對任意/,AG=(A:,0)表示計時器A的嚴格上界值A(chǔ):,即v(x,)〈A:,或A。=(&l)表示計時器A的非嚴格上界值A(chǔ):,即vCx,)《A;A),表示計時器A的嚴格或非嚴格下界值;對任意的/和乂,A表示H《>v(J9)的嚴格或非嚴格上界值,其中下標/表示DBM的第/行,y'表示DBM的第y'列;為了使一個DBM和一個時鐘時間域——對應,因此必須將DBM化為標準形式,即VO《/J,/《A^丄Z^《i^.+i^。為了求后繼時間區(qū)域,定義如下幾個DBM操作行為*交(A):對兩個標準的DBM"和Z),,定義交集D",其ZV,-聰'"(A/,ZV)。交操作完成后,首先檢查所得到的""所表示的時間區(qū)域是否為空,若不為空,則化為標準形式;*時間流逝(t):使用Dt表示DBMZ)的時間流逝操作。在此過程中,任意計時器x,滿足i,l,其A),值保持不變,Ao值變?yōu)閊;任意計時器力滿足i廣O,其A),.值保持不變,Z),.o值保持不變;任意計時器斗和^滿足、=1且<=1,其A^和D柳值保持不變;任意計時器X,和X,滿足i,0且;^0,其A,和A,值保持不變;任意計時器x,和jc/滿足;t,l且i廣0,其Z^值變?yōu)閣,Z)力值保持不變;然后在對所得到的Z)標準化;*重置(1:=0):假設(shè)需要重置的計時器集合為X。給定DBMD,對所有計時器^EX,把所有的A),和A()的值置為(O,1);任意計時器4和^滿vS^et且;^EX,to柳和D鵬值置為(O,1);任意時鐘x,和;9滿^^ex且jc,人,to"置為Ay的值,把D力置為D,。的值;(4)、調(diào)度前所有線程都被初始化,在各自的語義圖上他們都在等待分派位置上,在到達時間圖上他們都被初始化在初始位置上,一開始的DBM的所有計時器的值被初始化0;(5)、進入調(diào)度分析的時候,先讓DBM按上述時間流逝的方法進行流逝在每個線程的每個位置事實上可以定義時間約束,把這些時間約束轉(zhuǎn)換成一個整體的DBM,接著把該DBM和時間流逝后的DBM求交運算,求出一個新的DBM;但當前位置集合中包含某些就緒位置或執(zhí)行位置,則對這些位置先不進行時間流逝,而直接進行求交運算;(6)、每個線程實例的語義圖的每個位置都有自己的后繼邊,把后繼邊上的時間約束用DBM的形式表示,用步驟(5)求出的DBM跟每條后繼邊時間約束的DBM求交,如果求交后的DBM不為空,即說明這條后繼邊可走,就發(fā)生位置轉(zhuǎn)移;如果語義圖的當前位置是執(zhí)行位置,若到等待分派位置的后繼邊可走,就會遷移到等待分派位置,如果該后繼邊有同步事件產(chǎn)生,即該線程運行完會觸發(fā)別的線程實例的分派;在實現(xiàn)這個步驟的時候,判斷該線程運行狀態(tài)到分派狀態(tài)的邊上所同步關(guān)聯(lián)的線程實例有哪些,選擇一個仍然處于等待分派位置的實例來使用,即觸發(fā)該線程實例的分派;同樣該線程的到達時間圖的當前位置的后繼邊也做以上的同樣處理,看是否發(fā)生狀態(tài)轉(zhuǎn)移;(7)、如果某個線程實例進入錯誤位置,則分析過程中止,提示"不可調(diào)度,,;(8)、否則,判斷當前所有線程的位置集合是否跟以前某一時期的位置集合相同,如果是,再判斷當前的DBM是否包含于那一時期的DBM,兩個條件都符合就說明整個系統(tǒng)可成功調(diào)度;否則回到步驟(5)。本發(fā)明通過為每個線程設(shè)計語義圖和到達時間行為圖,使得AADL模型的執(zhí)行語義可抽象為一個語義圖,并將每個線程的到達時間約束用到達時間行為圖表示,并擴展了時鐘限制數(shù)據(jù)結(jié)構(gòu)的操作算法,從而達到分析其調(diào)度性的目的。圖l是單個周期、零星線程組件實例的語義圖;圖2是非周期線程組件的語義圖;圖3是線程組件的到達時間圖4是線程Tl和T2的到達時間圖;圖5是線程T1和T2的語義具體實施例方式下面對本發(fā)明的具體實施方式進行描述,以便更好地理解本發(fā)明。需要特別提醒注意的是,在以下的描述中,當采用已知功能和設(shè)計的詳細描述也許會淡化本發(fā)明的主要內(nèi)容時,這些描述在這兒將被忽略。圖1是單個周期、零星線程組件實例的語義圖圖中,Dispatch、ready、running和error是其位置集合,分別表示等待分派、就緒、執(zhí)行和錯誤。為了便于表示遷移關(guān)系,增加了computation位置。從computation位置出發(fā)的遷移事實上是computation位置內(nèi)所有位置都有該遷移。且遷移邊上標記同步事件^",和遷移條件。e和f是前面定義的計時器,『和D是該線程組件屬性里定義的最壞執(zhí)行時間和截止時間。由于圖1是對周期線程進行建模,如果其在截止時間內(nèi)正常執(zhí)行完畢,則它不會進入error位置,即該線程組不可調(diào)度;否則它不會進入error位置。對線程組的調(diào)度策略在ready位置和rmming位置之間的兩個遷移的條件處體現(xiàn),并定義在處理器組件的屬性里。例如,如果調(diào)度策略是RMS時,對線程組件實例7T^從ready位置到running位置的遷移條件為V7%w#7\,W.A《A;從running位置到ready位置的遷移條件為377/^#7\,"A》A,即線程組件進入running位置后,后繼位置只能是error或dispatch;如果調(diào)度策略是EDF時,對線程組件772々.從ready位置到running位置的遷移條件為V7%^7\,&/.A-A《A-4;從running位置到ready位置的遷移條件為3rU7\,"AOA_^。圖2是非周期線程組件的語義中,位置dispatch、computation、ready、running、error、同步事件,,、時鐘條件、時鐘e和r『、Z)均和圖1中的定義一致。在AADL中,由于非周期線程的存在,圖1的模型無法進行建模。因此采用圖2所示的到達時間行為圖來對非周期線程建模。在圖2中,^y",是同步事件,由于自動機中無法記錄同步事件的個數(shù),因此本發(fā)明采用同步事件觸發(fā)位置遷移。每個對應的ready,位置和running,位置之間的遷移條件和圖1相同。圖3是線程組件的到達時間圖如圖所示,AADL中每個由外部直接觸發(fā)的線程組件實例都會定義線程組件的到達時間圖和語義圖。語義圖描述線程的內(nèi)部行為,到達時間圖描述線程的到達時間行為。他們之間的通信靠同步事件來實現(xiàn)。圖3的左圖可以用于描述周期線程的到達時間,右圖可以用于描述非周期線程的到達時間。圖4是線程K和r2的到達時間圖對周期線程和零星線程r,可能同時存在多個線程實例,其個數(shù)的上界值為「AW1,其中A是其截止時間,尸,是其到達間隔時間。舉兩個線程加以說明,如表1所示。<table>tableseeoriginaldocumentpage10</column></row><table>表l則線程K和r2的最大實例數(shù)是1?!寒a(chǎn)3,A=5,『2=3,Z)2=5。處理器組件上定義的調(diào)度策略是優(yōu)先級調(diào)度。7\的優(yōu)先級高于『2。圖5線程7\和72的語義圖在語義圖中,為了方便描述,我們采用目錄結(jié)構(gòu),如K的ready位置可表示為7Vcomputation/ready。下面根據(jù)
發(fā)明內(nèi)容敘述分析過程1.到達時間圖和語義圖的初始位置為〈m,",7Vdispatch,7Vdispatch>,計時器x,j;,。,&e2,2的初始值全為0,此時DBM矩陣為(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)2.初始時刻,K和T2均有同步事件,因此位置集合變?yōu)?lt;附,",7Vcomputation/ready,7Vcomputation/ready>,DBM保持不變。3.由于K優(yōu)先級高于r2,位置集合變?yōu)椤磎,",7Vcomputation/running,7Vcomputation/ready>。由于從7Vcomputation/ready至U7Vcomputation/runmng的遷移條件是比較優(yōu)先級,沒有時間限制,因此DBM繼續(xù)保持不變。4.在l立置集合〈w,w,7Vcomputation/running,7Vcomputation/ready〉中按4立置中的計時器增長率進行時間流逝,得到的DBM為(0,1)(0,1)(0,1)(0,1)(0,1)(~,1)(0,1)(0,1)(~,1)(0,1)(~,1)(0,1)(0,1)(,l)(0,1)(0,1)(0,1)(0,1)(0,1)(0,1)(~,1)(0,1)(0,1)(~,1)(0,1)該DBM和=3av(O^5的DBM求交后重置并標準化后的DBM為(0,1)(0,1)(0,1)(0,1)(-3,1)(0,1)(0,1)(0,1)(0,1)(-3,1)(0,1)(0,1)(0,1)(0,1)(-3,1)(0,1)(0,1)(0,1)(0,1)(-3J)(3,1)(3,1)(3,1)(3,1)(0,1)不為空集。而和v(e》〈3Av(/,)-5的DBM求交后并標準化后的DBM為空集。5.因此r!位置變?yōu)?Vdispatch,位置集合變?yōu)?lt;附,",7Vdispatch,7Vcomputation/running>。由于從7Vcomputation/ready至lj7Vcomputation/running的遷移條件是比較優(yōu)先級,沒有時間限制,因此DBM繼續(xù)保持不變。6.在位置集合<附,",7Vdispatch,7V0011^1^11011/11111111嗎〉中按位置中的計時器增長率進行時間流逝,得到的DBM為(0,1)(CM)(0,1)(0,1)(-3,1)(0,1)(0,1)(0,1)(0,1)(-3,1)(0,1)(0,1)(0』(0,1)(-3^1)(~,1)((0,1)(-3,1)(~,1)(~,1)(~,1)(3,1)(0,1)該DBM和v(e2)=3aH"《5的DBM求交后重置并標準化后的DBM為(-1,1)(-1,1)(-1,1)(-4,1)(-7,1)(-1,1)(-1,1)(-1,1)(-4,1)(-7,1)(-1,1)(-l,l)(-1,1)(-4,1)(-7,1)(2,1)(2,1)(2^1)(-1,1)(-4,1)(4,1)(4,1)(4,1)(1,1)(-2,1)此為空集。說明r2不能進入7Vdispatch。該DBM和v(e2)〈3/vv("-5的DBM求交后并標準化后的DBM為不為空(o,1)(o,1)(o,1)(-2,1)(-5,1)(o,1)(o,1)(o,1)(-2,1)(-5,1)(o,1)(o,1)(o,1)(-2,1)(-5,1)(2,1)(2,1)(2,1)(0,1)(-3,1)(5,1)(5,1)(5,1)(3,1)(0,1)。說明r2進入7Verror位置,由此說明該線程組不可調(diào)度,因為線程7^不能在其截止時間內(nèi)執(zhí)行完畢。盡管上面對本發(fā)明說明性的具體實施方式進行了描述,以便于本技術(shù)領(lǐng)的技術(shù)人員理解本發(fā)明,但應該清楚,本發(fā)明不限于具體實施方式的范圍,對本
技術(shù)領(lǐng)域:
的普通技術(shù)人員來講,只要各種變化在所附的權(quán)利要求限定和確定的本發(fā)明的精神和范圍內(nèi),這些變化是顯而易見的,一切利用本發(fā)明構(gòu)思的發(fā)明創(chuàng)造均在保護之列。權(quán)利要求1、一種AADL模型的一種調(diào)度分析方法,包括以下步驟(1)、對每個線程實例設(shè)計一個語義圖1.1)、在語義圖中,每個線程實例可以處于如下位置等待分派、就緒、執(zhí)行和錯誤;對每個線程實例Tij使用兩個計時器eij和tij來分別計時其執(zhí)行時間和截止時間,其中下標i表示第i個線程,下標j表示第j個實例,在任何位置上計時器tij單位時間增長率都一直為1,計時器eij只在running位置上單位時間增長率為1,其余位置上為0;等待分派位置為每個線程實例Tij的初始位置;對每個計時器eij和tij都分別存在一個最大正整數(shù)值Wi和Di,一旦某個線程實例Tij的計時器eij計時超過Wi或計時器tij計時超過Di,則該兩個計時器eij和tij的值都同時置為0;1.2)、函數(shù)v表示計時器的值,在每個線程實例Tij的就緒,執(zhí)行位置上都存在如下的限制v(tij)≤Di,執(zhí)行位置上還存在限制v(eij)≤Wi;1.3)、每個線程實例Tij的位置之間的遷移條件的限制是如下的形式V:=V∧V|v(ekl)~C|v(tkl)-v(tmn)~C,其中~∈{<,>,≤,≥,=},C是整數(shù)。ekl是線程實例Tkl的計時其執(zhí)行時間的計時器,tkl和tmn是線程實例Tkl和Tmn的計時其截止時間的計時器,將具體的調(diào)度策略編碼成位置之間遷移條件限制;1.4)、對非周期線程,將其就緒和執(zhí)行位置分別細分K個,表示為ready1,ready2...readyK和running1,running2...runningK,使用位置的個數(shù)來記錄目前分派緩沖隊列中的事件個數(shù),K對每個線程是常數(shù);1.5)、線程之間的分派關(guān)系由遷移之間的同步事件表示,具有相同同步事件的遷移才能同時發(fā)生;線程實例Tij執(zhí)行完后激活非周期線程實例Tmn表示在線程實例Tij的執(zhí)行位置到等待分派位置的遷移上標記同步事件且在線程實例Tmn的等待分派位置到就緒位置ready1的遷移上、ready1到ready2的遷移上、...readyK-1到readyK的遷移上都標記相同的同步事件;(2)、用同步時間來描述每個線程到達時間行為在每個線程到達時間行為圖中,存在與語義圖中定義相同的位置、計時器和遷移條件,只是在到達時間行為圖中,計時器的增長率任何時間都為1且名字不同于任何已用的計時器;(3)、為了分析某個任務實例的error位置是否可以到達,在DBM矩陣現(xiàn)有操作技術(shù)的基礎(chǔ)上進行了操作修改有k個計時器x1,x2,...xk,DBM是一個k+1維矩陣,對任意i,Di0=(k,0)表示計時器xi的嚴格上界值k,即v(xi)<k,或Di0=(k,1)表示計時器xi的非嚴格上界值k,即v(xi)≤k;D0i表示計時器xi的嚴格或非嚴格下界值;對任意的i和j,Dij表示v(xi)-v(xj)的嚴格或非嚴格上界值,其中下標i表示DBM的第i行,j表示DBM的第j列;為了使一個DBM和一個時間域一一對應,因此必須將DBM化為標準形式,即<mathsid="math0001"num="0001"><math><![CDATA[<mrow><mo>∀</mo><mn>0</mn><mo>≤</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo><mi>l</mi><mo>≤</mo><mi>k</mi><mo>,</mo><mi>s</mi><mo>.</mo><mi>t</mi><mo>.</mo><msub><mi>D</mi><mi>ij</mi></msub><mo>≤</mo><msub><mi>D</mi><mi>ij</mi></msub><mo>+</mo><msub><mi>D</mi><mi>jl</mi></msub><mo>.</mo></mrow>]]></math>id="icf0001"file="A2009100603400003C1.tif"wi="63"he="5"top="99"left="58"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>為了求后繼時間區(qū)域,定義如下幾個DBM操作行為●交(∧)對兩個標準的DBMD和D’,定義交集D”,其Dij”=min(Dij,Dij’)。交操作完成后,首先檢查所得到的D”所表示的時間區(qū)域是否為空,若不為空,則化為標準形式;●時間流逝(↑)使用D↑表示DBMD的時間流逝操作。在此過程中,任意計時器xi滿足<mathsid="math0002"num="0002"><math><![CDATA[<mrow><msub><mover><mi>x</mi><mo>·</mo></mover><mi>i</mi></msub><mo>=</mo><mn>1</mn><mo>,</mo></mrow>]]></math>id="icf0002"file="A2009100603400003C2.tif"wi="10"he="4"top="152"left="49"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>其D0i值保持不變,Di0值變?yōu)椤蓿蝗我庥嫊r器xj滿足<mathsid="math0003"num="0003"><math><![CDATA[<mrow><msub><mover><mi>x</mi><mo>·</mo></mover><mi>j</mi></msub><mo>=</mo><mn>0</mn><mo>,</mo></mrow>]]></math>id="icf0003"file="A2009100603400003C3.tif"wi="10"he="4"top="151"left="176"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>其D0j值保持不變,Dj0值保持不變;任意計時器xm和xn滿足<mathsid="math0004"num="0004"><math><![CDATA[<mrow><msub><mover><mi>x</mi><mo>·</mo></mover><mi>m</mi></msub><mo>=</mo><mn>1</mn></mrow>]]></math>id="icf0004"file="A2009100603400003C4.tif"wi="9"he="4"top="160"left="154"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>且<mathsid="math0005"num="0005"><math><![CDATA[<mrow><msub><mover><mi>x</mi><mo>·</mo></mover><mi>n</mi></msub><mo>=</mo><mn>1</mn><mo>,</mo></mrow>]]></math>id="icf0005"file="A2009100603400003C5.tif"wi="11"he="4"top="160"left="170"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>其Dmn和Dnm值保持不變;任意計時器xs和xt滿足<mathsid="math0006"num="0006"><math><![CDATA[<mrow><msub><mover><mi>x</mi><mo>·</mo></mover><mi>s</mi></msub><mo>=</mo><mn>0</mn></mrow>]]></math>id="icf0006"file="A2009100603400003C6.tif"wi="9"he="4"top="169"left="123"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>且<mathsid="math0007"num="0007"><math><![CDATA[<mrow><msub><mover><mi>x</mi><mo>·</mo></mover><mi>t</mi></msub><mo>=</mo><mn>0</mn><mo>,</mo></mrow>]]></math>id="icf0007"file="A2009100603400003C7.tif"wi="10"he="4"top="169"left="139"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>其Dst和Dts值保持不變;任意計時器xi和xj滿足<mathsid="math0008"num="0008"><math><![CDATA[<mrow><msub><mover><mi>x</mi><mo>·</mo></mover><mi>i</mi></msub><mo>=</mo><mn>1</mn></mrow>]]></math>id="icf0008"file="A2009100603400003C8.tif"wi="8"he="4"top="178"left="86"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>且<mathsid="math0009"num="0009"><math><![CDATA[<mrow><msub><mover><mi>x</mi><mo>·</mo></mover><mi>j</mi></msub><mo>=</mo><mn>0</mn><mo>,</mo></mrow>]]></math>id="icf0009"file="A2009100603400003C9.tif"wi="10"he="4"top="178"left="101"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>其Dij值變?yōu)椤蓿珼ji值保持不變;然后在對所得到的D標準化;●重置(λ:=0)假設(shè)需要重置的計時器集合為λ。給定DBMD,對所有計時器xi∈λ,把所有的D0i和Di0的值置為(0,1);任意計時器xm和xn滿足xm∈λ且xn∈λ,把Dmn和Dnm值置為(0,1);任意計時器xi和xj滿足xi∈λ且<mathsid="math0010"num="0010"><math><![CDATA[<mrow><msub><mi>x</mi><mi>j</mi></msub><mo>∉</mo><mi>λ</mi><mo>,</mo></mrow>]]></math>id="icf0010"file="A2009100603400003C10.tif"wi="11"he="5"top="213"left="144"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>把Dij置為D0j的值,把Dji置為Dj0的值;(4)、調(diào)度前所有線程都被初始化,在各自的語義圖上他們都在等待分派位置上,在到達時間圖上他們都被初始化在初始位置上,一開始的DBM的所有計時器的值被初始化0;(5)、進入調(diào)度分析的時候,先讓DBM按上述時間流逝的方法進行流逝在每個線程的每個位置上可以定義時間約束,把這些時間約束轉(zhuǎn)換成一個整體的DBM,接著把該DBM和時間流逝后的DBM求交運算,求出一個新的DBM;但當前位置集合中包含某些就緒位置或執(zhí)行位置,則對這些位置先不進行時間流逝,而直接進行求交運算;(6)、每個線程實例的語義圖的每個位置都有自己的后繼邊,把后繼邊上的時間約束用DBM的形式表示,用步驟(5)求出的DBM跟每條后繼邊時間約束的DBM求交,如果求交后的DBM不為空,即說明這條后繼邊可走,就發(fā)生位置轉(zhuǎn)移;如果語義圖的當前位置是執(zhí)行位置,若到等待分派位置的后繼邊可走,就會遷移到等待分派位置,如果該后繼邊有同步事件產(chǎn)生,即該線程運行完會觸發(fā)別的線程實例的分派;在實現(xiàn)這個步驟的時候,判斷該線程運行狀態(tài)到分派狀態(tài)的邊上所同步關(guān)聯(lián)的線程實例有哪些,選擇一個仍然處于等待分派位置的實例來使用,即觸發(fā)該線程實例的分派;同樣該線程的到達時間圖的當前位置的后繼邊也做以上的同樣處理,看是否發(fā)生狀態(tài)轉(zhuǎn)移;(7)、如果某個線程實例進入錯誤位置,則分析過程中止,提示“不可調(diào)度”;(8)、否則,判斷當前所有線程的位置集合是否跟以前某一時期的位置集合相同,如果是,再判斷當前的DBM是否包含于那一時期的DBM,兩個條件都符合就說明整個系統(tǒng)可成功調(diào)度;否則回到步驟(5)。全文摘要本發(fā)明公開了AADL模型的一種調(diào)度分析方法,包括線程的語義圖和到達時間行為圖,使得AADL模型的執(zhí)行語義可抽象為一個語義圖,并將每個線程的到達行為約束用到達時間行為圖表示,還擴展了時鐘限制數(shù)據(jù)結(jié)構(gòu)的操作算法,從而達到分析其調(diào)度性的目的。文檔編號G06F9/44GK101615120SQ200910060340公開日2009年12月30日申請日期2009年8月13日優(yōu)先權(quán)日2009年8月13日發(fā)明者桂盛霖,蕾羅申請人:電子科技大學