日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

RT-Thread操作系統(tǒng)的調(diào)度設計原理

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來源:RT-Thread ? 作者:RT-Thread ? 2020-09-02 14:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

要想使用好RTOS,做出更加穩(wěn)定可靠的產(chǎn)品,必須非常清楚底層的調(diào)度原理。由于RTOS的實時性與可控性,所以只有了解了其核心部分的設計思想,才能用起來得心應手,游刃有余。本文從RT-Thread的調(diào)度器設計的運行方式上解釋一下調(diào)度器的行為,從而更加深刻的理解RT-Thread操作系統(tǒng)的調(diào)度時機。

1.調(diào)度是什么?

調(diào)度一般就是合理的安排、協(xié)調(diào)資源,統(tǒng)一指揮去完成一件事,而在操作系統(tǒng)中,線程調(diào)度就是有多個就緒優(yōu)先級的任務,找到最高優(yōu)先級任務,交給CPU去運行。

RT-Thread調(diào)度器就是起到判決線程當前的優(yōu)先級,然后選擇當前系統(tǒng)中最高優(yōu)先級的就緒態(tài)的線程交給CPU去管理。

調(diào)度又可以細分為兩種??纱驍嗾{(diào)度:關鍵防止優(yōu)先級倒置;不可打斷調(diào)度:先來先服務,不可中斷。RT-Thread 屬于實時操作系統(tǒng),所以其調(diào)度器實現(xiàn)的是可打斷的調(diào)度,當有更高優(yōu)先級的線程或者更重要的任務就行,則可以打斷當前任務的執(zhí)行狀態(tài),去執(zhí)行優(yōu)先級更高的任務。那么此時,調(diào)度的時機就非常的關鍵了。

2.調(diào)度怎么實現(xiàn)?

RT-Thread在創(chuàng)建任務的時候,會指定任務的優(yōu)先級,一般來說,每個任務都有自己特定的唯一的優(yōu)先級。所以內(nèi)核線程對象中有不同的優(yōu)先級的任務列表。

如果最大指定為32個優(yōu)先級,那么可以用32位數(shù)據(jù)類型表示,每一個bit表示一個優(yōu)先級就緒的狀態(tài)。使用位圖的優(yōu)點就是速度快,而且內(nèi)存占用小。

一般來說,調(diào)度去找到最高優(yōu)先級的任務時,就需要去做判斷。如何去找到最高優(yōu)先級的任務。一般來說,有兩種辦法:

軟件計算

硬件計算

這兩種的差別僅僅在于計算效率的問題,本質目的并無差別。

而用軟件計算方法尋找最高優(yōu)先級有兩種實現(xiàn)的策略:

1.遍歷就緒的隊列,找到最小的優(yōu)先級就緒的隊列,尋找的時間不確定,時間復雜度O(n)。

2.采用空間換時間的辦法,事先做好一個bitmap

例如系統(tǒng)中最大有8個優(yōu)先級,那么bitmap如下:

 1constrt_uint8_t__lowest_bit_bitmap[]=
 2{
 3/*00*/0,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
 4/*10*/4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
 5/*20*/5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
 6/*30*/4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
 7/*40*/6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
 8/*50*/4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
 9/*60*/5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
10/*70*/4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
11/*80*/7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
12/*90*/4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
13/*A0*/5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
14/*B0*/4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
15/*C0*/6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
16/*D0*/4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
17/*E0*/5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,
18/*F0*/4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0
19};
一般每一位代表一個就緒的狀態(tài),所以__rt_ffs程序的設計如下
 1int__rt_ffs(intvalue)
 2{
 3if(value==0)return0;
 4
 5if(value&0xff)
 6return__lowest_bit_bitmap[value&0xff]+1;
 7
 8if(value&0xff00)
 9return__lowest_bit_bitmap[(value&0xff00)>>8]+9;
10
11if(value&0xff0000)
12return__lowest_bit_bitmap[(value&0xff0000)>>16]+17;
13
14return__lowest_bit_bitmap[(value&0xff000000)>>24]+25;
15}

如果當前系統(tǒng)的線程狀態(tài)為0b0110 0000,那么轉換成十六進制就是0x60,根據(jù)表中的狀態(tài)此時的最高優(yōu)先級是5+1=6。所以可以得出系統(tǒng)的優(yōu)先級,此時計算的復雜度為O(1)。

雖然RT-Thread 是支持同等優(yōu)先級的,但是在具體的業(yè)務邏輯的設計中,在使用RTOS常用的設計方法中,一般都是要求程序的運行邏輯是可預測的,就是在程序執(zhí)行的過程中,可以預測到程序下一步的動作。所以rtos中同等優(yōu)先級,按照時間片輪訓的這種方式設計業(yè)務邏輯的情況并不多。使用相同優(yōu)先級會增加系統(tǒng)的業(yè)務邏輯的復雜性。

3.什么時候系統(tǒng)做調(diào)度?

RT-Thread 是搶占式的系統(tǒng)調(diào)用,所以系統(tǒng)什么時候去做的調(diào)度非常的關鍵。系統(tǒng)調(diào)度行為具體又分為主動調(diào)度和被動調(diào)度兩種。

3.1 任務主動block

當A線程在正常運行時,主動放棄CPU的使用權,比如去執(zhí)行rt_thread_delay或者等待一個IPC消息時,當前線程會主動放棄CPU資源,此時去系統(tǒng)中尋找已經(jīng)就緒的最高優(yōu)先級的線程進行調(diào)度。

這種方式應用的場景比較豐富,比如當前線程沒有獲取到資源時,需讓出CPU的使用權,或者事情做完了,主動讓出CPU的使用權,這就是系統(tǒng)做調(diào)度的時機。

A線程的優(yōu)先級要高于B線程的優(yōu)先級,所以在A放棄CPU使用權后,已經(jīng)就緒的最高優(yōu)先級線程B就開始執(zhí)行了。

3.2 被更高優(yōu)先級的任務喚醒

這種方式就是當比當前運行線程的優(yōu)先級高的線程處于就緒態(tài)時,高優(yōu)先級的就緒態(tài)線程會被喚醒,低優(yōu)先級線程將暫停運行,此時會調(diào)度到比當前線程更高的優(yōu)先級線程中去。

按照理解A線程是正在運行的線程,此時更高任務優(yōu)先級的線程C就緒處于就緒狀態(tài)了。比如創(chuàng)建了一個比A優(yōu)先級更高的C進程,并startup C線程,此時會執(zhí)行rt_schedule()將線程切換到優(yōu)先級更高的C線程。此時A線程運行狀態(tài)以及處理器寄存器狀態(tài)壓棧,更高優(yōu)先級的C線程的狀態(tài)以及處理器寄存器狀態(tài)出棧,并且開始運行C線程。

3.3 yield放棄cpu使用

首先理解一下什么是yield,解釋成讓出,放棄比較合理。該出讓只針對于同等優(yōu)先級的線程。

這種情況只適用于A線程的優(yōu)先級等于B線程的優(yōu)先級的情況。因為RTT支持同等優(yōu)先級的方式創(chuàng)建線程,相同的優(yōu)先級的切換是靠時間片輪詢來進行的。所以,當A線程正常運行的時候,如果執(zhí)行了yield函數(shù),那么只相當于將A線程的時間片消耗完,此時同等優(yōu)先級的D線程開始運行。 由于在RTOS中,需要的是完成任務的確定性與可靠性,同等優(yōu)先級的情況比較有限,所以這一塊應用的不多。

3.4 中斷中執(zhí)行調(diào)度

以上的三種屬于主動進行調(diào)度的過程,其系統(tǒng)的執(zhí)行流程都是可以預測的,但是中斷去執(zhí)行調(diào)度卻是比較特殊。是被動調(diào)度。

這種方式是在中斷中執(zhí)行調(diào)度的,當A線程正常運行時,此時來了一個中斷,由于中斷的優(yōu)先級是高于線程的。所以,中斷處理事情,如果在中斷中執(zhí)行了調(diào)度函數(shù),那么在中斷退出后,將直接切換到當前系統(tǒng)中更高優(yōu)先級的線程去運行。如果如果當前系統(tǒng)的最高優(yōu)先級還是A,那么中斷退出后,執(zhí)行的最高優(yōu)先級線程依然是A。若存在線程E線程優(yōu)先級高于A并且處于就緒狀態(tài),此時,中斷退出后,切換到E線程去執(zhí)行。

4.調(diào)度做了哪些事情?

系統(tǒng)進行調(diào)度的時候做了哪些事情?

第一步:查找當前系統(tǒng)中當前以及就緒的最高優(yōu)先級的線程,若有高于當前運行系統(tǒng)運行的線程棧則執(zhí)行線程切換

第二步:關閉中斷,將系統(tǒng)當前運行狀態(tài)以及處理器的寄存器壓入??臻g

第三步:找到需要運行的線程的PC指針,并找到棧起始處彈出??臻g中的寄存器狀態(tài)

第四部:打開中斷,執(zhí)行異常ret,讓系統(tǒng)恢復執(zhí)行

此時,就切換到已經(jīng)就緒的更高優(yōu)先級的線程去運行了。

5.總結

RT-Thread 線程的調(diào)度器是整個系統(tǒng)的靈魂,整個操作系統(tǒng)在運行過程中何時切換線程、什么情況下去處理任務,以及做更高效的業(yè)務邏輯的應用都離不開系統(tǒng)調(diào)度。掌握了調(diào)度器運行的規(guī)律,并且合理的使用線程調(diào)度時機,可以設計出更加穩(wěn)定可靠的產(chǎn)品。通過閱讀代碼,就能預測程序下一步的執(zhí)行動作。真正的做到手中有糧,心中不慌。

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

    關注

    68

    文章

    11332

    瀏覽量

    225976
  • 操作系統(tǒng)

    關注

    37

    文章

    7443

    瀏覽量

    129643
  • 實時操作系統(tǒng)

    關注

    1

    文章

    208

    瀏覽量

    32023
  • RT-Thread
    +關注

    關注

    32

    文章

    1644

    瀏覽量

    45266
  • 調(diào)度器

    關注

    0

    文章

    99

    瀏覽量

    5719

原文標題:?RT-Thread的線程調(diào)度與管理分析

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RT-Thread亮相AUTOSAR中國日:國產(chǎn)操作系統(tǒng)與AUTOSAR標準融合的產(chǎn)業(yè)化實踐

    探索》的重磅演講,首次深度剖析國產(chǎn)操作系統(tǒng)與AUTOSAR標準融合的創(chuàng)新路徑與產(chǎn)業(yè)化實踐。二十年磨一劍:從開源社區(qū)到車規(guī)級底座作為RT-Thread睿賽德創(chuàng)始人兼C
    的頭像 發(fā)表于 03-23 19:24 ?505次閱讀
    <b class='flag-5'>RT-Thread</b>亮相AUTOSAR中國日:國產(chǎn)<b class='flag-5'>操作系統(tǒng)</b>與AUTOSAR標準融合的產(chǎn)業(yè)化實踐

    硬實時·廣生態(tài)·強賦能,中國工業(yè)報解讀RT-Thread工業(yè)發(fā)展之路|新聞資訊

    近日,《中國工業(yè)報》深度報道了RT-Thread(睿賽德)在工業(yè)邊端操作系統(tǒng)領域的發(fā)展路徑。報道指出,憑借25億臺的全球裝機量與近20年的開源積淀,RT-Thread已成為國內(nèi)嵌入式操作系統(tǒng)
    的頭像 發(fā)表于 02-02 18:53 ?576次閱讀
    硬實時·廣生態(tài)·強賦能,中國工業(yè)報解讀<b class='flag-5'>RT-Thread</b>工業(yè)發(fā)展之路|新聞資訊

    【好書推薦】RT-Thread第22本相關書籍!《嵌入式實時操作系統(tǒng)開發(fā)實踐》| 技術集結

    隨著物聯(lián)網(wǎng)、智能家居與工業(yè)控制等領域的快速發(fā)展,嵌入式實時操作系統(tǒng)的應用愈發(fā)廣泛。RT-Thread作為國產(chǎn)開源RTOS的代表,憑借其出色的實時性、組件化設計和強大的生態(tài)體系,已成為眾多工程師和高校
    的頭像 發(fā)表于 10-16 18:46 ?890次閱讀
    【好書推薦】<b class='flag-5'>RT-Thread</b>第22本相關書籍!《嵌入式實時<b class='flag-5'>操作系統(tǒng)</b>開發(fā)實踐》| 技術集結

    RT-Thread睿賽德榮獲工博會“CIIF信息技術獎”,“1+X+N”戰(zhàn)略推動國產(chǎn)操作系統(tǒng)體系化發(fā)展 | 新聞速遞

    在第二十五屆中國國際工業(yè)博覽會(工博會)上,國產(chǎn)嵌入式操作系統(tǒng)領軍企業(yè)RT-Thread睿賽德憑借其在嵌入式操作系統(tǒng)領域的持續(xù)創(chuàng)新與產(chǎn)業(yè)貢獻,榮獲2025年“CIIF信息技術獎”。此次獲獎
    的頭像 發(fā)表于 10-10 10:05 ?1203次閱讀
    <b class='flag-5'>RT-Thread</b>睿賽德榮獲工博會“CIIF信息技術獎”,“1+X+N”戰(zhàn)略推動國產(chǎn)<b class='flag-5'>操作系統(tǒng)</b>體系化發(fā)展 | 新聞速遞

    學習強國深度報道 RT-Thread“1+X+N”戰(zhàn)略,國產(chǎn)操作系統(tǒng)賦能高端制造引關注|媒體視角

    近日,國產(chǎn)嵌入式操作系統(tǒng)領軍企業(yè)RT-Thread睿賽德在工博會發(fā)布的“1+X+N”戰(zhàn)略體系,獲得了國家級權威媒體平臺“學習強國”的重點報道。該報道從產(chǎn)業(yè)高度深入剖析了RT-Thread睿賽德以自主
    的頭像 發(fā)表于 09-29 17:37 ?1369次閱讀
    學習強國深度報道 <b class='flag-5'>RT-Thread</b>“1+X+N”戰(zhàn)略,國產(chǎn)<b class='flag-5'>操作系統(tǒng)</b>賦能高端制造引關注|媒體視角

    【好書推薦】RT-Thread第20本相關書籍!《嵌入式實時操作系統(tǒng)RT-Thread原理與應用》| 技術集結

    01內(nèi)容簡介ContentSummary本書為讀者提供了一個全面、系統(tǒng)RT-Thread學習指南,旨在幫助初學者及有經(jīng)驗的開發(fā)者掌握RT-Thread實時操作系統(tǒng)和STM32嵌入式微
    的頭像 發(fā)表于 08-24 10:05 ?1324次閱讀
    【好書推薦】<b class='flag-5'>RT-Thread</b>第20本相關書籍!《嵌入式實時<b class='flag-5'>操作系統(tǒng)</b><b class='flag-5'>RT-Thread</b>原理與應用》| 技術集結

    經(jīng)濟日報:國產(chǎn)嵌入式操作系統(tǒng)領軍企業(yè)RT-Thread正在持續(xù)把新思想、新技術留給上海|媒體視角

    經(jīng)濟日報報道RT-Thread睿賽德2025世界人工智能大會落下帷幕,一系列亮眼成果為上海AI產(chǎn)業(yè)注入動力。作為國產(chǎn)嵌入式操作系統(tǒng)領軍企業(yè),RT-Thread睿賽德在大會中展現(xiàn)創(chuàng)新活力,成為聚焦亮點
    的頭像 發(fā)表于 08-05 21:02 ?1293次閱讀
    經(jīng)濟日報:國產(chǎn)嵌入式<b class='flag-5'>操作系統(tǒng)</b>領軍企業(yè)<b class='flag-5'>RT-Thread</b>正在持續(xù)把新思想、新技術留給上海|媒體視角

    RT-Thread 遇上 Rust:安全內(nèi)核 RusT-Thread 的誕生

    大家好,我們是中國科學技術大學操作系統(tǒng)原理與設計(H)課oooooS小組。這個項目是我們的課程大作業(yè):參考RT-Thread架構,使用Rust搭建一個原生的嵌入式操作系統(tǒng)內(nèi)核。初識Rust是因為xk
    的頭像 發(fā)表于 08-02 11:03 ?3739次閱讀
    <b class='flag-5'>RT-Thread</b> 遇上 Rust:安全內(nèi)核 RusT-<b class='flag-5'>Thread</b> 的誕生

    權威認證!RT-Thread操作系統(tǒng)100%國產(chǎn)自主可控,鑄就睿擎工業(yè)平臺安全基石? !

    在工業(yè)自動化、電力控制、軌道交通等高端裝備領域,操作系統(tǒng)的安全可靠與自主可控是關乎產(chǎn)業(yè)命脈的核心訴求。作為國產(chǎn)嵌入式實時操作系統(tǒng)(RTOS)的領軍者,RT-Thread始終將代碼的透明性與自主性置于
    的頭像 發(fā)表于 07-11 17:05 ?3313次閱讀
    權威認證!<b class='flag-5'>RT-Thread</b><b class='flag-5'>操作系統(tǒng)</b>100%國產(chǎn)自主可控,鑄就睿擎工業(yè)平臺安全基石? !

    RT-Thread榮獲2025優(yōu)秀開源項目 | 新聞速遞

    6月底,RT-Thread睿賽德受邀參與由上海開源信息技術協(xié)會主辦的2025上海開源創(chuàng)新精英薈。上海市商委副主任張杰出席會議并致辭。RT-Thread嵌入式操作系統(tǒng)項目憑借其卓越的技術創(chuàng)新與開源生態(tài)
    的頭像 發(fā)表于 07-04 09:04 ?2849次閱讀
    <b class='flag-5'>RT-Thread</b>榮獲2025優(yōu)秀開源項目 | 新聞速遞

    深度剖析 RT-Thread 線程調(diào)度流程

    RT-Thread調(diào)度第一個線程的主要流程分如下:rtthread_startup:RTT的啟動函數(shù),主要負責板級驅動,調(diào)度器,系統(tǒng)線程初始化,啟動
    的頭像 發(fā)表于 06-25 18:24 ?1975次閱讀
    深度剖析 <b class='flag-5'>RT-Thread</b> 線程<b class='flag-5'>調(diào)度</b>流程

    玄鐵加入RT-Thread 高級會員合作伙伴 | 戰(zhàn)略新篇

    今天起,玄鐵XuanTie正式成為RT-Thread高級會員合作伙伴。此次合作標志著雙方將在嵌入式操作系統(tǒng)創(chuàng)新、RISC-V生態(tài)構建及行業(yè)應用落地等領域展開深度協(xié)同,加速推動開源技術的產(chǎn)業(yè)化進程
    的頭像 發(fā)表于 06-23 20:22 ?1362次閱讀
    玄鐵加入<b class='flag-5'>RT-Thread</b> 高級會員合作伙伴 | 戰(zhàn)略新篇

    2025 RT-Thread全球技術大會議程正式發(fā)布!

    。2024RT-Thread全球技術大會,由開源操作系統(tǒng)RT-Thread發(fā)起,并聯(lián)合國內(nèi)外領先企業(yè)的重磅嘉賓,攜手國內(nèi)外頂尖企業(yè)專家與超3萬名線上參與者,共議邊緣計算、嵌入式
    的頭像 發(fā)表于 05-27 19:28 ?1579次閱讀
    2025 <b class='flag-5'>RT-Thread</b>全球技術大會議程正式發(fā)布!

    【直播預告】《實時操作系統(tǒng)應用技術—基于RT-Thread與ARM的編程實踐》教學脈絡及資源簡介

    直播預告直播主題:《實時操作系統(tǒng)應用技術—基于RT-Thread與ARM的編程實踐》教學脈絡及資源簡介開放時間:2025年5月29日(周四)20:00主講老師:王宜懷課程類型:視頻直播觀看平臺
    的頭像 發(fā)表于 05-26 17:50 ?1419次閱讀
    【直播預告】《實時<b class='flag-5'>操作系統(tǒng)</b>應用技術—基于<b class='flag-5'>RT-Thread</b>與ARM的編程實踐》教學脈絡及資源簡介

    RT-Thread審核團招募: 深度參與開源RTOS社區(qū)治理與演進

    的開源實時操作系統(tǒng),正持續(xù)優(yōu)化社區(qū)協(xié)作流程,現(xiàn)面向全球開發(fā)者招募審核團(ReviewTeam)成員,共同維護代碼質量,推動RT-Thread生態(tài)繁榮發(fā)展!什么是RT
    的頭像 發(fā)表于 05-21 18:02 ?1455次閱讀
    <b class='flag-5'>RT-Thread</b>審核團招募: 深度參與開源RTOS社區(qū)治理與演進
    黔江区| 镇雄县| 凤山县| 乌兰察布市| 锦州市| 白银市| 吉林市| 赣榆县| 尉氏县| 田林县| 松原市| 子长县| 本溪| 鄄城县| 蒲城县| 连山| 定结县| 贵南县| 旌德县| 辽中县| 五台县| 淮安市| 蓝山县| 鹤岗市| 华亭县| 新郑市| 正定县| 琼结县| 宁安市| 上林县| 亳州市| 金坛市| 宜州市| 巢湖市| 凤城市| 邵东县| 凭祥市| 道孚县| 东港市| 湖州市| 基隆市|