博客專欄

        EEPW首頁 > 博客 > 詳解FreeRTOS:嵌入式多任務系統的多任務機制(理論篇—2)

        詳解FreeRTOS:嵌入式多任務系統的多任務機制(理論篇—2)

        發布人:美男子玩編程 時間:2023-05-16 來源:工程師 發布文章

        在詳解FreeRTOS:嵌入式軟件系統架構(理論篇—1)文章中,講解到輪詢系統架構、前后臺系統架構和多任務系統架構的特點和區別。從本篇文章開始講一講嵌入式多任務系統架構的理論知識。

        在單處理器(嵌入式MCU)的計算機系統中,在某一具體時刻處理器只能運行一個任務,但是可以通過將處理器運行時間分成小的時間段,多個任務按照一定的原則分享這些時間段的方法,輪流加載執行各個任務,從而從宏觀上看,有多個任務在處理器上同時執行,這就是單處理器系統上的多任務機制的原理,如下圖所示:

        圖片


        任務A和任務B按照等長時間輪流占用處理器,在單處理器上造成多個任務同時運行的假象。

        這里先聊一聊多任務系統架構的分割時間段。

        將處理器運行時間分成小的時間段指明了把處理器時間以多大的頻率分割成固定長度的時間片段,也叫做多任務系統架構的時鐘節拍。作為多任務系統運行的時間尺度,時鐘節拍是通過特定的硬件定時器產生的。硬件定時器會產生周期的中斷,在相應的中斷處理函數中,內核代碼得以運行,從而進行任務調度和定時器時間處理等內核工作。


        圖片


        硬件定時器中斷的時間間隔取決于不同的內核設計,一般是毫秒級的。時鐘節拍越快,內核函數介入系統運行的幾率就越大,時鐘節拍中斷響應次數越多,內核占用的處理器時間越長。相反,如果時鐘節拍太慢,則導致任務的切換間隔時間過長,進而影響到系統對事件的響應效果。

        舉個例子,如下圖所示,硬件定時器按照固定的時間間隔產生中斷,然后在時鐘節拍中斷ISR中(圖中以T標記)處理內核的工作。T0~T1這段時間是內核占用的時間(時鐘節拍處理程序),T1~T2這段時間是任務占用的時間。而T0~T2則是一次時鐘節拍的全部時間,可以看出,任務1的本輪執行占用了3個時鐘節拍。


        圖片


        因為不同任務的運行路徑不同,在某一時刻有些任務可能需要等待一些資源,這時可以通過某種方案,使當前任務讓出處理器,從而避免因為任務等待資源而長期占有處理器而使其他任務無法運行。這樣多任務機制可以使處理器的利用率得到提高,并提高了系統的處理能力。

        在多任務操作系統內核中必須提供解決并發任務的機制。通用操作系統一般以“進程”、“線程"等為單位來管理用戶任務。

        但在很多嵌入式操作系統中,并沒有區分進程和線程,只是把整個操作系統當作一個大的運行實體,其中運行著很多任務。任務通常作為調度的基本單位。


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: FreeRTOS 嵌入式

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 子洲县| 吴旗县| 岑溪市| 洛隆县| 南漳县| 集贤县| 米泉市| 宣城市| 湘乡市| 基隆市| 乌鲁木齐县| 丹江口市| 赤水市| 泽州县| 密山市| 赞皇县| 西城区| 上思县| 金寨县| 陈巴尔虎旗| 青冈县| 延庆县| 德钦县| 景德镇市| 稷山县| 白朗县| 庆安县| 广南县| 长丰县| 城固县| 文成县| 蓬溪县| 桐庐县| 鄂州市| 中宁县| 临猗县| 绍兴市| 胶州市| 峨眉山市| 福海县| 阿拉善右旗|