chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

開(kāi)發(fā)過(guò)程中是什么原因?qū)е聝?yōu)先級(jí)翻轉(zhuǎn)的?

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來(lái)源:Rice嵌入式開(kāi)發(fā)技術(shù)分享 ? 作者:Rice嵌入式開(kāi)發(fā)技術(shù) ? 2021-05-28 15:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近在開(kāi)發(fā)過(guò)程中,遇到一個(gè)問(wèn)題線程優(yōu)先級(jí)翻轉(zhuǎn)的問(wèn)題。那什么原因?qū)е聝?yōu)先級(jí)翻轉(zhuǎn)呢?

RTOS開(kāi)發(fā)中,優(yōu)先級(jí)翻轉(zhuǎn)問(wèn)題也是值得我們?nèi)リP(guān)注留意的。避免代碼癱瘓。

什么是優(yōu)先級(jí)翻轉(zhuǎn)

所謂的優(yōu)先級(jí)翻轉(zhuǎn)問(wèn)題:即當(dāng)一個(gè)高優(yōu)先級(jí)線程通過(guò)信號(hào)量機(jī)制訪問(wèn)共享資源時(shí),該型號(hào)量以被一個(gè)低優(yōu)先級(jí)線程占有,而這個(gè)低優(yōu)先級(jí)的任務(wù)在訪問(wèn)共享資源時(shí)可能又被一個(gè)中等優(yōu)先級(jí)任務(wù)搶占。從上面的描述,高優(yōu)先級(jí)線程被許多較低優(yōu)先級(jí)的任務(wù)阻塞,導(dǎo)致高優(yōu)先級(jí)的實(shí)時(shí)性得不到保證。

舉例:有三個(gè)線程分別為:A、B、C。優(yōu)先級(jí)A 》 B 》 C,線程A和B處于掛起狀態(tài),等待某一事件發(fā)生,線程C正在運(yùn)行,此時(shí)任務(wù)C開(kāi)始使用共享資源Source。在使用Source時(shí),線程A等待事件到來(lái),線程A轉(zhuǎn)為就緒態(tài),因?yàn)榫€程A優(yōu)先級(jí)比線程C高,所以線程A會(huì)立即執(zhí)行。當(dāng)線程A要使用共享資源Source時(shí),由于共享資源Source正在被線程C使用,因此線程A被掛起,線程C開(kāi)始運(yùn)行。如果此時(shí)中等優(yōu)先級(jí)線程B等待事件到來(lái),則線程B轉(zhuǎn)為就緒態(tài)。由于線程B優(yōu)先級(jí)比線程C高,因此線程B開(kāi)始運(yùn)行,直到其運(yùn)行完畢,線程C才開(kāi)始運(yùn)行。直到線程C釋放共享資源Source后,線程A才得以執(zhí)行。在這種情況下,優(yōu)先級(jí)發(fā)生了翻轉(zhuǎn),線程B先于線程A運(yùn)行。

如何解決優(yōu)先級(jí)翻轉(zhuǎn)

解決優(yōu)先級(jí)翻轉(zhuǎn)的方法:優(yōu)先級(jí)天花板、優(yōu)先級(jí)繼承。那么這兩種方法有什么?

優(yōu)先級(jí)天花板優(yōu)先級(jí)天花板是當(dāng)線程申請(qǐng)某資源時(shí),把該線程的優(yōu)先級(jí)提升到可訪問(wèn)這個(gè)資源的所有線程中的最高優(yōu)先級(jí),這個(gè)優(yōu)先級(jí)稱為該資源的優(yōu)先級(jí)天花板。這種方法簡(jiǎn)單易行,不必進(jìn)行復(fù)雜的判斷,不管線程是否阻塞了高優(yōu)先級(jí)線程的運(yùn)行, 只要線程訪問(wèn)共享資源都會(huì)提升線程的優(yōu)先級(jí)。

優(yōu)先級(jí)繼承優(yōu)先級(jí)繼承是當(dāng)線程A申請(qǐng)共享資源Source時(shí),如果共享資源Source正在被線程C使用,通過(guò)比較線程C與自身的優(yōu)先級(jí),如發(fā)現(xiàn)線程C的優(yōu)先級(jí)小于自身的優(yōu)先級(jí), 則將線程C的優(yōu)先級(jí)提升到自身的優(yōu)先級(jí),線程C釋放資源Source后,再恢復(fù)線程C的原優(yōu)先級(jí)。這種方法只在占有資源的低優(yōu)先級(jí)線程阻塞了高優(yōu)先級(jí)線程時(shí)才動(dòng)態(tài)的改變線程的優(yōu)先級(jí)。

RT-Thread是如何解決線程優(yōu)先級(jí)翻轉(zhuǎn)呢?

在官方的文檔中,對(duì)線程優(yōu)先級(jí)翻轉(zhuǎn)有相對(duì)應(yīng)的說(shuō)明及解決方法。下面我把RT-THREAD官方的描述及解決方法貼出來(lái)。

使用信號(hào)量會(huì)導(dǎo)致的另一個(gè)潛在問(wèn)題是線程優(yōu)先級(jí)翻轉(zhuǎn)問(wèn)題。所謂優(yōu)先級(jí)翻轉(zhuǎn),即當(dāng)一個(gè)高優(yōu)先級(jí)線程試圖通過(guò)信號(hào)量機(jī)制訪問(wèn)共享資源時(shí),如果該信號(hào)量已被一低優(yōu)先級(jí)線程持有,而這個(gè)低優(yōu)先級(jí)線程在運(yùn)行過(guò)程中可能又被其它一些中等優(yōu)先級(jí)的線程搶占,因此造成高優(yōu)先級(jí)線程被許多具有較低優(yōu)先級(jí)的線程阻塞,實(shí)時(shí)性難以得到保證。如下圖所示:有優(yōu)先級(jí)為 A、B 和 C 的三個(gè)線程,優(yōu)先級(jí) A 》 B 》 C。線程 A,B 處于掛起狀態(tài),等待某一事件觸發(fā),線程 C 正在運(yùn)行,此時(shí)線程 C 開(kāi)始使用某一共享資源 M。在使用過(guò)程中,線程 A 等待的事件到來(lái),線程 A 轉(zhuǎn)為就緒態(tài),因?yàn)樗染€程 C 優(yōu)先級(jí)高,所以立即執(zhí)行。但是當(dāng)線程 A 要使用共享資源 M 時(shí),由于其正在被線程 C 使用,因此線程 A 被掛起切換到線程 C 運(yùn)行。如果此時(shí)線程 B 等待的事件到來(lái),則線程 B 轉(zhuǎn)為就緒態(tài)。由于線程 B 的優(yōu)先級(jí)比線程 C 高,因此線程 B 開(kāi)始運(yùn)行,直到其運(yùn)行完畢,線程 C 才開(kāi)始運(yùn)行。只有當(dāng)線程 C 釋放共享資源 M 后,線程 A 才得以執(zhí)行。在這種情況下,優(yōu)先級(jí)發(fā)生了翻轉(zhuǎn):線程 B 先于線程 A 運(yùn)行。這樣便不能保證高優(yōu)先級(jí)線程的響應(yīng)時(shí)間。

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

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

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

說(shuō)明

對(duì)于我們開(kāi)發(fā)來(lái)說(shuō),要避免發(fā)生優(yōu)先級(jí)翻轉(zhuǎn)的問(wèn)題。

優(yōu)先級(jí)翻轉(zhuǎn)的危害:

任務(wù)調(diào)度時(shí),時(shí)間不確定性,破壞實(shí)時(shí)系統(tǒng)的實(shí)時(shí)性,嚴(yán)重時(shí)可能導(dǎo)致系統(tǒng)崩潰。

優(yōu)先級(jí)低的任務(wù)比優(yōu)先級(jí)高的任務(wù)更先執(zhí)行,導(dǎo)致任務(wù)的錯(cuò)亂,邏輯的錯(cuò)亂。

原文標(biāo)題:線程優(yōu)先級(jí)翻轉(zhuǎn),如何避免?

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

責(zé)任編輯:haq

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

    關(guān)注

    5192

    文章

    20274

    瀏覽量

    331694
  • RTOS
    +關(guān)注

    關(guān)注

    25

    文章

    865

    瀏覽量

    122746

原文標(biāo)題:線程優(yōu)先級(jí)翻轉(zhuǎn),如何避免?

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    開(kāi)發(fā)過(guò)程中如何利用CW32L083系列微控制器的官方固件庫(kù)進(jìn)行程序編寫(xiě)和調(diào)試?

    開(kāi)發(fā)過(guò)程中,如何利用CW32L083系列微控制器的官方固件庫(kù)進(jìn)行程序編寫(xiě)和調(diào)試?
    發(fā)表于 12-15 07:23

    搶占優(yōu)先級(jí)和子優(yōu)先級(jí)

    關(guān)于搶占優(yōu)先級(jí)和子優(yōu)先級(jí): 1)具有高搶占式優(yōu)先級(jí)的中斷可以在具有低搶占式優(yōu)先級(jí)的中斷服務(wù)程序執(zhí)行過(guò)程中被響應(yīng),即中斷嵌套,或者說(shuō)高搶占式
    發(fā)表于 12-03 07:11

    電能質(zhì)量在線監(jiān)測(cè)裝置的暫態(tài)數(shù)據(jù)補(bǔ)傳的優(yōu)先級(jí)如何在實(shí)際應(yīng)用中進(jìn)行動(dòng)態(tài)調(diào)整?

    電能質(zhì)量在線監(jiān)測(cè)裝置的暫態(tài)數(shù)據(jù)補(bǔ)傳優(yōu)先級(jí)在實(shí)際應(yīng)用通過(guò) 事件驅(qū)動(dòng)、主站指令、資源狀態(tài)感知和動(dòng)態(tài)策略調(diào)整 等多層機(jī)制實(shí)現(xiàn)靈活調(diào)控,確保關(guān)鍵數(shù)據(jù)的實(shí)時(shí)性與可靠性。以下是具體實(shí)現(xiàn)方式和典型場(chǎng)景的動(dòng)態(tài)調(diào)整
    的頭像 發(fā)表于 11-06 14:10 ?184次閱讀

    電能質(zhì)量在線監(jiān)測(cè)裝置的暫態(tài)數(shù)據(jù)補(bǔ)傳的優(yōu)先級(jí)是怎樣的?

    電能質(zhì)量在線監(jiān)測(cè)裝置的暫態(tài)數(shù)據(jù)補(bǔ)傳優(yōu)先級(jí)設(shè)計(jì)遵循 事件驅(qū)動(dòng)、主站指令優(yōu)先、資源動(dòng)態(tài)分配 的原則,結(jié)合行業(yè)標(biāo)準(zhǔn)和設(shè)備機(jī)制,形成以下多層級(jí)優(yōu)先級(jí)體系: 一、最高優(yōu)先級(jí):緊急事件驅(qū)動(dòng)補(bǔ)傳 1
    的頭像 發(fā)表于 11-06 14:02 ?181次閱讀

    FreeRTOS任務(wù)調(diào)度及優(yōu)先級(jí)問(wèn)題

    都有容錯(cuò),但是心里沒(méi)底,想向大家了解一下實(shí)際工作中有沒(méi)有遇到到類似的問(wèn)題,如果有又是怎么解決的呢? 另外有前輩可以分享一下任務(wù)的優(yōu)先級(jí)在實(shí)際項(xiàng)目中該基于什么原則來(lái)劃分呢?
    發(fā)表于 11-06 02:18

    優(yōu)先級(jí)線程無(wú)法調(diào)度怎么解決?

    1,設(shè)置了3,5,6,8幾個(gè)優(yōu)先級(jí),設(shè)備在現(xiàn)場(chǎng)正常運(yùn)行了一年多后,顯示、前端、后端這3個(gè)低優(yōu)先級(jí)線程異常了,表現(xiàn)為屏幕不動(dòng),前端采集數(shù)據(jù)沒(méi)有變化等,其他高優(yōu)先級(jí)的線程如通訊,按鍵都能正常運(yùn)行,通訊有喂狗操作,停止通訊,會(huì)看門狗復(fù)
    發(fā)表于 09-25 07:33

    在線程刪除時(shí)遇到斷言,是什么原因導(dǎo)致的?

    在一個(gè)線程調(diào)用線程刪除函數(shù)刪除另外一個(gè)線程,這2個(gè)線程的優(yōu)先級(jí)是相等的,被刪除的線程也是動(dòng)態(tài)創(chuàng)建的,出現(xiàn)了下面的斷言內(nèi)容,一般是什么情況導(dǎo)致的?堆棧分配不足?刪除的線程和被刪除的線程哪個(gè)堆棧分配
    發(fā)表于 09-12 06:08

    什么是RTOS優(yōu)先級(jí)反轉(zhuǎn)

    當(dāng)一個(gè)高優(yōu)先級(jí)任務(wù)正在等待一個(gè)資源,但一個(gè)低優(yōu)先級(jí)任務(wù)正在持有它,一個(gè)中等優(yōu)先級(jí)任務(wù)繼續(xù)在中間運(yùn)行時(shí),就會(huì)發(fā)生優(yōu)先級(jí)反轉(zhuǎn)——阻止低優(yōu)先級(jí)任務(wù)
    的頭像 發(fā)表于 09-09 14:50 ?893次閱讀

    揭秘!基于RT-Thread探究“優(yōu)先級(jí)反轉(zhuǎn)”下的任務(wù)調(diào)度究竟是什么樣的?| 技術(shù)集結(jié)

    本文將基于RT-Thread,結(jié)合RT-Trace調(diào)試器細(xì)化到實(shí)際任務(wù)調(diào)度的粒度,來(lái)調(diào)試并逐步講解“優(yōu)先級(jí)反轉(zhuǎn)”的調(diào)度和運(yùn)行邏輯。如果對(duì)RT-Trace感興趣的可以看這篇文章:國(guó)產(chǎn)嵌入式調(diào)試器之光
    的頭像 發(fā)表于 08-17 10:07 ?3055次閱讀
    揭秘!基于RT-Thread探究“<b class='flag-5'>優(yōu)先級(jí)</b>反轉(zhuǎn)”下的任務(wù)調(diào)度究竟是什么樣的?| 技術(shù)集結(jié)

    TLe9893怎么調(diào)整外設(shè)的中斷優(yōu)先級(jí)?

    你好林工,我該怎么調(diào)整外設(shè)的中斷優(yōu)先級(jí)?是否可以通過(guò)工具調(diào)整?默認(rèn)設(shè)置下,是不是Brdv的在中斷優(yōu)先級(jí)高于T20和can?
    發(fā)表于 08-01 06:20

    請(qǐng)問(wèn)C0系列單片機(jī)中斷優(yōu)先級(jí)只有4級(jí)嗎?

    C0系列單片機(jī)中斷優(yōu)先級(jí)只有4級(jí)?C071在配置的時(shí)候只能配置0-3
    發(fā)表于 07-23 08:00

    使用CY7C65213開(kāi)發(fā)過(guò)程中,應(yīng)該用哪個(gè)interface進(jìn)行uart通信?

    在使用CY7C65213開(kāi)發(fā)過(guò)程中,我想用CyUartRead讀數(shù)據(jù),但是好像沒(méi)有接口的deviceType是CY_TYPE_UART,想請(qǐng)問(wèn)我應(yīng)該用哪個(gè)interface進(jìn)行uart通信? 是否有相關(guān)指導(dǎo)文件,或描述符指導(dǎo)?
    發(fā)表于 06-03 07:04

    CyU3PDebugPrint的最高優(yōu)先級(jí)和最低優(yōu)先級(jí)是什么?

    [i]CyU3PDebugPrint的最高優(yōu)先級(jí)和最低優(yōu)先級(jí)是什么?
    發(fā)表于 05-13 08:22

    配電柜—斷電危機(jī)?配電柜故障排查優(yōu)先級(jí)指南

    在排查配電柜故障過(guò)程中,合理安排排查優(yōu)先級(jí)至關(guān)重要。下面聊一下如何科學(xué)合理安排配電柜故障排查優(yōu)先級(jí)順序。
    的頭像 發(fā)表于 03-06 18:55 ?1006次閱讀
    配電柜—斷電危機(jī)?配電柜故障排查<b class='flag-5'>優(yōu)先級(jí)</b>指南

    在linux下開(kāi)發(fā)過(guò)程中, DLP4500 GUI無(wú)法連接光機(jī)怎么解決?

    在linux下開(kāi)發(fā)過(guò)程中, DLP4500 GUI 無(wú)法連接光機(jī),出現(xiàn)錯(cuò)誤提示如下: open device_handle error: Is a directory opening path
    發(fā)表于 02-20 08:41