在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

FreeRTOS任務(wù)調(diào)度器的三種調(diào)度算法講解(下)

瑞薩MCU小百科 ? 來源:瑞薩嵌入式小百科 ? 2024-03-21 13:46 ? 次閱讀

2.配置調(diào)度算法

2.2

不帶時間片的搶占式調(diào)度

配置如下時,調(diào)度算法就會變成不帶時間片的搶占式調(diào)度

configUSE_PREEMPTION 1

configUSE_TIME_SLICING 0

和前面的唯一區(qū)別就是相同優(yōu)先級的任務(wù)之間不會隨時間自動切換。

如果不使用時間片,那么調(diào)度程序只會在發(fā)生這兩種情況時,進行任務(wù)切換:

1

優(yōu)先級更高的任務(wù)進入“就緒”態(tài)。

2

運行態(tài)任務(wù)變?yōu)樽枞麘B(tài)或被掛起。

很顯然,不使用時間片時,任務(wù)切換的情況會變少,所以關(guān)閉時間切片可以減少調(diào)度器的處理開銷。但是關(guān)閉時間切片也可能導(dǎo)致具有相同優(yōu)先級的任務(wù)獲得的處理時間相差很大。因此,一定要慎重使用。

524f3520-e740-11ee-a297-92fbcf53809c.png

task1為最高優(yōu)先級的事件驅(qū)動任務(wù),task2和Idle task有相同的優(yōu)先級。但是由于關(guān)閉了時間片,任務(wù)切換只會在空閑任務(wù)阻塞或者掛起或者task1搶占后發(fā)生,所以空閑任務(wù)和task2雖然優(yōu)先級相同,但是明顯空閑任務(wù)占有的時間長很多。

2.3

協(xié)同調(diào)度

configUSE_PREEMPTION 0

configUSE_TIME_SLICING 隨便

當使用協(xié)同調(diào)度時,只有當運行態(tài)任務(wù)進入阻塞態(tài),或者運行態(tài)任務(wù)通過調(diào)用taskYIELD()主動讓出,才會發(fā)生任務(wù)切換。

任務(wù)永遠不會被搶占,不能使用時間片,時間片配置的值隨便,無所謂。

525ff298-e740-11ee-a297-92fbcf53809c.png

task1、2、3優(yōu)先級依次變低,剛開始task3運行,雖然task1和2優(yōu)先級高,并且沒有阻塞,但是也無法搶占,task3調(diào)用taskYIELD(),主動讓出,因為task1優(yōu)先級比task2高,task1就運行了,task1運行夠了進入阻塞態(tài),由于task2比task3優(yōu)先級高,task2就運行了。

2.4

優(yōu)缺點

多任務(wù)訪問問題

在多任務(wù)程序中,應(yīng)用程序編寫人員必須注意一個資源不能被多個任務(wù)同時訪問,因為同時訪問可能會破壞資源。例如,考慮以下場景,其中正在訪問的資源是UART(串口)。兩個任務(wù)是向UART寫入字符串,任務(wù)1寫“abcdefghijklmnop”,任務(wù)2寫“123456789”:

1

Task 1處于運行態(tài),開始寫它的字符串。它將“abcdefg”寫入UART,然后離開運行態(tài)。

2

Task 2進入運行態(tài),并在離開運行態(tài)之前向UART寫入“123456789”。

3

任務(wù)1重新進入運行態(tài),并將其字符串的剩余字符寫入UART。

在該場景中,實際寫入UART的內(nèi)容是“abcdefg123456789hijklmnop”。Task 1寫入的字符串沒有按照預(yù)期的連續(xù)順序?qū)懭險ART,而是被損壞了,因為Task 2寫入UART的字符串出現(xiàn)在UART中。

通常,使用協(xié)同調(diào)度比使用搶占調(diào)度更容易避免同時訪問引起的問題。

當使用搶占式調(diào)度時,運行狀態(tài)任務(wù)可以在任何時候被搶占,包括當它與另一個任務(wù)共享的資源處于不一致狀態(tài)時。正如剛才UART示例所演示的,讓資源處于不一致的狀態(tài)可能導(dǎo)致數(shù)據(jù)損壞。

當使用協(xié)同調(diào)度時,應(yīng)用程序編寫人員控制何時可以切換到另一個任務(wù)(干完想干的再阻塞,或者讓出)。因此,應(yīng)用程序編寫人員可以確保在資源處于不一致狀態(tài)時不會發(fā)生切換到另一個任務(wù)的情況。在上面的UART示例中,應(yīng)用程序編寫人員可以確保Task 1在將其整個字符串寫入UART之前不會離開運行態(tài),這樣做可以消除字符串被另一個任務(wù)的激活破壞的可能性。

很明顯,協(xié)同調(diào)度比搶占調(diào)度響應(yīng)要慢。

當使用協(xié)同調(diào)度時,最高優(yōu)先級任務(wù)進入就緒態(tài)時并不一定會立即執(zhí)行,必須等到運行態(tài)任務(wù)進入阻塞態(tài)或調(diào)用taskYIELD()才會被執(zhí)行。

使用搶占調(diào)度時,當一個比運行態(tài)任務(wù)優(yōu)先級更高的任務(wù)進入就緒態(tài)時,這個任務(wù)會立即執(zhí)行。這一點對于必須在一定時間內(nèi)響應(yīng)高優(yōu)先級任務(wù)的實時系統(tǒng)是非常重要的。至于多任務(wù)訪問問題(其實也就是操作系統(tǒng)中的多線程問題),有其他手段去解決。

在RZ/T2L上做的實驗

如果兩個參數(shù)設(shè)置為:configUSE_PREEMPTION =0,configUSE_TIME_SLICING= 0或者1(隨便) 稱之為協(xié)同調(diào)度,當使用協(xié)同調(diào)度時,只有當運行態(tài)任務(wù)進入阻塞態(tài),或者運行態(tài)任務(wù)通過調(diào)用taskYIELD()主動讓出,才會發(fā)生任務(wù)切換。

任務(wù)永遠不會被搶占,不能使用時間片,時間片配置的值隨便。我做了一個實驗截圖如下:

526ccee6-e740-11ee-a297-92fbcf53809c.png

527466c4-e740-11ee-a297-92fbcf53809c.png

上面的實驗說明 “只有當運行態(tài)任務(wù)進入阻塞態(tài),或者運行態(tài)任務(wù)通過調(diào)用taskYIELD()主動讓出,才會發(fā)生任務(wù)切換”,此時與時間片1 ms已經(jīng)沒有什么關(guān)系了。

如果兩個參數(shù)設(shè)置為 configUSE_PREEMPTION =1,configUSE_TIME_SLICING=1, 此時只有兩個任務(wù)并且優(yōu)先級相同,每個任務(wù)都持續(xù)做一件事就會出現(xiàn)時間征為1ms的輪轉(zhuǎn)情況:

5297b5ca-e740-11ee-a297-92fbcf53809c.png

52b641b6-e740-11ee-a297-92fbcf53809c.png

通過上面的兩個實驗可以說明,時間片存的意義是相同優(yōu)先級并且持續(xù)時間較長的處理任務(wù),需要平等分享CPU使用權(quán)。但是如果一旦有一方主動放棄CPU或者阻塞或者更高優(yōu)先級任務(wù)來了,調(diào)度器是不會等待一個時間片完全結(jié)束,再去調(diào)度就緒列表中的任務(wù)的,而是直接調(diào)用就緒列表里的第一個任務(wù)。這樣的設(shè)計我認為是合理的,如果一定要等待時間片結(jié)束,是存在嚴重的資源浪費的。




審核編輯:劉清

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

    關(guān)注

    12

    文章

    484

    瀏覽量

    62395
  • UART接口
    +關(guān)注

    關(guān)注

    0

    文章

    124

    瀏覽量

    15363
  • 中斷優(yōu)先級
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    9407
  • 調(diào)度器
    +關(guān)注

    關(guān)注

    0

    文章

    98

    瀏覽量

    5298

原文標題:FreeRTOS任務(wù)調(diào)度器的三種調(diào)度算法和在RZ/T2L上的實踐(下)

文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    淺析FreeRTOS任務(wù)調(diào)度三種調(diào)度算法和應(yīng)用

    FreeRTOS在MCU領(lǐng)域應(yīng)用非常廣泛,今天就給大家講解FreeRTOS調(diào)度中的
    的頭像 發(fā)表于 05-10 14:02 ?7813次閱讀
    淺析<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b><b class='flag-5'>調(diào)度</b><b class='flag-5'>器</b>的<b class='flag-5'>三種</b><b class='flag-5'>調(diào)度</b><b class='flag-5'>算法</b>和應(yīng)用

    轉(zhuǎn):第14章 任務(wù)調(diào)度—搶占式,時間片和合作式

    調(diào)度方式FreeRTOS操作系統(tǒng)支持三種調(diào)度方式:搶占式調(diào)度,時間片調(diào)度和合作式
    發(fā)表于 08-30 09:55

    轉(zhuǎn)第16章 FreeRTOS調(diào)度鎖,任務(wù)鎖和中斷鎖

    任務(wù)鎖函數(shù),但是使用FreeRTOS現(xiàn)有的功能有兩實現(xiàn)方法:(1)通過給調(diào)度加鎖實現(xiàn)利用FreeR
    發(fā)表于 09-01 07:45

    FreeRTOS如何使用delay作為系統(tǒng)延時、任務(wù)調(diào)度

    請教一個問題,最近在學習使用FreeRTOS,想像原子一樣在delay.c里添加RTOS的系統(tǒng)支持,即使用tick時鐘作延時?,F(xiàn)在有幾個問題:1、在啟動任務(wù)調(diào)度前,如果調(diào)用了dela
    發(fā)表于 06-10 04:37

    調(diào)度的原理及其任務(wù)調(diào)度代碼實現(xiàn)

    一、介紹調(diào)度是常用的一編程框架,也是操作系統(tǒng)的拆分多任務(wù)的核心,比如單片機的裸機程序框架,網(wǎng)絡(luò)協(xié)議棧的框架如can網(wǎng)關(guān)、485網(wǎng)關(guān)等等,使用場合比較多,是做穩(wěn)定產(chǎn)品比較常用的編程技
    發(fā)表于 02-17 07:07

    基于實數(shù)編碼免疫算法的分布式任務(wù)調(diào)度

    任務(wù)調(diào)度問題是一個NP難題,其算法是一個重要研究方向。該文通過對任務(wù)調(diào)度模型及已有免疫算法進行研
    發(fā)表于 04-08 09:00 ?15次下載

    網(wǎng)格任務(wù)調(diào)度算法研究

    網(wǎng)格任務(wù)調(diào)度算法是影響網(wǎng)格成功與否的關(guān)鍵技術(shù)之一。本文總結(jié)了網(wǎng)格計算系統(tǒng)的體系結(jié)構(gòu)和特征,分析了網(wǎng)格任務(wù)調(diào)度
    發(fā)表于 08-14 10:27 ?10次下載

    任務(wù)閾值調(diào)度算法

    針對當前云任務(wù)調(diào)度算法在密碼云環(huán)境中無法實現(xiàn)任務(wù)實時處理的問題,提出一基于滾動優(yōu)化窗口的實時閾值調(diào)度
    發(fā)表于 11-24 17:08 ?5次下載
    云<b class='flag-5'>任務(wù)</b>閾值<b class='flag-5'>調(diào)度</b><b class='flag-5'>算法</b>

    基于改進GEP的局部云任務(wù)調(diào)度算法

    針對云計算中一些現(xiàn)有的基于批量調(diào)度模式和進化算法的動態(tài)云任務(wù)調(diào)度算法計算量較大,計算時間成本較高的現(xiàn)象,提出了一
    發(fā)表于 01-18 13:50 ?0次下載
    基于改進GEP的局部云<b class='flag-5'>任務(wù)</b><b class='flag-5'>調(diào)度</b><b class='flag-5'>算法</b>

    異構(gòu)多核處理任務(wù)調(diào)度算法

    任務(wù)調(diào)度響應(yīng)實時性方面表現(xiàn)優(yōu)異,但卻不適用于異構(gòu)多核處理環(huán)境。為此,提出一高實時性任務(wù)調(diào)度
    發(fā)表于 02-07 11:07 ?2次下載

    Storm環(huán)境基于權(quán)重的任務(wù)調(diào)度算法

    問題,提出一Storm環(huán)境基于權(quán)重的任務(wù)調(diào)度算法(TSAW-Storm)。該算法首先根據(jù)各
    發(fā)表于 04-17 10:52 ?0次下載
    Storm環(huán)境<b class='flag-5'>下</b>基于權(quán)重的<b class='flag-5'>任務(wù)</b><b class='flag-5'>調(diào)度</b><b class='flag-5'>算法</b>

    可反映用戶偏好的多目標任務(wù)調(diào)度算法

    針對云制造環(huán)境的多目標任務(wù)調(diào)度問題,改進非支配排序生物地理優(yōu)化算法,提出一反映用戶偏好的任務(wù)
    發(fā)表于 05-25 14:05 ?3次下載

    異構(gòu)環(huán)境的多DAG任務(wù)調(diào)度算法綜述

    異構(gòu)環(huán)境的多DAG任務(wù)調(diào)度算法綜述
    發(fā)表于 06-21 15:15 ?13次下載

    FreeRTOS時間片進行任務(wù)調(diào)度?

    CPU的使用權(quán),讓擁有同優(yōu)先級的下一個任務(wù)運行, 至于下一個要運行哪個任務(wù)? 由時間片來調(diào)度,時間片調(diào)度發(fā)生在滴答定時的中斷服務(wù)函數(shù)中 。
    發(fā)表于 12-23 20:02 ?0次下載
    <b class='flag-5'>FreeRTOS</b>時間片進行<b class='flag-5'>任務(wù)</b><b class='flag-5'>調(diào)度</b>?

    FreeRTOS調(diào)度中的三種調(diào)度算法實踐(上)

    在優(yōu)先級高于運行態(tài)任務(wù)任務(wù)進入就緒態(tài)時,調(diào)度立即讓這個高優(yōu)先級的任務(wù)“搶占”運行態(tài)任務(wù)。被搶
    發(fā)表于 03-21 13:45 ?550次閱讀
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>調(diào)度</b><b class='flag-5'>器</b>中的<b class='flag-5'>三種</b><b class='flag-5'>調(diào)度</b><b class='flag-5'>算法</b>實踐(上)
    主站蜘蛛池模板: 99 久久99久久精品免观看 | 激情网五月天 | 成人黄色免费看 | 夜夜骑日日射 | 狼狼狼色精品视频在线播放 | 伦理一区二区三区 | 片黄免费 | 午夜视频啪啪 | 一区二区三区四区在线视频 | 秋霞特色大片18入口私人高清 | 天天爽夜夜爽精品免费 | 免费看污视频的网站 | 黄色在线免费看 | 黄网站视频观看免费 | 2022欧美高清中文字幕在线看 | 久久影视免费体验区午夜啪啪 | 国产理论最新国产精品视频 | 高h肉肉视频在线播放观看 高黄视频 | 狠狠操夜夜 | 国产成人精品亚洲日本在线 | 黄录像欧美片在线观看 | 国产精品理论 | 成人国产一区二区三区 | 国产内地激情精品毛片在线一 | 久久婷婷国产一区二区三区 | 日本高清视频网站www | 伊人久久大香线焦在观看 | 最好免费高清视频观看韩国 | 免费看片免费播放 | 草草影院私人免费入口 | 成人窝窝午夜看片 | bt天堂网在线资源www | 色香欲亚洲天天综合网 | 国产婷婷色 | 五月月色开心婷婷久久合 | 综合一个色 | 男人j桶进女人免费视频 | 日日做夜夜爽夜夜爽 | www午夜视频 | 国产美女视频免费 | 日本国产高清色www视频在线 |