一種基於模型的實時系統的可調度性分析方法
2023-11-07 15:53:57 1
專利名稱:一種基於模型的實時系統的可調度性分析方法
技術領域:
本發明涉及嵌入式實時系統的模擬仿真技術,更具體的說,是涉及一種基於模型的實時系統的可調度性分析方法。
背景技術:
第一方面實時系統和可調度性時間分析。
嵌入式實時系統,也叫實時內核,是在各類嵌入式晶片的應用程式上實現多任務的機制。它的核心功能,是實現多任務調度,以及任務間的通訊等。
在特定的作業系統中採用某一特定的調度方法的情況下,如果所有的任務都能夠在特定的約束內實現,那麼這種調度就是可行的。驗證調度可行有兩種基本的方法一、對進程集在約束內進行嚴密的可行性實驗;二、推導出最壞情況響應時間,並與截止期進行比較。
第二方面目前存在的可調度性時間分析方法。
可調度性分析決定是否所有的任務可以調度運行,並且滿足它們使用調度算法建立的死線,同時仍要獲得優化的處理器利用率。注意,可調度性分析只觀察系統如何滿足時序要求,而不是滿足功能要求。
對於實時系統,普遍使用的分析方法是速率單調分析RMA(Rate MonotonicAnalysis)。此模型是基於稱為速率單調調度RMS(Rate Monotic Scheduling)的調度機制開發的。它是可搶佔的調度算法,採用單調優先權分配作為任務的優先權分配策略。速率單調優先權分配(rate monotonic priority assignment)是一種方法,分配給任務的優先權是此任務執行速率的單調函數;換句話說,每次執行之間的周期越短,分給此任務的優先權越高。
有一組與基本RMA相關的假設。這些假設是所有的任務是周期性的,任務相互獨立並且任務之間不發生交互,任務的死線是其下一個周期的開始,每個任務具有不隨時間變化的定常時間,所有的任務具有同等關鍵性級別,限制非周期任務初始化和失敗恢復工作,並且這些非周期任務不具有硬死線。
雖然RMA分析方法已經得到了很好的應用,但是RMA分析方法的假設條件比較嚴格,一般的任務集不一定能夠滿足,導致了對分析的結果有誤差。而且,它所得到的結果是一個籠統的、模糊的結果,不能以很友好的方式提供給用戶。
發明內容
本發明的主要目的在於克服現有技術中的不足,提供了一種基於模型的實時系統的可調度性分析方法。
為了解決上述技術問題,本發明是通過以下技術方案實現的。
一種基於模型的實時系統的可調度性分析方法,包括以下步驟(1)建立系統模型通過建模工具建立系統模型,系統模型包含三個方面任務、定時器、任務和任務/任務和定時器之間的通訊;(2)以系統模型作為輸入,進行任務分割進行任務分割通過任務分割算法實現,所述的任務分割算法如下把任務分割成n個,其中n=任務的入度+任務的出度-1-入邊中激活任務的邊的條數;未經過分割的任務稱為父任務,父任務分割後得到的任務稱為子任務;一個父任務的所有子任務稱為這個父任務的子任務集;根據系統模型的具體情況,對父任務和子任務進行手動加邊形成時序圖;(3)設計模擬用數據結構根據時序圖中的任務和各任務之間的相互關係設計模擬用數據結構,把時序圖中的信息組織成有向圖;模擬用數據結構分為三部分任務節點、子任務集和有向圖;(4)對有向圖執行算法進行仿真,得到結果執行序列在執行仿真算法以前,要設置就緒隊列;在一般情況和最差情況下設置就緒隊列的算法為在一般情況下,將自啟動的任務放入就緒隊列;在最差情況下,將入讀為零的任務放入就緒隊列;對就緒隊列設置完畢後,對有向圖執行算法進行仿真;(5)輸出模擬結果
結果以在界面上畫圖的形式來展現給用戶,在輸出模擬結果的界面中,提供了最差和一般兩種情況下的三大結果每個時刻執行的任務信息、每個任務的執行時間及CPU的空閒時間和系統是否可調度的信息及輸出不可調度的原因。
作為一種改進,所述的任務和任務/任務和定時器之間的通訊,包括一個任務對另一個任務發送事件的通訊、一個任務激活另一個任務的通訊和任務對定時器的控制關係。
作為一種改進,所述的對有向圖執行算法仿真包括以下步驟(1)設定模擬時間長度,生成時間序列,把在開始狀態就緒的任務加入到就緒隊列中,令當前執行時間為0;(2)判斷模擬時間是否到,如果模擬時間到,則結束;(3)在就緒隊列中找到優先級最高的任務,為當前執行任務集;如果就緒隊列為空,則返回-1;(4)如果(3)的返回值為-1,則將-1賦給時間序列中當前執行時間列;否則,對當前執行任務集進行處理,處理完以後恢復對任務處理時刪除的邊;當前執行時間加1;轉至(2)執行。
作為一種改進,上述算法中所涉及的對當前執行任務集進行處理的算法如下(1)判斷當前執行任務集是否是可搶佔的任務集,如果不可搶佔跳到步驟(7)執行;(2)得到當前任務集的目前執行子任務,為當前執行子任務,把它的執行時間加1,並且判斷它是否執行完成,如果沒有則跳到步驟(6)執行;(3)把當前執行任務集的目前執行子任務標記加1,如果下一個子任務等待或者當前執行子任務為當前執行任務集的最後一個子任務,當前執行任務集任務集等待;(4)如果當前執行子任務激活時鐘,把時鐘激活,且把這條激活邊刪去;(5)判斷當前執行子任務有沒有控制其他子任務的邊,若有,對這些邊進行逐條地處理如是設置事件邊,將邊刪除,判斷此時被控子任務所在的任務集是否就緒;如果是激活任務邊,且被激活子任務所在的任務集等待且它的當前執行子任務為第一個子任務,把這個任務集置為就緒;
(6)將當前執行任務的序號賦給執行序列的當前執行時間列,跳至步驟(14);(7)判斷本次執行當前任務集的子任務是否執行完,如果執行完,則跳至步驟(13);(8)如果當前執行子任務等待,跳至步驟(13);(9)判斷當前執行子任務是否執行完,如果執行完,則跳至步驟(11);如果沒有,將當前執行任務的序號賦給執行序列的當前執行時間列;(10)把當前執行時間中能夠激活的任務激活,當前執行時間加1,跳到步驟(9);(11)如果當前執行子任務激活時鐘,把時鐘激活,且把相應的激活變刪除;(12)判斷當前執行子任務有沒有控制其他子任務的邊,若有,對這些邊進行逐條地處理如是設置事件邊,將邊刪除,判斷此時被控子任務所在的任務集是否就緒;如果是激活任務邊,且被激活子任務所在的任務集等待且它的當前執行子任務為第一個子任務,把這個任務集置為就緒;跳回到步驟(7);(13)把當前執行任務集從就緒隊列中刪除,如果run的子任務執行完,執行子任務標記置0,當前執行時間-1;(14)結束。
作為一種改進,判斷邊是任務激活邊還是設置時間邊的依據如下如果該邊的源節點是任務集的第一個子任務,那麼該邊是任務激活邊;反之是設置時間邊。
與現有技術相比,本發明的有益效果是(1)本發明對任務的執行順序進行詳細的模擬,具有很好的預測性,可靠性,易用性。
(2)本發明是基於模型的,也就是在模型建立好以後,代碼生成以前的階段,來模擬任務集的執行順序,這樣就使得用戶可以更好的把握建模的過程,消除了因建模的出問題而影響全局的情況,大大節省了軟體開發的時間。
(3)本發明是通過模擬仿真來對任務集的可調度性進行分析的,他消除了以往的可調度性分析只給一個比較籠統,比較模糊的結果的不良方面。
(4)本發明把仿真模擬得到的任務執行序列交給用戶,使得可調度行分析更具可行性,更加可視化。
(5)本發明輸出內容詳盡,界面友好。
圖1是本發明算法的總體結構圖。
圖2是本發明可搶佔的多個任務控制一個任務示意圖。
圖3是對圖2分割後的結果示意圖。
圖4是本發明用戶對圖3加邊處理後的結果示意圖。
圖5是本發明任務節點的數據結構示意圖。
圖6是本發明子任務集的數據結構示意圖。
圖7是本發明有向圖的數據結構示意圖。
圖8本發明有向圖遍歷的基本算法示意圖。
圖9是本發明對任務的處理示意圖。
圖10本發明的運行結果示意圖。
圖11是本發明模型圖。
圖12是本發明模型中個任務和定時器的狀態示意圖。
圖13是本發明時序圖。
具體實施例方式
結合附圖,下面對本發明進行詳細說明。
本發明解決了在實時多任務作業系統建模中對多個任務的可調度性進行分析的問題,提供了一種基於模型的實時系統的可調度性分析方法,從而增加了所開發系統的可靠性,節省了用戶的軟體開發周期,大大提高了用戶的開發效率。
本發明的主要原理和特徵如下一、本發明是基於模型的可調度性時間分析。也就是說本發明是在用戶通過一定的工具進行建模以後,利用本發明以及實現本發明的系統了解其所建的任務集的執行順序或者進行可調度行時間分析。這樣用戶就可以更加直觀的了解任務的執行情況,提高設計和開發的效率。
本發明是利用模擬仿真的原理,有較大的算法難度、邏輯難度和實現難度,但是本發明能給出詳盡的任務執行順序的信息。相比之下,一般的可調度分析只能夠給出一個較為籠統,較為模糊的信息。從這個層面上講,本發明進一步減少了用戶開發的難度,增加了用戶所開發系統的可靠性。
二、本發明的主要技術實現步驟如下1、建立系統模型。
本發明的第一步就是要在用戶使用的某一個特定的建模工具上建立模型。模型可以包含三個方面特性A)、任務;B)、定時器;C)、任務和任務/任務和定時器之間的通訊。其中,任務和任務/任務和定時器之間的通訊主要包括一個任務對另一個任務發送事件的通訊(通過兩個APIsetEvent和waitEvent實現)、一個任務激活另一個任務的通訊(通過APIactiveTask來實現)和任務對定時器的控制關係(通過APIsetAlarm來實現)。如圖11是一個建好的模型。
2、以系統模型作為輸入,進行任務分割。
由於存在任務和任務/任務和定時器之間的通訊,如果某個任務是可搶佔的,那麼在執行完任意一個API的時候,這個任務都有被搶佔的可能性。所以在執行完任意一個API以後,任務都應該被暫停執行,由系統去觀察有沒有比它的優先級更高的任務在就緒隊列,如果有的話就要搶佔本任務的執行權力,把執行的權力交給優先級最高的就緒任務。正是這種情況給任務集的執行順序的模擬仿真增添了不少技術難度,而本發明通過任務分割的辦法很好的解決了這個問題。
進行任務分割通過任務分割算法實現,所述任務分割算法如下不管任務是否可以搶佔,把任務分割成為n個。其中n=任務的入度+任務的出度-1-入邊中激活任務邊的條數。
如圖2所示,這是一個簡單的模型。從模型中我們可以看到任務1和任務3以及任務2和任務3之間分別存在以事件設置和事件等待實現的事件控制關係。假設任務1是可搶佔的,任務2是不可搶佔的。那麼根據任務分割算法,圖2經過分割以後可以生成如圖3所示的模型圖。在這裡我們把未經過分割的任務稱為父任務;父任務分割後得到的任務稱為子任務;一個父任務的所有子任務稱為這個父任務的子任務集。
圖3中的信息是我們可以確定的信息,其中包括任務2、任務1和任務3分別被分割成2、2、3個子任務,以及各子任務集內的控制關係。這種控制關係是一種順序的控制關係。但是,到目前為止,我們還不能確定這些子任務集之間的控制關係,即是由於父任務之間存在的通訊關係而在這些子任務集之間存在的先後執行的關係,如任務21後可以執行任務3的那個子任務?任務11後可以執行任務3的那個子任務?那麼這些先後執行的關係就須要用戶根據所建立模型的具體情況來手動加邊。加邊後的情況如圖4所示,圖中虛線部分表示用戶加的邊。
經過用戶加邊以及形成的圖,每一條邊都表示一種先後執行的關係,箭頭的源節點(子任務)運行完以後就可以執行箭頭的目標節點(子任務)。這樣的圖我們稱為時序圖(sequence圖)。
雖然時序圖中所有的邊都表示子任務之間的先後執行的關係,但是根據他們的先後控制的方式我們可以把他們分成兩類與邊和或邊。或邊是指在指向同一個子任務的所有功能相同的邊中,只要有一條邊得以實現就可以執行下一個任務;所有的子任務集之間的通訊都是或邊。與邊是指進入同一個子任務的所有邊都完成以後才能執行下一個任務;所有子任務集內部的表示順序關係的邊都是與邊。
3、設計模擬用數據結構。
本發明的中心思想就是要將時序圖中的任務和各任務之間的相互關係用有向圖的形式表現出來,而後再對這一張有向圖進行遍歷。那麼我們現在的工作就是要設計好數據結構,把時序圖中的信息合理的組織起來。以方便此後對關係圖進行遍歷。
在本發明中,我們設計的模擬用數據結構從總體上分為三大部分任務節點、子任務集和有向圖。
(1)子任務節點類,如圖5,其中Name類String的實例,表示本子任務的名字;Lenint型實例變量,表示本子任務一次執行的執行時間;nowRunTimeint型實例變量,表示目前本子任務本次已執行的時間;fatherTask類String的實例,表示本子任務的父節點的名字。
(2)子任務集類,如圖6,其中Cycleint型實例變量,表示本任務集的定時器,即定時器第一次啟動後每隔多少時間任務啟動一次;alarmStartTimeint型實例變量,記錄時鐘被激活的時間;alarmTimeint型實例變量,表示子任務集定時器激活以後第一次啟動的時間;proprityint型實例變量,表示子任務集的優先級;SnatchOrNot布爾型實例變量,表示子任務集是否可搶佔;autoStart布爾型實例變量,表示子任務集是否可以自啟動;alarmAutoStart布爾型實例變量,表示子任務集的時鐘是否可以自啟動;lengthint型的實例變量,表示子任務集的長度;nowRunTaskIndexint型實例變量,表示子任務集當前執行的子任務的下標;subTaskList類Vector的實例,表示子任務集包括的子任務序列;fatherName類String的實例,表示父節點的名字;在前面我們已經描述過,子任務表示一個任務在分割以後所有子任務的集合,那麼我們可以把所有的子任務的共同屬性集合到子任務集數據結構中。這樣即節約內存空間又方便遍歷。
alarmStartTimeint型的變量,用於記錄子任務集的定時器的激活時間。
(3)有向圖類,如圖7,其中nodeNumint型實例變量,記錄時序圖中的子任務數目;sNodeNumint型實例變量,記錄靜態圖中父任務的數目;nodeList[]SNode類型的數組,數組長度為nodeNum,用於存儲所有子節點的序列;subTaskSetList[]NodeList類型的數組,數組長度為sNodeNum,用於存貯所有任務集;graph[nodeNum][nodeNum]int型的二維數組,數組的行數和列數都是nodeNum,graph是鄰接矩陣,用於存儲時序圖中各各子節點之間的所有的或邊,在這裡我們並不需要存儲與邊,因為我們能在子任務集類中表示與邊的情況。
readyList[]int類型的數組,數組長度為sNodeNum+1,表示就緒隊列,在相應的某一位上的值為0,表示沒有就緒,1表示就緒,ReadList[sNodeNum]的數字表示當前有多少個就緒任務;
timeList[]int類型的數組,表示時間序列,用於記錄每個毫秒的任務執行情況;alarmGraph[nodeNum][]int型的二維數組,數組的行數和列數分別是nodeNum和sNodeNum、alarmGraph是鄰接矩陣,用以表示任務和定時器的從屬關係的情況。
4、對有向圖執行算法進行仿真,得到結果執行序列。
在執行仿真算法以前,要設置就緒隊列。在一般情況和最差情況下設置就緒隊列的算法為在一般情況下,將自啟動的任務放入就緒隊列;在最差情況下,將入讀為零的任務放入就緒隊列。
對有向圖執行算法進行仿真具體描述如下第一步,設定合適的模擬時間長度runTime,生成時間序列timeList;把在開始狀態就緒的任務加入到就緒對了中去;令當前時間i=0。
第二步,判斷模擬時間是否到,如果模擬時間到,則結束。
第三步,在就緒隊列中找到優先級最高的任務集的序號run,如果就緒隊列為空,則返回-1。
第四步,如果run為-1,則timeList[i]=-1;否則,對當前執行任務集run進行處理(具體處理算法如圖9),處理完以後恢復對任務處理時刪除的邊;模擬時間i++;轉至第二步執行。
其中,考慮是否是就緒任務的準則就是任務集的第nowRunTaskIndex(初始化為零)個子任務的在graph圖中的入度是否為零。同時,考慮到模擬仿真序列的完整性,本發明把模擬的總時間考慮得儘量合理。現在的公式是所有任務的定時器的最小公倍數×任務的個數。算法的流程如圖8所示。
圖8對算法總體上進行了描述,但是對如何對當前任務進行處理還沒有詳細的說明,下面是處理當前任務的算法第一步,判斷當前執行任務集run是否是可搶佔的任務集,如果不可搶佔跳到第七步執行。
第二步,得到當前任務集(即第run個任務)的目前執行子任務(第nowRunTaskIndex個子任務)nowNode,把它的執行時間加1,並且判斷它是否執行完成,如果沒有則跳到第六步執行。
第三步,把當前執行任務集的目前執行子任務標記(nowRunTaskIndex)加1,如果下一個子任務等待或者當前子任務為run任務集的最後一個子任務,run任務集等待。
第四步,如果當前執行子任務激活時鐘,把時鐘激活,且把taskGraph中相應位置零。
第五步,判斷當前執行子任務有沒有控制其他子任務的邊。如果有,對這些邊進行逐條地處理如是setEvent邊,將邊刪除,判斷此時被控子任務所在的任務集是否就緒;如果是activeTask邊,且被激活子任務所在的任務集等待且它的當前執行子任務為第一個子任務,把這個任務集置為就緒①。
第六步,記錄任務執行情況的時間序列timeList[i]=run。跳至第十三步。
第七步,判斷本次執行當前(run)任務集的子任務是否執行完,如果執行完,則跳至第十二步。
第八步,得到當前執行子任務nowNode,如果nowNode等待,跳至第十二步。
第九步,判斷nowNode是否執行完,如果執行完,則跳至第十一步;如果沒有令timeList[i]=run。
第十步,把i毫秒能夠激活的任務激活,i++;跳到第九步。
第十一步,如果當前執行子任務激活時鐘,把時鐘激活,且把taskGraph中相應位置零。
第十二步,判斷當前執行子任務有沒有控制其他子任務的邊。如果有,對這些邊進行逐條地處理如是setEvent邊,將邊刪除,判斷此時被控子任務所在的任務集是否就緒;如果是activeTask邊,且被激活子任務所在的任務集等待且它的當前執行子任務為第一個子任務,把這個任務集置為就緒①。跳回到第七步。
第十三步,把run從就緒隊列中刪除,如果run的子任務執行完,執行子任務標記置0,i--。
其中在算法第五步和第十二步的①標誌處,對一條邊是setEvent還是activeTask邊的判斷依據如下如果某條邊的source節點是任務集的第一個子任務,即子任務名的最後一個字符為「1」,那麼這條邊是activeTask邊;反之是setEvent邊。
5、輸出模擬結果。
在本發明中,把結果以在新建的界面上畫圖的形式來展現給用戶。在輸出模擬結果的界面中,提供給用戶提供了最差和一般兩種情況下的三大結果(1)每個時刻執行的任務信息;(2)每個任務的執行時間和CPU的空閒時間;(3)系統是否可調度的信息並且輸出不可調度的原因。其中每個任務都有一條執行序列的顯示圖,白色表示沒有執行,黑色表示在當前時候執行,其中還有可以放大和縮小的選擇框和按鈕,以方便用戶使用本發明。
具體實施例如圖11所示。圖中有兩個定時器和四個任務,他們的屬性分別見圖12。另外Task1以setavtive的方式控制Task2,Task2以setavtive的方式控制Task3,Task3以setavtive的方式控制Task4。Task3以setAlarm控制alarm2,alarm1是自啟動的。
其次,在轉化成時序圖的過程中。根據任務分割的算法,我們把Task1、Task2、Task3和Task4分別分割成2、3、3、2個子任務,他們的分割的情況和設置執行時間如表
另外,再更加模型的具體情況。加上T11到T21、T21到T31、T32到T41、T31到alarm1的邊,就形成了如圖13的時序圖。
最後,用算法來遍歷時序圖。生成的結果如圖10所示。
最後,還需要注意的是,以上列舉的僅是本發明的一個具體實施例。顯然,本發明不限於以上實施例,還可以有許多變形。本領域的普通技術人員能從本發明公開的內容直接導出或聯想到的所有變形,均應認為是本發明的保護範圍。
權利要求
1.一種基於模型的實時系統的可調度性分析方法,其特徵在於,包括以下步驟(1)建立系統模型通過建模工具建立系統模型,系統模型包含三個方面任務、定時器、任務和任務/任務和定時器之間的通訊;(2)以系統模型作為輸入,進行任務分割進行任務分割通過任務分割算法實現,所述的任務分割算法如下把任務分割成n個,其中n=任務的入度+任務的出度-1-入邊中激活任務的邊的條數;未經過分割的任務稱為父任務,父任務分割後得到的任務稱為子任務;一個父任務的所有子任務稱為這個父任務的子任務集;根據系統模型的具體情況,對父任務和子任務進行手動加邊形成時序圖;(3)設計模擬用數據結構根據時序圖中的任務和各任務之間的相互關係設計模擬用數據結構,把時序圖中的信息組織成有向圖;模擬用數據結構分為三部分任務節點、子任務集和有向圖;(4)對有向圖執行算法進行仿真,得到結果執行序列在執行仿真算法以前,要設置就緒隊列;在一般情況和最差情況下設置就緒隊列的算法為在一般情況下,將自啟動的任務放入就緒隊列;在最差情況下,將入讀為零的任務放入就緒隊列;對就緒隊列設置完畢後,對有向圖執行算法進行仿真;(5)輸出模擬結果結果以在界面上畫圖的形式來展現給用戶,在輸出模擬結果的界面中,提供了最差和一般兩種情況下的三大結果每個時刻執行的任務信息、每個任務的執行時間及CPU的空閒時間和系統是否可調度的信息及輸出不可調度的原因。
2.根據權利要求1所述的一種基於模型的實時系統的可調度性分析方法,其特徵在於,所述的任務和任務/任務和定時器之間的通訊,包括一個任務對另一個任務發送事件的通訊、一個任務激活另一個任務的通訊和任務對定時器的控制關係。
3.根據權利要求1所述的一種基於模型的實時系統的可調度性分析方法,其特徵在於,所述的對有向圖執行算法仿真包括以下步驟(1)設定模擬時間長度,生成時間序列,把在開始狀態就緒的任務加入到就緒隊列中,令當前執行時間為0;(2)判斷模擬時間是否到,如果模擬時間到,則結束;(3)在就緒隊列中找到優先級最高的任務,為當前執行任務集;如果就緒隊列為空,則返回-1;(4)如果(3)的返回值為-1,則將-1賦給時間序列中當前執行時間列;否則,對當前執行任務集進行處理,處理完以後恢復對任務處理時刪除的邊;當前執行時間加1;轉至(2)執行。
4.根據權利要求3所述的一種基於模型的實時系統的可調度性分析方法,其特徵在於,所述的對當前執行任務集進行處理包括以下步驟(1)判斷當前執行任務集是否是可搶佔的任務集,如果不可搶佔跳到步驟(7)執行;(2)得到當前任務集的目前執行子任務,為當前執行子任務,把它的執行時間加1,並且判斷它是否執行完成,如果沒有則跳到步驟(6)執行;(3)把當前執行任務集的目前執行子任務標記加1,如果下一個子任務等待或者當前執行子任務為當前執行任務集的最後一個子任務,當前執行任務集任務集等待;(4)如果當前執行子任務激活時鐘,把時鐘激活,且把這條激活邊刪去;(5)判斷當前執行子任務有沒有控制其他子任務的邊,若有,對這些邊進行逐條地處理如是設置事件邊,將邊刪除,判斷此時被控子任務所在的任務集是否就緒;如果是激活任務邊,且被激活子任務所在的任務集等待且它的當前執行子任務為第一個子任務,把這個任務集置為就緒;(6)將當前執行任務的序號賦給執行序列的當前執行時間列,跳至步驟(14);(7)判斷本次執行當前任務集的子任務是否執行完,如果執行完,則跳至步驟(13);(8)如果當前執行子任務等待,跳至步驟(13);(9)判斷當前執行子任務是否執行完,如果執行完,則跳至步驟(11);如果沒有,將當前執行任務的序號賦給執行序列的當前執行時間列;(10)把當前執行時間中能夠激活的任務激活,當前執行時間加1,跳到步驟(9);(11)如果當前執行子任務激活時鐘,把時鐘激活,且把相應的激活變刪除;(12)判斷當前執行子任務有沒有控制其他子任務的邊,若有,對這些邊進行逐條地處理如是設置事件邊,將邊刪除,判斷此時被控子任務所在的任務集是否就緒;如果是激活任務邊,且被激活子任務所在的任務集等待且它的當前執行子任務為第一個子任務,把這個任務集置為就緒;跳回到步驟(7);(13)把當前執行任務集從就緒隊列中刪除,如果run的子任務執行完,執行子任務標記置0,當前執行時間-1;(14)結束。
5.根據權利要求4所述的一種基於模型的實時系統的可調度性分析方法,其特徵在於,判斷邊是任務激活邊還是設置時間邊的依據如下如果該邊的源節點是任務集的第一個子任務,那麼該邊是任務激活邊;反之是設置時間邊。
全文摘要
本發明涉及嵌入式實時系統的模擬仿真技術,旨在提供一種基於模型的實時系統的可調度性分析方法。該方法包括以下步驟(1)建立系統模型;(2)以系統模型作為輸入,進行任務分割;(3)設計模擬用數據結構;(4)對有向圖執行算法進行仿真,得到結果執行序列;(5)輸出模擬結果。本發明對任務的執行順序進行詳細的模擬,具有很好的預測性,可靠性,易用性;節省了軟體開發的時間;消除了以往的可調度性分析只給一個比較籠統,比較模糊的結果的不良方面;本發明使得可調度行分析更具可行性,更加可視化,輸出內容詳盡,界面友好。
文檔編號G06F9/455GK101013384SQ20071006722
公開日2007年8月8日 申請日期2007年2月8日 優先權日2007年2月8日
發明者楊國青, 李紅, 周炎淼, 吳朝暉, 趙民德 申請人:浙江大學