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

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

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

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

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

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

關(guān)于RTOS

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

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

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

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

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

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

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

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

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

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

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

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

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

RTOS真的實(shí)時嗎?

回到今天的話題:RTOS真的實(shí)時嗎?

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

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

1.系統(tǒng)滴答

RTOS實(shí)時響應(yīng)有一個重要的配置,那就是系統(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)度的時間大小,如果設(shè)置1000,那么1ms就會調(diào)度一次,也就說1ms會做出一次響應(yīng)。

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

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

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

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

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

2.硬件中斷

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

的確,中斷能做到實(shí)時響應(yīng),但不能滿足大部分需求。

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

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

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

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

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

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
RSE-32.768-12.5-H14-TR-10PPM 1 Raltron Electronics Corporation Parallel - Fundamental Quartz Crystal, 0.032768MHz Nom,
暫無數(shù)據(jù) 查看
NX2012SA-32.768K-STD-MUB-1 1 Nihon Dempa Kogyo Co Ltd Parallel - Fundamental Quartz Crystal, 0.032768MHz Nom, ROHS COMPLIANT PACKAGE-2
$7.18 查看
PLR135/T5P 1 Everlight Electronics Co Ltd Receiver, 16Mbps, Panel Mount, ROHS COMPLIANT PACKAGE-3
$2.4 查看

相關(guān)推薦

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

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