詳解FreeRTOS:嵌入式多任務系統(tǒng)的多任務機制(理論篇—2)
在詳解FreeRTOS:嵌入式軟件系統(tǒng)架構(理論篇—1)文章中,講解到輪詢系統(tǒng)架構、前后臺系統(tǒng)架構和多任務系統(tǒng)架構的特點和區(qū)別。從本篇文章開始講一講嵌入式多任務系統(tǒng)架構的理論知識。
在單處理器(嵌入式MCU)的計算機系統(tǒng)中,在某一具體時刻處理器只能運行一個任務,但是可以通過將處理器運行時間分成小的時間段,多個任務按照一定的原則分享這些時間段的方法,輪流加載執(zhí)行各個任務,從而從宏觀上看,有多個任務在處理器上同時執(zhí)行,這就是單處理器系統(tǒng)上的多任務機制的原理,如下圖所示:
任務A和任務B按照等長時間輪流占用處理器,在單處理器上造成多個任務同時運行的假象。
這里先聊一聊多任務系統(tǒng)架構的分割時間段。
將處理器運行時間分成小的時間段指明了把處理器時間以多大的頻率分割成固定長度的時間片段,也叫做多任務系統(tǒng)架構的時鐘節(jié)拍。作為多任務系統(tǒng)運行的時間尺度,時鐘節(jié)拍是通過特定的硬件定時器產生的。硬件定時器會產生周期的中斷,在相應的中斷處理函數(shù)中,內核代碼得以運行,從而進行任務調度和定時器時間處理等內核工作。
硬件定時器中斷的時間間隔取決于不同的內核設計,一般是毫秒級的。時鐘節(jié)拍越快,內核函數(shù)介入系統(tǒng)運行的幾率就越大,時鐘節(jié)拍中斷響應次數(shù)越多,內核占用的處理器時間越長。相反,如果時鐘節(jié)拍太慢,則導致任務的切換間隔時間過長,進而影響到系統(tǒng)對事件的響應效果。
舉個例子,如下圖所示,硬件定時器按照固定的時間間隔產生中斷,然后在時鐘節(jié)拍中斷ISR中(圖中以T標記)處理內核的工作。T0~T1這段時間是內核占用的時間(時鐘節(jié)拍處理程序),T1~T2這段時間是任務占用的時間。而T0~T2則是一次時鐘節(jié)拍的全部時間,可以看出,任務1的本輪執(zhí)行占用了3個時鐘節(jié)拍。
因為不同任務的運行路徑不同,在某一時刻有些任務可能需要等待一些資源,這時可以通過某種方案,使當前任務讓出處理器,從而避免因為任務等待資源而長期占有處理器而使其他任務無法運行。這樣多任務機制可以使處理器的利用率得到提高,并提高了系統(tǒng)的處理能力。
在多任務操作系統(tǒng)內核中必須提供解決并發(fā)任務的機制。通用操作系統(tǒng)一般以“進程”、“線程"等為單位來管理用戶任務。
但在很多嵌入式操作系統(tǒng)中,并沒有區(qū)分進程和線程,只是把整個操作系統(tǒng)當作一個大的運行實體,其中運行著很多任務。任務通常作為調度的基本單位。
*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。