加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 關于RTOS
    • RTOS真的實時嗎?
  • 推薦器件
  • 相關推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

RTOS真的是實時操作系統(tǒng)嗎?

09/05 11:00
1244
閱讀需 6 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

作者 | strongerHuang微信公眾號?|?strongerHuang

RTOS:Real Time Operating System,實時操作系統(tǒng)。那么,到底啥是實時操作系統(tǒng)呢?它真的實時嗎?

關于RTOS

RTOS:Real?Time?Operating?System,即實時操作系統(tǒng)。

來自百度百科的解釋:實時操作系統(tǒng)是指當外界事件或數(shù)據(jù)產(chǎn)生時,能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定的時間之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)做出快速響應,調(diào)度一切可利用的資源完成實時任務,并控制所有實時任務協(xié)調(diào)一致運行的操作系統(tǒng)。

實時操作系統(tǒng),體現(xiàn)的重點是實時(及時響應)。簡單說就是程序能及時的解決、處理一些比較急的事情,而不會出現(xiàn)“卡機”等情況。

比如:一個運動的小車,傳感器檢測到前方有障礙物,要立馬減速、停車,而不是半天才反應過來(反應慢了就會撞上去)。

與裸機相比從裸機轉(zhuǎn)RTOS的同學,就會拿裸機與RTOS相比較:

    • RTOS相比裸機有什么優(yōu)點?
    • RTOS相比裸機更方便嗎?......

我可以肯定的說:RTOS相比裸機更方便,優(yōu)點也更多。當然,前提是MCU資源(Flash、RAM)能滿足需求。

因為早期的MCU資源相對匱乏,比如Flash低于10K,RAM低于1K,這個時候用RTOS,優(yōu)點就不明顯,反而更容易暴露缺點。

但現(xiàn)在MCU資源相對比較多,動輒超過1M的Flash、 100K的RAM,這種情況下,如果跑裸機,我感覺太浪費MCU資源了。

分時操作系統(tǒng)相比很多人會聯(lián)想到分時操作系統(tǒng)(TSOS),RTOS和TSOS有什么區(qū)別?各自有什么特點?

現(xiàn)在的處理器速度相對更快了,分時操作系統(tǒng)的實時能力也很高了。它們的區(qū)別其實可以從字面意思上理解,分時就是分為時間片,這個時間片很小,一般us級別甚至更低。

你了解一下TSOS分時操作系統(tǒng)的調(diào)度機制,你就會更加明白二者之間的區(qū)別了。

這一節(jié)可以參看我的之前分享的文章:RTOS和TSOS有什么區(qū)別?

RTOS真的實時嗎?

回到今天的話題:RTOS真的實時嗎?

嚴格來說,RTOS也不是實時響應并處理緊急的事情,只是在很短時間(一般ms級別)就做出了響應,給人感覺就是實時在響應。

單個CPU,在同一個時間只能處理一件事(只能執(zhí)行一處程序),你創(chuàng)建了任務1、 任務2、 任務3......等多個任務,CPU在執(zhí)行的時候都是輪流(按照優(yōu)先級)執(zhí)行。

1.系統(tǒng)滴答

RTOS實時響應有一個重要的配置,那就是系統(tǒng)滴答(SysTick)。

比如FreeRTOSConfig.h

#define configTICK_RATE_HZ        ((TickType_t)1000)

再比如μCOS系統(tǒng)的os_cfg.h

#define OS_TICKS_PER_SEC        1000u

系統(tǒng)滴答決定了你RTOS底層調(diào)度的時間大小,如果設置1000,那么1ms就會調(diào)度一次,也就說1ms會做出一次響應。

拿上面小車遇到障礙物為例:傳感器檢測到障礙物,通知更高優(yōu)先級任務進行剎車,這個過程只需要1ms就會得到響應。

你肯定說:那我設置10000,是不是0.1ms就會做出響應?是不是系統(tǒng)滴答越大越好?

按理說系統(tǒng)滴答值越大響應越快,但系統(tǒng)調(diào)度也是需要占用時間:

調(diào)度的時間長度不變,如果N到N+1之間時間越短(滴答),留給執(zhí)行任務的時間就越短。

所以,滴答值也不是越大越好,需要一個合理的值,可以參看:RTOS滴答Tick設置多少才合適?

2.硬件中斷

從裸機開發(fā)轉(zhuǎn)RTOS的同學就有這樣一個思維:我用中斷就能做到實時響應。

的確,中斷能做到實時響應,但不能滿足大部分需求。

拿上面小車剎車來說:比如檢測到前方障礙物立刻做出中斷響應,此刻執(zhí)行減速的動作,這個動作假如是S曲線(減減速)剎車,執(zhí)行時間為1s。

如果你在中斷函數(shù)里面執(zhí)行這個1s剎車動作,CPU就不會做其他事情了,這樣你覺得可以嗎?

硬件中斷只能做出一個“緊急通知”,不能做出(耗時的)執(zhí)行動作。

RTOS結(jié)合硬件中斷就能完美解決這個問題,中斷通知高優(yōu)先級任務執(zhí)行剎車減速的動作,但這個過程可能需要1ms。

所以,你會發(fā)現(xiàn)RTOS并非真正的實時,只是這個時間很短,你感覺不出來。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
ASEMPLV-100.000MHZ-LR-T 1 Abracon Corporation MEMS OSC XO 100.0000MHZ LVDS SMD
$4.89 查看

相關推薦

電子產(chǎn)業(yè)圖譜

作者黃工,從事嵌入式軟件開發(fā)工作8年有余,高級嵌入式軟件工程師,業(yè)余維護公眾號『strongerHuang』,分享嵌入式軟硬件、單片機、物聯(lián)網(wǎng)等內(nèi)容。