電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 25|回復(fù): 0
收起左側(cè)

詳解FreeRTOS:嵌入式多任務(wù)系統(tǒng)的多任務(wù)機(jī)制(理論篇—2)

[復(fù)制鏈接]

601

主題

601

帖子

4762

積分

四級會員

Rank: 4

積分
4762
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2023-5-6 12:01:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

% h. s4 Z! [5 \" E5 O9 q. o' h6 F點擊上方藍(lán)色字體,關(guān)注我們
  E* _: o3 R' b, n, U$ g0 Q' m8 y- x, ?9 D: y, ~4 j1 W
任務(wù)A和任務(wù)B按照等長時間輪流占用處理器,在單處理器上造成多個任務(wù)同時運(yùn)行的假象。: L( y( N; t" ~4 w3 C2 e5 q
& U/ V5 @2 r2 p
這里先聊一聊多任務(wù)系統(tǒng)架構(gòu)的分割時間段。
# i% G1 v' S, Z# Z) _  s- W3 w1 w
1 H  o9 ^; M' e將處理器運(yùn)行時間分成小的時間段指明了把處理器時間以多大的頻率分割成固定長度的時間片段,也叫做多任務(wù)系統(tǒng)架構(gòu)的時鐘節(jié)拍。作為多任務(wù)系統(tǒng)運(yùn)行的時間尺度,時鐘節(jié)拍是通過特定的硬件定時器產(chǎn)生的。硬件定時器會產(chǎn)生周期的中斷,在相應(yīng)的中斷處理函數(shù)中,內(nèi)核代碼得以運(yùn)行,從而進(jìn)行任務(wù)調(diào)度和定時器時間處理等內(nèi)核工作。! w+ Y" p; c( i2 l
/ @1 `/ y' L2 n/ G% }( S) W
; I2 H- F5 b( o5 i& _+ U9 p5 K

! j% I& m, c. s/ @8 }, u硬件定時器中斷的時間間隔取決于不同的內(nèi)核設(shè)計,一般是毫秒級的。時鐘節(jié)拍越快,內(nèi)核函數(shù)介入系統(tǒng)運(yùn)行的幾率就越大,時鐘節(jié)拍中斷響應(yīng)次數(shù)越多,內(nèi)核占用的處理器時間越長。相反,如果時鐘節(jié)拍太慢,則導(dǎo)致任務(wù)的切換間隔時間過長,進(jìn)而影響到系統(tǒng)對事件的響應(yīng)效果。1 ?; u4 _4 T; t7 o' u  S

% Q; t  U$ I5 T. k0 s- s: w& W舉個例子,如下圖所示,硬件定時器按照固定的時間間隔產(chǎn)生中斷,然后在時鐘節(jié)拍中斷ISR中(圖中以T標(biāo)記)處理內(nèi)核的工作。T0~T1這段時間是內(nèi)核占用的時間(時鐘節(jié)拍處理程序),T1~T2這段時間是任務(wù)占用的時間。而T0~T2則是一次時鐘節(jié)拍的全部時間,可以看出,任務(wù)1的本輪執(zhí)行占用了3個時鐘節(jié)拍。
# l; `6 ]4 Z- r1 ^& f8 |( _1 B  P& v; ~2 ^
% j& ~, d5 M: ?% G3 l' {
3 R/ `# @( }9 j+ M* N: w$ G
因為不同任務(wù)的運(yùn)行路徑不同,在某一時刻有些任務(wù)可能需要等待一些資源,這時可以通過某種方案,使當(dāng)前任務(wù)讓出處理器,從而避免因為任務(wù)等待資源而長期占有處理器而使其他任務(wù)無法運(yùn)行。這樣多任務(wù)機(jī)制可以使處理器的利用率得到提高,并提高了系統(tǒng)的處理能力。
& n$ }/ l, u) @2 E1 p/ T7 V1 ^/ o: w' I, V7 k+ j$ I
在多任務(wù)操作系統(tǒng)內(nèi)核中必須提供解決并發(fā)任務(wù)的機(jī)制。通用操作系統(tǒng)一般以“進(jìn)程”、“線程"等為單位來管理用戶任務(wù)。
0 F, b- L3 z( N9 h! N8 B! O/ D$ `+ x  M5 Y' z1 B/ L1 E( ^
但在很多嵌入式操作系統(tǒng)中,并沒有區(qū)分進(jìn)程和線程,只是把整個操作系統(tǒng)當(dāng)作一個大的運(yùn)行實體,其中運(yùn)行著很多任務(wù)。任務(wù)通常作為調(diào)度的基本單位。
) h6 E7 s. h( r, Q1 C
( _0 q- G/ `- z2 d # c2 x4 T9 `- Q
往期推薦汽車軟件開發(fā)V模型過程中AUTOSAR工具鏈的應(yīng)用6 e2 `( I8 |: E, A6 C: O
一文搞懂UART通信協(xié)議
" G! F# T. v+ l! j# |LabVIEW顯示控件中內(nèi)容過長設(shè)置自動滾動條% c( l% D+ |& M5 v& N  H' U* F7 g
LabVIEW圖像模式匹配(基礎(chǔ)篇—11)4 ]% m& M7 ~( v9 G; f  [
Python Qt GUI設(shè)計:窗口布局管理方法【基礎(chǔ)】(基礎(chǔ)篇—5)
5 Y2 O) ^8 Z" W" M萬萬沒想到,低功耗也會燒毀元器件?/ P& |( a+ D" f( T" t7 f( z6 K
OpenCV制作類似“全能掃描王”的簡易掃描軟件
" G. Q8 P* V4 M. b- _
# b) l+ f7 `4 m1 j

  Q2 u5 K- J, u  w7 s* a0 `1 \( |& K+ Q! _4 J% D5 ?$ s6 T
. S& G" S5 p- B; X* G

# S3 s2 p+ a7 E9 @- R點擊閱讀原文,更精彩~
回復(fù)

使用道具 舉報

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表