0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RTOS如何實(shí)現(xiàn)多任務(wù)?這篇文章告訴你答案

如意 ? 來源:RTOS如何實(shí)現(xiàn)多任務(wù)?這篇 ? 作者:RTOS如何實(shí)現(xiàn)多任務(wù) ? 2020-08-24 16:52 ? 次閱讀

很多朋友長(zhǎng)時(shí)間使用裸機(jī)編程,切換過來學(xué)習(xí)RTOS,就對(duì)其中很多概念產(chǎn)生了誤解。

大部分人開始學(xué)習(xí)RTOS實(shí)時(shí)操作系統(tǒng)時(shí),對(duì)RTOS中的一些概念都不太理解。

一上來就是臨界段、調(diào)度、信號(hào)量、互斥鎖等這些概念,相信大部分都是是懵的。

不太懂這些概念很正常,一下子懂了,我倒反而覺得不正常。

1什么是多任務(wù)

這里大部分人應(yīng)該都是從裸機(jī)階段過來的,裸機(jī)系統(tǒng)一般也稱之為單任務(wù)系統(tǒng)、輪詢系統(tǒng)或前后臺(tái)系統(tǒng)。

這個(gè)概念相信大家都能明白,輪詢就是在一個(gè)大while循環(huán)里執(zhí)行。前后臺(tái)系統(tǒng)就是在執(zhí)行while時(shí),有中斷(前臺(tái))響應(yīng)的系統(tǒng)。

RTOS如何實(shí)現(xiàn)多任務(wù)?這篇文章告訴你答案

那么,什么是多任務(wù)呢?

當(dāng)多任務(wù)操作系統(tǒng)使用某種任務(wù)調(diào)度策略允許兩個(gè)或更多進(jìn)程并發(fā)共享一個(gè)處理器時(shí),事實(shí)上處理器在某一時(shí)刻只會(huì)給一件任務(wù)提供服務(wù)。

因?yàn)槿蝿?wù)調(diào)度機(jī)制保證不同任務(wù)之間的切換速度十分迅速,因此給人多個(gè)任務(wù)同時(shí)運(yùn)行的錯(cuò)覺。

---來自百度百科

初學(xué)者可以理解為:有類似上面的多個(gè)輪詢系統(tǒng)。

如下代碼,將大while中的多項(xiàng)事情,分為幾個(gè)事情,分別處理。

RTOS如何實(shí)現(xiàn)多任務(wù)?這篇文章告訴你答案

這里就要牽涉到各個(gè)任務(wù)之間的切換:任務(wù)調(diào)度。

2任務(wù)調(diào)度

說任務(wù)調(diào)度之前,先說一插曲:

我開始學(xué)RTOS時(shí),覺得CPU這么短時(shí)間(1ms)在各個(gè)任務(wù)之間來回切換,而且切換還需要執(zhí)行那么多代碼,這樣CPU還能執(zhí)行多少代碼啊?

其實(shí),我當(dāng)時(shí)太低估了處理器的能力。

STM32F103跑72M來說,1ms時(shí)間可以執(zhí)行的代碼有多少,你們心里有概念嗎?

沿著這個(gè)問題,大家深思,其實(shí)都能明白,區(qū)區(qū)那切換(任務(wù)調(diào)度)的代碼對(duì)于CPU速度來說,可以忽略(當(dāng)然,這個(gè)相對(duì))。

任務(wù)調(diào)度

任務(wù)調(diào)度可以分搶占調(diào)度和輪詢調(diào)度。

在RTOS中,為了使任務(wù)得到實(shí)時(shí)響應(yīng),一般使用搶占調(diào)度方式,我們拿UCOS為例:

RTOS如何實(shí)現(xiàn)多任務(wù)?這篇文章告訴你答案

你會(huì)發(fā)現(xiàn)只程序執(zhí)行過程中,如果有高優(yōu)先級(jí)任務(wù)帶來,高優(yōu)先級(jí)任務(wù)就會(huì)打斷低優(yōu)先級(jí)任務(wù)。

直到高優(yōu)先級(jí)任務(wù)執(zhí)行完,低優(yōu)先級(jí)任務(wù)才得到相應(yīng)。

這里有人可能會(huì)問:如果高優(yōu)先級(jí)一直或者長(zhǎng)時(shí)間執(zhí)行可以嗎?

答案是:NO

這里就關(guān)系到任務(wù)優(yōu)先級(jí)分配,以及任務(wù)設(shè)計(jì)問題。

一般來說,高優(yōu)先級(jí)任務(wù)是在等待一個(gè)事件的觸發(fā),執(zhí)行一件緊急,而不會(huì)太耗時(shí)的事情。

太耗時(shí)任務(wù)一般留給低優(yōu)先級(jí)任務(wù),在系統(tǒng)不忙時(shí)慢慢處理。

RTOS如何實(shí)現(xiàn)多任務(wù)?這篇文章告訴你答案

調(diào)度過程

我們?cè)O(shè)置系統(tǒng)滴答為1ms時(shí)間,那么系統(tǒng)就會(huì)間隔1ms檢查一次就緒任務(wù)中優(yōu)先級(jí)更高的任務(wù)。

這個(gè)1ms滴答是由定時(shí)器中斷產(chǎn)生,一般像在STM32由內(nèi)核滴答定時(shí)器產(chǎn)生。

如上圖,他在(2)的位置就檢測(cè)到有更高優(yōu)先級(jí)任務(wù)(7)就緒,此時(shí)就會(huì)跳轉(zhuǎn)到任務(wù)(7)去執(zhí)行。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RTOS
    +關(guān)注

    關(guān)注

    20

    文章

    804

    瀏覽量

    119113
  • 多任務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    9037
  • 優(yōu)先級(jí)
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    8718
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    深入理解和實(shí)現(xiàn)RTOS_連載

    的前生今世感興趣,建議仔細(xì)閱讀《嵌入式操作系統(tǒng)史話》這個(gè)連載的文章,作者何小慶教授花了很多精力編寫了這組資料。深入理解和實(shí)現(xiàn)RTOS_連載2_多任務(wù)機(jī)制概述在前面我們?cè)榻B了多任務(wù)
    發(fā)表于 05-29 11:20

    深入理解和實(shí)現(xiàn)RTOS_連載

    /325438。作者何小慶教授花了很多精力編寫了這組資料。深入理解和實(shí)現(xiàn)RTOS_連載2_多任務(wù)機(jī)制概述在前面我們?cè)榻B了多任務(wù)系統(tǒng)是如何演化的。和前后臺(tái)系統(tǒng)相比較,
    發(fā)表于 05-30 01:02

    RTOS多任務(wù)同步和通訊

    、郵箱、事件標(biāo)記、管道、信號(hào)和條件變量等。深入理解和實(shí)現(xiàn)RTOS深入理解和實(shí)現(xiàn)RTOS_連載6_多任務(wù)同步和通訊.pdf (379.46 K
    發(fā)表于 02-18 06:35

    RTOS多任務(wù)機(jī)制應(yīng)用演示

    的執(zhí)行路徑。深入理解和實(shí)現(xiàn)RTOS深入理解和實(shí)現(xiàn)RTOS_連載5_多任務(wù)機(jī)制應(yīng)用.pdf (247.18 KB )
    發(fā)表于 02-17 23:30

    實(shí)時(shí)多任務(wù)操作系統(tǒng)(RTOS

    任務(wù)、進(jìn)程和線程。實(shí)時(shí)多任務(wù)操作系統(tǒng)(RTOS)是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺(tái),它是根據(jù)操作系統(tǒng)的工作特性
    發(fā)表于 08-24 06:34

    如何去實(shí)現(xiàn)基于stm32的FreeRTOS多任務(wù)程序

    基于 stm32 的 FreeRTOS多任務(wù)程序實(shí)現(xiàn)一、什么是FreeRTOS二、AHT20數(shù)據(jù)采集原理電路繪制三、FreeRTOS的多任務(wù)程序設(shè)計(jì)四、參考資料一、什么是FreeRTOSFree 即
    發(fā)表于 08-24 07:45

    RTOS中的多任務(wù)切換怎么實(shí)現(xiàn)?

    RTOS中的多任務(wù)切換怎么實(shí)現(xiàn)?
    發(fā)表于 11-30 07:23

    RTOS中的多任務(wù)切換的相關(guān)資料分享

    函數(shù)四.總流程五.結(jié)果六.后記(含代碼鏈接)一. 簡(jiǎn)介??RTOS中的多任務(wù)切換是操作系統(tǒng)與裸機(jī)編程的一個(gè)非常大的區(qū)別,一般邏輯變成運(yùn)行在一個(gè)循環(huán)內(nèi),裸機(jī)編程很難實(shí)現(xiàn)兩個(gè)事件的并行(這里的并行指的是
    發(fā)表于 12-06 07:08

    如何使用Tracealyzer理解多任務(wù)調(diào)度?

    使用實(shí)時(shí)操作系統(tǒng) (RTOS) 時(shí),可能已經(jīng)注意到,傳統(tǒng)的調(diào)試器不足以解決很多類型的問題。調(diào)試器僅在斷點(diǎn)位置停止運(yùn)行時(shí),顯示當(dāng)前系統(tǒng)狀態(tài),但是系統(tǒng)是如何到達(dá)這個(gè)狀態(tài)的?任務(wù)的運(yùn)行時(shí)間是多少?每個(gè)
    發(fā)表于 12-17 16:01

    什么是多任務(wù)系統(tǒng)?FreeRTOS任務(wù)與協(xié)程簡(jiǎn)析

    FreeRTOS學(xué)習(xí)之FreeRTOS任務(wù)基礎(chǔ)知識(shí)轉(zhuǎn)行小白一枚,通過博客記錄自我學(xué)習(xí),望更多博友多多指點(diǎn),感激不盡!RTOS系統(tǒng)的核心就是任務(wù)管理,學(xué)習(xí)RTOS系統(tǒng)主要是為了使用
    發(fā)表于 02-18 06:38

    51單片機(jī)多任務(wù)機(jī)制的實(shí)現(xiàn)策略研究

    從操作系統(tǒng)實(shí)現(xiàn)多任務(wù)機(jī)制的原理入手,分析了51單片機(jī)實(shí)現(xiàn)多任務(wù)機(jī)制的基本條件,論述了5l單片機(jī)實(shí)現(xiàn)多任務(wù)
    發(fā)表于 09-19 17:26 ?159次下載
    51單片機(jī)<b class='flag-5'>多任務(wù)</b>機(jī)制的<b class='flag-5'>實(shí)現(xiàn)</b>策略研究

    到底該不該用RTOS?看完就有答案

    到底該不該用RTOS,看完就有答案
    的頭像 發(fā)表于 02-25 16:17 ?3279次閱讀

    RTOS實(shí)時(shí)操作系統(tǒng)怎么執(zhí)行多任務(wù)的?

    RTOS實(shí)時(shí)操作系統(tǒng)中是怎樣實(shí)現(xiàn)多任務(wù)的?
    的頭像 發(fā)表于 03-03 13:49 ?4508次閱讀
    <b class='flag-5'>RTOS</b>實(shí)時(shí)操作系統(tǒng)怎么執(zhí)行<b class='flag-5'>多任務(wù)</b>的?

    分析RTOS實(shí)現(xiàn)多任務(wù)調(diào)度的基本原理

    概念,相信大部分初學(xué)者都是懵的。 不太懂這些概念很正常,一下子懂了,我倒反而覺得不正常。 1什么是多任務(wù) 這里大部分人應(yīng)該都是從裸機(jī)階段過來的,裸機(jī)系統(tǒng)一般也稱之為單任務(wù)系統(tǒng)、輪詢系統(tǒng)或前后臺(tái)系統(tǒng)。 這個(gè)概念相信大家都能明白,輪詢
    的頭像 發(fā)表于 07-27 15:59 ?5293次閱讀
    分析<b class='flag-5'>RTOS</b><b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>多任務(wù)</b>調(diào)度的基本原理

    淺談RTOS中的多任務(wù)切換(基于UC/OS iii)

    函數(shù)四.總流程五.結(jié)果六.后記(含代碼鏈接)一. 簡(jiǎn)介??RTOS中的多任務(wù)切換是操作系統(tǒng)與裸機(jī)編程的一個(gè)非常大的區(qū)別,一般邏輯變成運(yùn)行在一個(gè)循環(huán)內(nèi),裸機(jī)編程很難實(shí)現(xiàn)兩個(gè)事件的并行(這里的并行指的是宏觀的并行),但是在操作系統(tǒng)中
    發(fā)表于 11-23 18:06 ?25次下載
    淺談<b class='flag-5'>RTOS</b>中的<b class='flag-5'>多任務(wù)</b>切換(基于UC/OS iii)