【文章內(nèi)容簡介】
提到的任務均為周期性任務。任務創(chuàng)建:將任務以可執(zhí)行二進制代碼實體加載到內(nèi)存中。就緒態(tài):任務已具備運行條件,等待CPU空閑。處于就緒態(tài)的任務可以是多個。運行態(tài):任務獲取CPU資源進行執(zhí)行。處于運行態(tài)的任務只能有一個(在單處理器)。釋放時間:任務由其他狀態(tài)轉(zhuǎn)變?yōu)榫途w態(tài)的那個時刻稱為它的釋放時間。響應時間:從任務的釋放時間,到任務所有功能都完成的時刻,這段時間是任務的相應時間。當任務在執(zhí)行過程中,由于等待資源而被掛起,從任務的釋放時間到任務被掛起這段時間只是響應時間的一部分,因為任務并未完成所有的任務而放棄了CPU。剩余執(zhí)行時間:響應時間減去任務已經(jīng)執(zhí)行了的時間。截止期:任務必須在此時刻之前完成它應該執(zhí)行的所有功能。若任務的的截止期沒有限制,稱該任務沒有截止期。截止期是一個時間點??臻e時間:就是任務的絕對截止期減去任務的剩余執(zhí)行時間再減去當前時間。任務的空閑時間是一個時間段概念。相對截止期:作業(yè)的響應時間所允許的最大值稱為該作業(yè)的相對截止期。絕對截止期:它等于作業(yè)的釋放時間加上其相對截止期。在實時系統(tǒng)中,所有的作業(yè)都應該在各自的絕對截止期內(nèi)完成。最壞執(zhí)行時間:指任務在執(zhí)行期間由于各種因素的影響,在最壞的條件(時間延遲)下完成所有功能所耗費的最大執(zhí)行時間值。該參數(shù)主要用于硬實時任務調(diào)度系統(tǒng)中的一個重要衡量指標。截止期錯失率:是由系統(tǒng)中所有任務在一段時間內(nèi)未在截止期完成的總數(shù)和系統(tǒng)任務總數(shù)之間的一種比率。該指標主要用在衡量一種調(diào)度算法的優(yōu)良性。很明顯,截止期錯失率越低,系統(tǒng)對任務的調(diào)度成功率越高,調(diào)度算法性能越優(yōu)良。處理器利用率:就是CPU被任務占用執(zhí)行時間與總時間的比值。具體的衡量辦法是:系統(tǒng)中所有任務的最壞執(zhí)行時間與對應任務周期的比值之和就是處理器利用率。系統(tǒng)中所采用的任務調(diào)度算法應使得處理器的利用率必須小于100%,否則,截止期錯失率很高。處理器的利用率越高,所能處理的數(shù)據(jù)量就越大,效率也越高。由于實時系統(tǒng)的結(jié)果取決于運算結(jié)果邏輯的正確性和產(chǎn)生結(jié)果的時間,這就與一般系統(tǒng)有了如下的顯著區(qū)別:一、 時間約束性實時系統(tǒng)最明顯的特點就是添加了時間的概念,只有在規(guī)定時間內(nèi)產(chǎn)生正確的邏輯才算作最終結(jié)果的正確。按照截止時間,實時系統(tǒng)被分為“軟實時”系統(tǒng)和“硬實時”系統(tǒng)。“軟實時”系統(tǒng),雖然對結(jié)果的時效性有一定的要求,但是如果在某種特殊環(huán)境中導致了系統(tǒng)中的實時任務在執(zhí)行過程中超過了截止時間,卻不至于引起嚴重的后果(涉及到人身財產(chǎn)的損失)。比如監(jiān)控系統(tǒng)、信息采集系統(tǒng)均屬于“軟實時”系統(tǒng)。“硬實時”系統(tǒng)對時效性的要求是最為苛刻的,所有的實時任務必須在截止時間以內(nèi)完成,以免發(fā)生關系到人身傷害的致命性后果。比如汽車的安全氣囊、航天工業(yè)中的對接技術和核控制等領域均屬于“硬實時”系統(tǒng)。“軟實時”和“硬實時”兩類實時操作系統(tǒng)因?qū)嵭缘囊蟛煌?,所以“軟實時”系統(tǒng)的設計要比“硬實時”系統(tǒng)的設計相對簡單。若不涉及到人身財產(chǎn)等重大安全事故,一般的實時任務被設計為“軟實時”系統(tǒng)便足夠。二、 可預測性實時系統(tǒng)中任務必須在截止時間內(nèi)完成,這就確定了任務的執(zhí)行是可預測的。實時系統(tǒng)應該對任務的進行時限要求的判斷,確定是否可以滿足時限要求。實時系統(tǒng)包括軟硬件兩部分,在軟件層面主要涉及到中斷響應時間、系統(tǒng)任務切換時間和任務調(diào)度時間;在硬件層面主要涉及到I/O口響應時間、存儲區(qū)的讀寫和保護相應時間等。只有整個系統(tǒng)的各個環(huán)節(jié)響應時間是有界的,才可能設計出實時系統(tǒng)。三、 可靠性實時系統(tǒng)的可靠性是顯而易見的,整個系統(tǒng)的各個部分都有時間的限制要求,以確保系統(tǒng)的可靠性。但是除了時間上的可靠,因受外界復雜環(huán)境的影響(溫度、強電磁環(huán)境等)需要系統(tǒng)的各個部分都要有較強的健壯性。一個小環(huán)節(jié)出現(xiàn)問題,都可對整個系統(tǒng)造成不可估量的錯誤。實時系統(tǒng)為了避免類似情況的發(fā)生,一般在系統(tǒng)中都設計了采用靜態(tài)分析和冗余配置,讓系統(tǒng)能在最惡劣的復雜環(huán)境中都能正常工作。四、 與外部環(huán)境的交互作用性實時系統(tǒng)都是在一定的環(huán)境下運行的,外部環(huán)境是實時系統(tǒng)的組成部分。比如數(shù)據(jù)采集系統(tǒng)、各種外部環(huán)境的傳感器等。外部環(huán)境通常是被控子系統(tǒng),實時系統(tǒng)和外部環(huán)境相互作用構(gòu)成完整的實時系統(tǒng)。實時系統(tǒng)必須在規(guī)定時間內(nèi)對外部請求或異常作出反應,才能保證外部環(huán)境和整個系統(tǒng)的正常工作。以上四點特性,屬于早期簡單實時系統(tǒng)的特點。早期的實時系統(tǒng)主要組成結(jié)構(gòu)如單板機和簡單的嵌入式實時系統(tǒng)。這些系統(tǒng)的特點是調(diào)度過程相對簡單。但是隨著系統(tǒng)復雜性的提高和應用范圍的擴大,目前實時系統(tǒng)還具有如下新特性:多任務類型包括非周期任務、偶發(fā)任務、周期性任務以及非實時任務等多種類型任務混合。短暫的超載特點盡管設計人員在實時系統(tǒng)的設計初期盡可能的滿足各項實時指標,但由于總有一些實際環(huán)境的不確定性因素會造成超載。比如系統(tǒng)環(huán)境的動態(tài)變化、應用規(guī)模的擴大以及系統(tǒng)元件出現(xiàn)老化等均會造成系統(tǒng)的短暫超載。任務是系統(tǒng)中能夠完成某種功能的軟件實體,它是系統(tǒng)可以調(diào)度的基本單位。實時任務相較于一般任務多了一個時效性限制,必須在截止期內(nèi)完成。以下所稱任務,除特殊說明外均指實時任務。在實時系統(tǒng)中,按照任務的觸發(fā)時間特點將任務劃分為如下:非周期任務隨機到達系統(tǒng)的任務稱之為非周期任務。它沒有規(guī)律可循,觸發(fā)時間不確定。在仿真環(huán)節(jié),非周期任務的觸發(fā)時間可以通過仿真軟件提供的隨機數(shù)發(fā)生器來產(chǎn)生非周期任務的觸發(fā)時間進行模擬仿真。周期任務按照一個固定的時間間隔重復到達系統(tǒng)的任務稱之為周期任務。周期任務的每一次到達系統(tǒng)就稱為任務的一個任務實例。在仿真環(huán)節(jié),可以通過仿真軟件提供的定時器來周期性的產(chǎn)生周期任務的觸發(fā)時間進行模擬仿真。偶發(fā)任務相對于非周期任務,它的觸發(fā)時間有一個最小時間間隔,但是沒有周期性。在仿真環(huán)節(jié),可以通過仿真軟件提供的隨機數(shù)發(fā)生器和定時器產(chǎn)生最小間隔聯(lián)合產(chǎn)生偶發(fā)任務的觸發(fā)時間。按照任務在截止時間是否嚴格完成(超時完成),可以將任務分為:軟實時任務允許任務在截止時間內(nèi)未完成,但超時完成的任務。超時任務產(chǎn)生的結(jié)果會隨著超時時間的延長有效性逐步下降。準實時任務允許任務在截止時間內(nèi)為完成,通過超時完成的任務產(chǎn)生的結(jié)果將不再有效。軟強實時任務該類型任務一般是周期性任務才可以具備的。軟強實時任務要求周期任務的每次執(zhí)行實例按照某種規(guī)則可以超時運行,這種規(guī)則被稱為超時分布約束[31]。如不滿足該約束,就會使得系統(tǒng)不穩(wěn)定。強實時任務在截止時間內(nèi)必須完成,是實時任務中要求最為嚴格的一類任務,超時完成就會導致致命性錯誤。針對于強實時任務的截止時間應該在最壞的條件下所產(chǎn)生的最大相應時間為依據(jù)來確定,避免由于特殊情況而導致的系統(tǒng)失效。當前環(huán)境下的嵌入式實時系統(tǒng)都是多任務系統(tǒng),有的功能需要多個任務協(xié)作才能完成,有的功能只需要單個任務就可完成。實時任務間的相關性對于實時系統(tǒng)的設計至關重要。獨立性任務實時系統(tǒng)中某個功能只需要一個實時任務就可完成,不需要和其他任務之間進行交互。這類實時任務在實時系統(tǒng)的設計中最為容易,不要考慮任務間的通信問題。本文在仿真階段所涉及到的任務均為獨立任務,在驗證多任務調(diào)度算法的時候,只調(diào)度獨立性任務能直觀的顯現(xiàn)出調(diào)度算法的優(yōu)劣性。順序性任務實時系統(tǒng)中一個功能的實現(xiàn)往往需要多個任務的協(xié)作才能實現(xiàn),這多個任務類似于流水線上的工序逐個順序執(zhí)行?;コ庑匀蝿沼捎谌蝿臻g使用的資源具有互斥性而造成的,資源被一個任務占用后其他需要使用該資源的任務均不能獲取該資源進行操作,必須等到被目前占用資源的任務釋放該資源后其他任務才可獲取資源并操作。非搶占式任務實時系統(tǒng)中的任務調(diào)度大多都是基于優(yōu)先級進行調(diào)度的,非搶占式任務就是低優(yōu)先級任務在執(zhí)行過程中不得被高優(yōu)先級任務中斷,直到低優(yōu)先級任務執(zhí)行完或者被掛起釋放處理器后其他任務才能占有處理器。搶占式任務低優(yōu)先級任務在執(zhí)行過程中允許隨時被高優(yōu)先級任務中斷而掛起。實時系統(tǒng)為了實現(xiàn)硬實時任務的嚴格時限要求,實時操作系統(tǒng)一般采用搶占式優(yōu)先級調(diào)度算法,給硬實時任務賦予高優(yōu)先級來實現(xiàn)最快的任務響應。一般處理器系統(tǒng)中只有單個處理器時,如何在有限的資源下較好地進行系統(tǒng)中多任務的調(diào)度,是一個系統(tǒng)性能好壞的重要指標之一。而在多處理器系統(tǒng)中有多個處理器時,如何簡單且高效地把系統(tǒng)中的多任務合理的分配給各個處理器,從而發(fā)揮多處理器資源豐富、處理速度快的特點。調(diào)度策略就是一種解決在任務多,資源少的情況下合理利用資源并有效完成任務的一種方法。放在操作系統(tǒng)中就是定義了如何選擇將處于就緒狀態(tài)的任務提升為執(zhí)行狀態(tài)。操作系統(tǒng)就是用來實現(xiàn)在有限資源下調(diào)度多任務的功能,每個多任務操作系統(tǒng)都使用了一定的調(diào)度策略。而調(diào)度策略的好壞直接影響系統(tǒng)的實時性以及CPU的功耗。調(diào)度策略的主要指標有CPU利用率以及截至期限丟失率等。一個有效的任務調(diào)度應滿足如下幾個條件:一、每個處理器在任意時刻只分配最多一個任務。二、每個任務在任意時刻最多被分配給一個處理器。三、任務只有被釋放后才能被調(diào)度。四、基于所用的調(diào)度算法,分配給每個任務的處理器時間總和等于其最大或者實際處理器執(zhí)行時間。五、所有的優(yōu)先權和資源使用限制得到滿足。為了更好的實現(xiàn)嵌入式多任務的控制性能,保證更好的控制效果,本文對目前常用的操作系統(tǒng)中所采用的主流多任務調(diào)度策略進行了研究與分析,在此基礎上提出了優(yōu)先級周期性互換的多任務調(diào)度算法。時間片輪轉(zhuǎn)法是一種主要用于分時系統(tǒng)中的多任務調(diào)度算法,常見于服務器中的多任務調(diào)度算法。該算法是最公平、最簡單容易實現(xiàn)的調(diào)度算法。它的工作原理是將系統(tǒng)處理任務的時間分成等長時間片,并且維護一個任務就緒隊列表,按照任務的釋放時間進行排隊。進入隊列最早的任務首先分配時間片執(zhí)行,如果在給定時間片內(nèi)任務未執(zhí)行完,任務就被釋放,排列到任務就緒隊列表的最后一個位置,原先的第二個任務開始執(zhí)行,如此往復。如果給定時間內(nèi)任務已經(jīng)執(zhí)行完畢,處理器馬上進行切換下個任務進行執(zhí)行。時間片是分時系統(tǒng)中的一個重要的參數(shù),該參數(shù)的確定一般依據(jù)系統(tǒng)的處理能力、系統(tǒng)對相應時間的要求和就緒隊列中進程數(shù)目三個方面進行參考。通常為幾十毫秒到幾百毫秒數(shù)量級,不能取的過大或過小。對于時間片輪轉(zhuǎn)法,很明顯一個問題:假定時間片大小為t,某個任務執(zhí)行完成所需要的執(zhí)行時間是T。當T/t等于整數(shù)時,任務執(zhí)行及時;當T/t大于t/2時,任務執(zhí)行也算及時;當T/t小于t/2時,此時任務要完成就必須等到下個執(zhí)行周期分到的時間片進行執(zhí)行,顯然對于任務有效執(zhí)行很不利。針對上述問題,顯而易見的解決方法就是:當任務的一個時間片用完后,就對該任務的剩余執(zhí)行時間和時間片進行比較,若任務剩余執(zhí)行時間大于等于t/2時,就調(diào)用下個任務執(zhí)行;若任務剩余執(zhí)行時間小于t/2時,就在該時間片后添加和任務剩余執(zhí)行時間等長的時間段將剩余的任務執(zhí)行完畢。這樣一來就大大減小了任務執(zhí)行周期,提高了任務執(zhí)行效率[32]。先來先服務調(diào)度算法和通常意義上的排隊是一樣的。處理器按照任務的釋放時間進行排隊,建立一個就緒隊列表。最先到達的任務最先占用處理器進行執(zhí)行,不論該任務的執(zhí)行時間有多長,直到該任務執(zhí)行完畢或者掛起才釋放處理器。處理器加載下個任務進行處理,如此一直執(zhí)行完所有任務。先來先服務調(diào)度算法只需要依賴任務的釋放時間進行調(diào)度,所以實現(xiàn)比較容易。先來先服務任務調(diào)度算法存在以下問題:從形式上看,它的調(diào)度策略符合一般的排隊模型,比較公平。但是,假如最先到的任務是一個需要長響應時間的任務,后面的任務均是響應時間很短的任務。先來先服務調(diào)度算法為了執(zhí)行一個長響應時間的任務而造成了后面所有短響應時間任務的很大延遲。在這個意義上講,先來先服務任務調(diào)度算法又是不公平的。所以,先來先服務任務調(diào)度算法在實際系統(tǒng)中很少單獨用,通常的做法都是將先來先服務任務調(diào)度算法和其他算法相結(jié)合。比如基于優(yōu)先級任務調(diào)度算法中,在相同優(yōu)先級之間采用先來先服務調(diào)度算法。單調(diào)速率調(diào)度算法被證明是最優(yōu)靜態(tài)實時調(diào)度算法。所謂靜態(tài)是指實時操作系統(tǒng)為所有任務分配的優(yōu)先級是根據(jù)某種算法得出,在運行過程中任務的優(yōu)先級不再發(fā)生變化。其后有很多研究人員基于單調(diào)速率調(diào)度為基礎進行算法的改進和優(yōu)化。單調(diào)速率調(diào)度算法是由Liu和Layland在“Scheduling Algorithm for Multiprogramming in a Hard Real Time Environment”提出的。實時操作系統(tǒng)中所處理的任務優(yōu)先級是根據(jù)任務的周期決定的,任務的周期越短優(yōu)先級越高。另外,單調(diào)速率調(diào)度算法是基于優(yōu)先級搶占式任務調(diào)度算法,低優(yōu)先級任務在執(zhí)行過程中允許隨時被高優(yōu)先級任務中斷。單調(diào)速率調(diào)度算法是在如下條件下提出的:一、在單個處理器中,所有的任務都是周期性運行的。二、忽略上下文切換時間。三、任務的執(zhí)行時間是恒定的。四、任務之間相互獨立,沒有數(shù)據(jù)交換或者資源互斥。五、任務截止期限都在它們周期的結(jié)束點上。六、搶占式調(diào)度算法,優(yōu)先級最高的就緒任務一定會被選擇執(zhí)行。單調(diào)速率算法的核心是通過周期這個唯一因素來決定優(yōu)先級高低,任務周期越短相應的優(yōu)先級就越高。在單調(diào)速率調(diào)度中,被調(diào)度任務集滿足下面的條件,則可調(diào)度[33]:這個條件是充分而非必要的,利用單調(diào)速率算法調(diào)度的必要條件是:。 單調(diào)速率調(diào)度算法對應的任務數(shù)與CPU最高利用率任務數(shù)123458,n表示系統(tǒng)中任務個數(shù)。當系統(tǒng)中的任務數(shù)趨于無窮時。該極限值表明,實時操作系統(tǒng)要使用單調(diào)速率調(diào)度算法進行多任務調(diào)度,那么所有任務的執(zhí)行時間與任務周期比值之和不能超過ln2。負責,系統(tǒng)采用單調(diào)速率調(diào)度算法將失效。如果系統(tǒng)中還有一些任務對時間沒有要求,也可能使得處理器的利用率達到100%。處理器利用率一旦達到100%,就導致系統(tǒng)不能再添加新任務,產(chǎn)品無法升級等問題。所以,在設計系統(tǒng)和選取任務調(diào)度算法時最好對現(xiàn)有資源留有一定的裕量,便于系統(tǒng)的維護和升級。對于單調(diào)速率調(diào)度算法,下面進行對一個實例分析:設一個任務用參數(shù)表示為P(T,E)。其中T表示任務周期,E表示任務執(zhí)行時間,P表示任務。假設現(xiàn)在某個單處理器系統(tǒng)中有兩個周期任務,分別用符號表示為P1(4,2)和P2(6,3)。任務P1的周期為4,小于任務P2的周期6。所以根據(jù)單調(diào)速率唯一因素