0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于比特表實現(xiàn)實時控制系統(tǒng)RTCS的任務調度算法研究

電子設計 ? 來源:單片機與嵌入式系統(tǒng)應用 ? 作者:張勰,龔龍慶 ? 2020-09-11 17:57 ? 次閱讀

引言

微機控制領域中,許多單片機應用系統(tǒng)是實時控制系統(tǒng)RTCS(Real Time Control System)。在實時控制系統(tǒng)中,為了很好地完成外界信息的實時測量、計算和相應的多種實時控制操作,必須達到兩個設計目標;實時性和并行性。即既要保證系統(tǒng)對外界信息以足夠快的速度進行相應處理,又要同時完成多種任務操作。在這里,多種任務之間的調度是個關鍵。

RTCS 中允許多個實時任務并行地運行。例如,一測控系統(tǒng)中,具有數(shù)據采集、數(shù)據計算、鍵盤處理、定時打印等任務。在單機系統(tǒng)中,這些任務在宏觀上是同時運行的,但在微觀上只有一個任務運行。在RTCS中每個任務有三種狀態(tài),即運行狀態(tài)、就緒狀態(tài)和空閑狀態(tài)。某個任務一旦建立后即處于這三種狀態(tài)之一。處于運行狀態(tài)的任務獨占CPU和其它一些資源;就緒狀態(tài)是某個任務現(xiàn)在應該運行,但由于其它任務正在運行,故只能暫時等待;當激發(fā)某個任務的條件不完備時,此任務就處于空閑狀態(tài)。

RTCS中的多個任務依靠任務調度程序來決定系統(tǒng)中哪個任務可以獲得CPU等資源或應暫時退出運行狀態(tài)等,從而完成每個任務三態(tài)間的轉換。在RTCS中,任務調度算法的優(yōu)劣直接關系到系統(tǒng)的實時性能與并行性能。

RTCS中較簡單的任務調度算法有“先來先執(zhí)行的調度算法”、“按時間片循環(huán)執(zhí)行的調度算法”。前者,當實時性比較差的任務長時間占用CPU時,會使得實時性較高的任務得不到及時處理,影響系統(tǒng)的實時性;后者,按照“先入先出”的原則激活某個任務,并分配給它們相等的時間片,從而使得多個任務有平等的享用CPU的權利。當時間片用完時,讓任務“暫時”又處于就緒狀態(tài),并激活下一個任務。這種算法的實時性有一定程序的提高,但由于各任務簡單均勻地循環(huán)輪回,從而使得實時性要求較高的任務得不到優(yōu)先處理。由于各時間片相等且固定,很容易被某些緊急任務打斷。在實時性要求較高而且任務較多的復雜情況下,各個任務的實時性要求不盡相同,不能簡單地均勻分時處理任務。

基于比特表的任務調度算法,關鍵在于將CPU的全部時間化成若干個相等的時隙,同時根據任務的數(shù)目制定一張表格,以此來指示某一時刻的任務運行。它把任務按照實時性要求分成中斷級、時鐘級、基本級三類,而且它們的優(yōu)先級依次遞減。優(yōu)先級越高,就越處于比特表的頂端位置。比特表是按照任務的優(yōu)先級排隊的,首先滿足實時性較強的中斷級和時鐘級,而不管實時性最低的基本級任務。這樣,時鐘級任務一定能得到即時有效的處理,其實時性可以得到較好的保障,基本級任務可以沒有時間限制。但是,時鐘級任務的實時性并不是完全能夠得到保障。下面舉例討論比特表算法的不足之處。

假定有表1所示的五種任務,按照常規(guī)比特表算法根本無法設計出這樣的比特表。當時鐘級的各級每次運行時間之和沒有達到5ms時,比特表算法能夠很好地滿足系統(tǒng)實時性要求;然而,當中斷級和時鐘級的每次運行時間之和大于或者等于最高級實時性要求,更有甚者,當有一個時鐘級任務的運行時間超過最高級實時性要求時,比特表算法就會失效。因為常規(guī)的比特表算法要求,只要激活比特表中安排的中斷級和時鐘級任務就必須一次執(zhí)行完,否則,如果這個任務被中斷就無法再得到執(zhí)行。由于圖像處理的運行時間為5ms,加上中斷級任務執(zhí)行時間,因此設計時隙必須大于5ms;而比特表的設計方法時隙只可能小于等于5ms(中斷級任務和實時性最高的時鐘級任務決定的)。所以,無論安排怎樣的比徨表都無法使任務D滿足實時性要求?;谶@兩種情況,本文提出一種用賦有優(yōu)先權的時間來填充比特表的算法,以改善這兩種情況。

1 比特表的改進算法

這種改進算法的關系在于把各任務劃分為若干時間片,然后再根據實時性要求填入比特表中。根據比特表的設計方法,時隙間隔定為5ms,總時隙數(shù)為LCM(10/5,20/5,30/5)=6。把各中斷級和時鐘級任務運行時間的最大公約數(shù)定為時間片。即有如下計算公式:

T=GCD{Ti}

T為時間片,Ti為時鐘級和中斷級任務實時性要求,GCD(Greatest Common Divisor)求最大公約數(shù),LCM(Lowest Common Multiple)求最小公倍數(shù)。

本例中的時間片T=GCD{0.5,1,2.5,1,5}=0.5ms。(假設時鐘中斷處理時間為0.5ms)。

時間片的分配,必須遵循以下原則:

①滿足實時性要求;

②確保每一個時隙中所有分配的任務都必須完全運行;

③均衡考慮CPU對各任務的運行,優(yōu)先考慮時鐘級任務和中斷級任務。

按上述原則,中斷級任務分1個時間片,時鐘級1分配2個時間片,時鐘級2分配3個時間片,時鐘級3分配1個時間片,時鐘級4分配2個時間片,而將每個時隙剩余的時間分配給基本級任務。這樣,即使是在系統(tǒng)最繁忙的時候也有一個時間片分配給基本級任務,從而彌補了比特表算法的不足。

綜上所述,設計圖1所示的比特表。

此比特表的時隙任務安排完全滿足實時性要求。A任務每時隙運行1次,每時隙運行2個時間片。A任務每5ms運行1次。B任務每10ms運行1次,C任務每 20ms運行1次。由此可以得到各任務的啟動順序及執(zhí)行時間如圖2所示。

圖2 任務的啟動順序和運行時間

圖2中,I表示時鐘中斷處理程序,它的優(yōu)先級最高。A、B、C、D為時鐘級任務,其中A的優(yōu)先級較高。將I、A、B、C、D處理完后余下的時間留給基本級E。

2 程序設計值得注意的問題

在任務調度算法中,關鍵是如何確定就緒隊列、任務控制數(shù)據塊的數(shù)據結構和解決資源沖突。就緒隊列指明了在某一時刻已就緒、可被執(zhí)行的任務隊列。在數(shù)據結構上通??捎梦挥诚竦姆椒▉韺崿F(xiàn)。如系統(tǒng)的最多任務為32個,可采用4個字節(jié)的每一位來對應人某個任務。若此位為“1”,則表明該任務就緒;若為“0”,則表明任務空閑。并且可規(guī)定低位所代表的任務優(yōu)先級高于高位所指示的任務。

某個任務投入運行時需保護現(xiàn)場數(shù)據,這些數(shù)據都存入一個地址固定的數(shù)據存儲區(qū),稱為任務控制數(shù)據塊。需保護的內容應按應用程序的特點來決定。對于常用的 MCS51系列的單片機來說,現(xiàn)場保護數(shù)據一般應包括PC、ACC、PSW、SP、DPTR等寄存器內容。任務控制數(shù)據塊一般放在外部數(shù)據存儲器內。為了查找方便,可以按任務號將各個任務數(shù)據塊的首地址編成一個一維表格,表格的每行對應各任務數(shù)據塊數(shù)據結構首地址,如圖3所示。

在任務調度程序中,還應很好地解決資源的互斥問題,即保證不可共享的資源只被一個任務所訪問。在RTCS中,各任務間并非完全隔絕,它們相互合作、相互競爭。例如,某系統(tǒng)中數(shù)據顯示任務要定時顯示某數(shù)據區(qū)的數(shù)據;數(shù)據計算任務也要在某種情況下計算、刷新此數(shù)據區(qū)內容。在這里,數(shù)據計算任務在運行時就不允許讓顯示任務中斷計算任務;否則,有可能導致顯示的數(shù)據不正確。解決資源競爭的方法往往是在主程序中設置一標志字節(jié)或標志位。例如,顯示任務在運行時首先判斷此標志,若發(fā)現(xiàn)計算任務尚未完成,則不做任何工作直接退出任務。

3 小結

RTCS 中的實時性和并行性是非常重要的,但兩者之間有一定的矛盾。完全實現(xiàn)在兩大特性的重要手段就是,采用有效的任務調度算法程序來協(xié)調兩者之間的矛盾,從而保證系統(tǒng)的實時性和并行性。在簡單系統(tǒng)中,“按時間片循環(huán)”調度算法已能初步滿足要求;但在較復雜和要求較高的系統(tǒng)中,這顯然不滿足需要?;贐itMap 的調度算法能較好地滿足比較復雜系統(tǒng)的要求,而對于前面講到的系統(tǒng)中要求執(zhí)行時間長、實時性要求較高的任務而言,單純的BitMap算法無法滿足要求,這個時候我們提出將比特表的時隙細分成時間片進行分配,這比BitMap按照任務進行分配的算法更能解決復雜任務的實時性要求。只要有效地確定任務數(shù)目和數(shù)據結構,RTCS中的實時性和并行性就能得到有效提高。

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6039

    文章

    44580

    瀏覽量

    636422
  • 控制系統(tǒng)

    關注

    41

    文章

    6635

    瀏覽量

    110682
  • 數(shù)據采集

    關注

    39

    文章

    6160

    瀏覽量

    113762
收藏 人收藏

    評論

    相關推薦

    自動控制系統(tǒng)與物聯(lián)網的結合 自動控制系統(tǒng)實時監(jiān)測技術

    自動控制系統(tǒng)提供了更豐富的數(shù)據支持,而自動控制系統(tǒng)則利用這些數(shù)據實現(xiàn)了更精確、更智能的控制。 物聯(lián)網的數(shù)據支持 : 物聯(lián)網通過連接各種設備和傳感器,能夠
    的頭像 發(fā)表于 12-18 10:00 ?254次閱讀

    MES系統(tǒng)如何實現(xiàn)生產車間的實時監(jiān)控、精準調度

    MES系統(tǒng)通過數(shù)據采集、傳輸、處理和展示等技術手段,實現(xiàn)了生產過程的實時監(jiān)控;同時,通過生產計劃優(yōu)化、生產任務分配、動態(tài)調度、資源優(yōu)化和協(xié)同
    的頭像 發(fā)表于 10-07 12:51 ?450次閱讀
    MES<b class='flag-5'>系統(tǒng)</b>如何<b class='flag-5'>實現(xiàn)</b>生產車間的<b class='flag-5'>實時</b>監(jiān)控、精準<b class='flag-5'>調度</b>

    自動發(fā)電控制系統(tǒng)的基本任務

    自動發(fā)電控制系統(tǒng)(Automatic Generation Control,簡稱AGC)在電力系統(tǒng)中扮演著至關重要的角色,其基本任務可以歸納為以下幾個方面:   發(fā)電機輸出功率與總負荷功率匹配
    的頭像 發(fā)表于 10-03 15:03 ?630次閱讀

    創(chuàng)新國產PSM高壓電源控制系統(tǒng),推動核聚變科技新突破

    ,驗證EasyGo高壓控制系統(tǒng)在不同控制算法下,對高壓電源的優(yōu)異控制效果。 一、高壓電源控制系統(tǒng) 在高壓電源
    發(fā)表于 09-18 10:56

    vue+spring boot人員定位系統(tǒng)源碼,實現(xiàn)實時定位、智慧調度、軌跡追蹤

    、機具、物料上定位標簽回傳的位置信息數(shù)據,采用多維定位模式,精確定位人、機具、物料的實時位置,實現(xiàn)實時定位、物料標簽配置、智慧調度、軌跡追蹤、工時統(tǒng)計、區(qū)域物料統(tǒng)計、電子圍欄等應用功能。 技術架構:java+ spring bo
    的頭像 發(fā)表于 08-08 14:27 ?776次閱讀
    vue+spring boot人員定位<b class='flag-5'>系統(tǒng)</b>源碼,<b class='flag-5'>實現(xiàn)實時</b>定位、智慧<b class='flag-5'>調度</b>、軌跡追蹤

    伺服控制系統(tǒng)與變頻控制系統(tǒng)的比較

    在現(xiàn)代工業(yè)自動化領域中,伺服控制系統(tǒng)和變頻控制系統(tǒng)作為兩大關鍵技術,在提升生產效率、優(yōu)化產品質量以及實現(xiàn)能源高效利用等方面發(fā)揮著至關重要的作用。然而,兩者在原理、結構、性能特點以及應用領域等方面存在
    的頭像 發(fā)表于 06-05 17:06 ?1206次閱讀

    鴻蒙開發(fā)接口資源調度:【@ohos.workScheduler (延遲任務調度)】

    開發(fā)者在開發(fā)應用時,通過調用延遲任務注冊接口,注冊對實時性要求不高的延遲任務,該任務默認由系統(tǒng)安排,在
    的頭像 發(fā)表于 06-04 10:01 ?938次閱讀
    鴻蒙開發(fā)接口資源<b class='flag-5'>調度</b>:【@ohos.workScheduler (延遲<b class='flag-5'>任務</b><b class='flag-5'>調度</b>)】

    淺析FreeRTOS任務調度器的三種調度算法和應用

    FreeRTOS在MCU領域應用非常廣泛,今天就給大家講解一下FreeRTOS調度器中的三種調度算法,以及在瑞薩RZ/T2L MPU中的應用。
    的頭像 發(fā)表于 05-10 14:02 ?7585次閱讀
    淺析FreeRTOS<b class='flag-5'>任務</b><b class='flag-5'>調度</b>器的三種<b class='flag-5'>調度</b><b class='flag-5'>算法</b>和應用

    STM32F103 FreeRTOS任務調度異常的原因?

    系統(tǒng)設置2個任務,系統(tǒng)運行時出現(xiàn)一些異?,F(xiàn)象,請問有沒有遇到過?是什么原因引起的? 方式1:系統(tǒng)運行正常 void Task1_Task(void * pvParameters) {
    發(fā)表于 04-16 06:24

    FreeRTOS任務調度器的三種調度算法講解(下)

    配置如下時,調度算法就會變成不帶時間片的搶占式調度
    的頭像 發(fā)表于 03-21 13:46 ?2973次閱讀
    FreeRTOS<b class='flag-5'>任務</b><b class='flag-5'>調度</b>器的三種<b class='flag-5'>調度</b><b class='flag-5'>算法</b>講解(下)

    淺談智能照明控制系統(tǒng)在綜合管廊中的設計應用與研究

    智能化、現(xiàn)代化技術成果的應用也日漸廣泛。照明系統(tǒng)作為城市綜合管廊設備系統(tǒng)中的一個重要組成部分,如何實現(xiàn)高效控制、節(jié)能環(huán)保等要求已經成為擺在我們面前的重要課題。經歷多年的發(fā)展完善,智能照
    發(fā)表于 02-27 14:52

    DCS控制系統(tǒng)原理 DCS控制系統(tǒng)的基本功能

    DCS(分散控制系統(tǒng))是一種廣泛應用于工業(yè)自動化領域的控制系統(tǒng)。它具有分散控制、集中管理的特點,能夠實現(xiàn)對生產過程的進行實時監(jiān)測、
    的頭像 發(fā)表于 02-02 11:17 ?3428次閱讀

    鴻蒙OS 分布式任務調度

    形式、數(shù)據結構、服務描述語言,屏蔽硬件差異;支持遠程啟動、遠程調用、業(yè)務無縫遷移等分布式任務。 分布式任務調度平臺在底層實現(xiàn) Ability(分布式
    的頭像 發(fā)表于 01-29 16:50 ?514次閱讀

    分布式大屏控制系統(tǒng)的應用場景

    分布式大屏控制系統(tǒng)具有廣泛的應用場景,主要涉及以下幾個方面: 監(jiān)控指揮中心:如交通指揮中心、電力調度中心、應急指揮中心等,用于實時監(jiān)控、調度和指揮,保證
    的頭像 發(fā)表于 01-29 14:25 ?761次閱讀

    鴻蒙原生應用/元服務開發(fā)-延遲任務說明(一)

    添加到執(zhí)行隊列,系統(tǒng)會根據內存、功耗、設備溫度、用戶使用習慣等統(tǒng)一調度拉起應用。 二、運行原理 圖1 延遲任務實現(xiàn)原理 應用調用延遲任務接口添加、刪除、查詢延遲
    發(fā)表于 01-16 14:57