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