国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

開發過程中是什么原因導致優先級翻轉的?

RTThread物聯網操作系統 ? 來源:Rice嵌入式開發技術分享 ? 作者:Rice嵌入式開發技術 ? 2021-05-28 15:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近在開發過程中,遇到一個問題線程優先級翻轉的問題。那什么原因導致優先級翻轉呢?

RTOS開發中,優先級翻轉問題也是值得我們去關注留意的。避免代碼癱瘓。

什么是優先級翻轉

所謂的優先級翻轉問題:即當一個高優先級線程通過信號量機制訪問共享資源時,該型號量以被一個低優先級線程占有,而這個低優先級的任務在訪問共享資源時可能又被一個中等優先級任務搶占。從上面的描述,高優先級線程被許多較低優先級的任務阻塞,導致高優先級的實時性得不到保證。

舉例:有三個線程分別為:A、B、C。優先級A 》 B 》 C,線程A和B處于掛起狀態,等待某一事件發生,線程C正在運行,此時任務C開始使用共享資源Source。在使用Source時,線程A等待事件到來,線程A轉為就緒態,因為線程A優先級比線程C高,所以線程A會立即執行。當線程A要使用共享資源Source時,由于共享資源Source正在被線程C使用,因此線程A被掛起,線程C開始運行。如果此時中等優先級線程B等待事件到來,則線程B轉為就緒態。由于線程B優先級比線程C高,因此線程B開始運行,直到其運行完畢,線程C才開始運行。直到線程C釋放共享資源Source后,線程A才得以執行。在這種情況下,優先級發生了翻轉,線程B先于線程A運行。

如何解決優先級翻轉

解決優先級翻轉的方法:優先級天花板、優先級繼承。那么這兩種方法有什么?

優先級天花板優先級天花板是當線程申請某資源時,把該線程的優先級提升到可訪問這個資源的所有線程中的最高優先級,這個優先級稱為該資源的優先級天花板。這種方法簡單易行,不必進行復雜的判斷,不管線程是否阻塞了高優先級線程的運行, 只要線程訪問共享資源都會提升線程的優先級。

優先級繼承優先級繼承是當線程A申請共享資源Source時,如果共享資源Source正在被線程C使用,通過比較線程C與自身的優先級,如發現線程C的優先級小于自身的優先級, 則將線程C的優先級提升到自身的優先級,線程C釋放資源Source后,再恢復線程C的原優先級。這種方法只在占有資源的低優先級線程阻塞了高優先級線程時才動態的改變線程的優先級。

RT-Thread是如何解決線程優先級翻轉呢?

在官方的文檔中,對線程優先級翻轉有相對應的說明及解決方法。下面我把RT-THREAD官方的描述及解決方法貼出來。

使用信號量會導致的另一個潛在問題是線程優先級翻轉問題。所謂優先級翻轉,即當一個高優先級線程試圖通過信號量機制訪問共享資源時,如果該信號量已被一低優先級線程持有,而這個低優先級線程在運行過程中可能又被其它一些中等優先級的線程搶占,因此造成高優先級線程被許多具有較低優先級的線程阻塞,實時性難以得到保證。如下圖所示:有優先級為 A、B 和 C 的三個線程,優先級 A 》 B 》 C。線程 A,B 處于掛起狀態,等待某一事件觸發,線程 C 正在運行,此時線程 C 開始使用某一共享資源 M。在使用過程中,線程 A 等待的事件到來,線程 A 轉為就緒態,因為它比線程 C 優先級高,所以立即執行。但是當線程 A 要使用共享資源 M 時,由于其正在被線程 C 使用,因此線程 A 被掛起切換到線程 C 運行。如果此時線程 B 等待的事件到來,則線程 B 轉為就緒態。由于線程 B 的優先級比線程 C 高,因此線程 B 開始運行,直到其運行完畢,線程 C 才開始運行。只有當線程 C 釋放共享資源 M 后,線程 A 才得以執行。在這種情況下,優先級發生了翻轉:線程 B 先于線程 A 運行。這樣便不能保證高優先級線程的響應時間。

c24609a4-be57-11eb-9e57-12bb97331649.png

在 RT-Thread 操作系統中,互斥量可以解決優先級翻轉問題,實現的是優先級繼承算法。優先級繼承是通過在線程 A 嘗試獲取共享資源而被掛起的期間內,將線程 C 的優先級提升到線程 A 的優先級別,從而解決優先級翻轉引起的問題。這樣能夠防止 C(間接地防止 A)被 B 搶占,如下圖所示。優先級繼承是指,提高某個占有某種資源的低優先級線程的優先級,使之與所有等待該資源的線程中優先級最高的那個線程的優先級相等,然后執行,而當這個低優先級線程釋放該資源時,優先級重新回到初始設定。因此,繼承優先級的線程避免了系統資源被任何中間優先級的線程搶占。

c2536888-be57-11eb-9e57-12bb97331649.png

說明

對于我們開發來說,要避免發生優先級翻轉的問題。

優先級翻轉的危害:

任務調度時,時間不確定性,破壞實時系統的實時性,嚴重時可能導致系統崩潰。

優先級低的任務比優先級高的任務更先執行,導致任務的錯亂,邏輯的錯亂。

原文標題:線程優先級翻轉,如何避免?

文章出處:【微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

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

    關注

    5198

    文章

    20442

    瀏覽量

    333971
  • RTOS
    +關注

    關注

    25

    文章

    866

    瀏覽量

    122972

原文標題:線程優先級翻轉,如何避免?

文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    開發過程中如何利用CW32L083系列微控制器的官方固件庫進行程序編寫和調試?

    開發過程中,如何利用CW32L083系列微控制器的官方固件庫進行程序編寫和調試?
    發表于 12-15 07:23

    搶占優先級和子優先級

    關于搶占優先級和子優先級: 1)具有高搶占式優先級的中斷可以在具有低搶占式優先級的中斷服務程序執行過程中被響應,即中斷嵌套,或者說高搶占式
    發表于 12-03 07:11

    PWM停止輸出,什么原因導致這種現象發生?

    IR2010SPBF驅動器控制半橋電路輸出PWM設備安裝在地鐵上,在運行過程中會出現TMS檢測到輸出頻率占空比都是零,取回故障設備通電測量PWM正常輸出,什么原因導致這種現象發生?
    發表于 11-26 09:38

    電能質量在線監測裝置的暫態數據補傳的優先級如何在實際應用中進行動態調整?

    電能質量在線監測裝置的暫態數據補傳優先級在實際應用通過 事件驅動、主站指令、資源狀態感知和動態策略調整 等多層機制實現靈活調控,確保關鍵數據的實時性與可靠性。以下是具體實現方式和典型場景的動態調整
    的頭像 發表于 11-06 14:10 ?264次閱讀

    電能質量在線監測裝置的暫態數據補傳的優先級是怎樣的?

    電能質量在線監測裝置的暫態數據補傳優先級設計遵循 事件驅動、主站指令優先、資源動態分配 的原則,結合行業標準和設備機制,形成以下多層級優先級體系: 一、最高優先級:緊急事件驅動補傳 1
    的頭像 發表于 11-06 14:02 ?293次閱讀

    FreeRTOS任務調度及優先級問題

    都有容錯,但是心里沒底,想向大家了解一下實際工作中有沒有遇到到類似的問題,如果有又是怎么解決的呢? 另外有前輩可以分享一下任務的優先級在實際項目中該基于什么原則來劃分呢?
    發表于 11-06 02:18

    優先級線程無法調度怎么解決?

    1,設置了3,5,6,8幾個優先級,設備在現場正常運行了一年多后,顯示、前端、后端這3個低優先級線程異常了,表現為屏幕不動,前端采集數據沒有變化等,其他高優先級的線程如通訊,按鍵都能正常運行,通訊有喂狗操作,停止通訊,會看門狗復
    發表于 09-25 07:33

    在線程刪除時遇到斷言,是什么原因導致的?

    在一個線程調用線程刪除函數刪除另外一個線程,這2個線程的優先級是相等的,被刪除的線程也是動態創建的,出現了下面的斷言內容,一般是什么情況導致的?堆棧分配不足?刪除的線程和被刪除的線程哪個堆棧分配
    發表于 09-12 06:08

    什么是RTOS優先級反轉

    當一個高優先級任務正在等待一個資源,但一個低優先級任務正在持有它,一個中等優先級任務繼續在中間運行時,就會發生優先級反轉——阻止低優先級任務
    的頭像 發表于 09-09 14:50 ?1003次閱讀

    揭秘!基于RT-Thread探究“優先級反轉”下的任務調度究竟是什么樣的?| 技術集結

    本文將基于RT-Thread,結合RT-Trace調試器細化到實際任務調度的粒度,來調試并逐步講解“優先級反轉”的調度和運行邏輯。如果對RT-Trace感興趣的可以看這篇文章:國產嵌入式調試器之光
    的頭像 發表于 08-17 10:07 ?3260次閱讀
    揭秘!基于RT-Thread探究“<b class='flag-5'>優先級</b>反轉”下的任務調度究竟是什么樣的?| 技術集結

    TLe9893怎么調整外設的中斷優先級

    你好林工,我該怎么調整外設的中斷優先級?是否可以通過工具調整?默認設置下,是不是Brdv的在中斷優先級高于T20和can?
    發表于 08-01 06:20

    請問C0系列單片機中斷優先級只有4嗎?

    C0系列單片機中斷優先級只有4?C071在配置的時候只能配置0-3
    發表于 07-23 08:00

    使用CY7C65213開發過程中,應該用哪個interface進行uart通信?

    在使用CY7C65213開發過程中,我想用CyUartRead讀數據,但是好像沒有接口的deviceType是CY_TYPE_UART,想請問我應該用哪個interface進行uart通信? 是否有相關指導文件,或描述符指導?
    發表于 06-03 07:04

    CyU3PDebugPrint的最高優先級和最低優先級是什么?

    [i]CyU3PDebugPrint的最高優先級和最低優先級是什么?
    發表于 05-13 08:22

    配電柜—斷電危機?配電柜故障排查優先級指南

    在排查配電柜故障過程中,合理安排排查優先級至關重要。下面聊一下如何科學合理安排配電柜故障排查優先級順序。
    的頭像 發表于 03-06 18:55 ?1115次閱讀
    配電柜—斷電危機?配電柜故障排查<b class='flag-5'>優先級</b>指南