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

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

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

3天內不再提示

I2C子系統優先級翻轉與優先級繼承

麥辣雞腿堡 ? 來源:嵌入式Linux系統開發 ? 作者:嵌入式Linux系統開 ? 2023-07-22 15:08 ? 次閱讀

優先級翻轉與優先級繼承

優先級翻轉在可剝奪內核中是非常常見的,例子如下(H:High、M:Middle、L:Low)

圖片

任務 H 和任務 M 處于掛起狀態,等待某一事件的發生,任務 L 正在運行。

某一時刻任務 L 想要訪問共享資源,在此之前它必須先獲得對應該資源的信號量。

任務 L 獲得信號量并開始使用該共享資源。

由于任務 H 優先級高,它等待的事件發生后便剝奪了任務 L 的 CPU 使用權。

任務 H 開始運行。

任務 H 運行過程中也要使用任務 L 正在使用著的資源,由于該資源的信號量還被任務L 占用著,任務 H 只能進入掛起狀態,等待任務 L
釋放該信號量。

任務 L 繼續運行。

由于任務 M 的優先級高于任務 L,當任務 M 等待的事件發生后,任務 M 剝奪了任務L 的 CPU 使用權。

任務 M 處理該處理的事。

任務 M 執行完畢后,將 CPU 使用權歸還給任務 L。

任務 L 繼續運行。

最終任務 L 完成所有的工作并釋放了信號量,到此為止,由于實時內核知道有個高優先級的任務在等待這個信號量,故內核做任務切換。

任務 H 得到該信號量并接著運行。

在這種情況下,任務 H 的優先級實際上降到了任務 L 的優先級水平。因為任務 H 要一直等待直到任務 L 釋放其占用的那個共享資源。由于任務 M剝奪了任務 L 的 CPU 使用權,使得任務 H 的情況更加惡化,這樣就相當于任務 M 的優先級高于任務 H,導致優先級翻轉。

Linux 用 rt_mutex 來解決該問題,rt_mutex 是帶優先級繼承的互斥鎖。

當一個 rt_mutex 正在被一個低優先級的任務使用,而此時有個高優先級的任務也嘗試獲取這個 rt_mutex的話就會被阻塞。不過這個高優先級的任務會將低優先級任務的優先級提升到與自己相同的優先級,這就是優先級繼承。優先級繼承盡可能的降低了高優先級任務處于阻塞態的時間,并且將已經出現的“優先級翻轉”的影響降到最低。

優先級繼承并不能完全的消除優先級翻轉,它只是盡可能的降低優先級翻轉帶來的影響。

rt_mutex 不能用于中斷服務函數中,原因如下:

rt_mutex 有優先級繼承的機制,所以只能用在任務中,不能用于中斷服務函數。

中斷服務函數中不能因為要等待 rt_mutex 而設置阻塞時間進入阻塞態。

i2c_transfer 調用 __i2c_transfer 之前,就加了 rt_mutex,保證 I2C 傳輸盡快執行。

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

    關注

    3

    文章

    1375

    瀏覽量

    40313
  • 子系統
    +關注

    關注

    0

    文章

    109

    瀏覽量

    12413
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1489

    瀏覽量

    123962
收藏 人收藏

    評論

    相關推薦

    嵌入式技術中如何定義進程優先級

    靜態優先級是所有相關優先級的計算的起點,要么繼承自父進程,要么用戶空間自行設定。一旦修改了靜態優先級,那么normal priority和動態優先級
    發表于 09-18 16:08 ?1565次閱讀
    嵌入式技術中如何定義進程<b class='flag-5'>優先級</b>

    基于優先級搶占系統的QNX調度算法

    調度算法,是基于優先級的。QNX的線程優先級,是一個0-255的數字,數字越大優先級越高。所以,優先級0是內核中的idle線程。同時,優先級
    發表于 10-31 09:17 ?741次閱讀

    RTOS應用中的優先級反轉問題

    在嵌入式系統中,如果使用基于優先級調度算法的RTOS,系統中可能發生優先級反轉現象。優先級反轉用來描述
    發表于 12-14 11:00 ?1223次閱讀

    uC/OS-II中優先級翻轉問題

    本文著重分析優先級翻轉問題的產生和影響,以及在uC/OS-II中的解決方案,在嵌入式系統的應用中,實時性是一個重要的指標,而優先級翻轉是影響
    發表于 01-06 16:53 ?2397次閱讀

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

    最近在開發過程中,遇到一個問題線程優先級翻轉的問題。那什么原因導致優先級翻轉呢? 在RTOS開發中,優先級
    的頭像 發表于 05-28 15:28 ?2291次閱讀
    開發過程中是什么原因導致<b class='flag-5'>優先級</b><b class='flag-5'>翻轉</b>的?

    cortex M內核優先級設置

    Cortex M內核中每個中斷都有一個8位的優先級設置寄存器這個8位的寄存器可以分為搶占優先級和子優先級兩個部分(通過設置優先級組設置)搶占優先級
    發表于 12-01 11:51 ?4次下載
    cortex M內核<b class='flag-5'>優先級</b>設置

    2.FreeRTOS中斷優先級和任務優先級

    FreeRTOS中斷優先級和任務優先級架構:Cortex-M3版本:FreeRTOS V9.0.0前言:最開始,我并沒有搞清楚什么是中斷優先級和任務優先級,但看了部分資料后發現這兩個并
    發表于 12-04 20:21 ?9次下載
    <b class='flag-5'>2</b>.FreeRTOS中斷<b class='flag-5'>優先級</b>和任務<b class='flag-5'>優先級</b>

    STM32F103芯片中斷優先級以及FreeRTOS優先級設置

    STM32F103只用了4個位來表達優先級,因此最多支持16的可編程優先級(0~15),15為最低優先級
    發表于 01-25 18:59 ?1次下載
    STM32F103芯片中斷<b class='flag-5'>優先級</b>以及FreeRTOS<b class='flag-5'>優先級</b>設置

    uC/OS-II學習筆記——優先級反轉與優先級繼承機制

    優先級反轉,是指某同步資源被較低優先級的進程/線程所擁有,較高優先級的進程/線程競爭該同步資源未獲得該資源,而使得較高優先級進程/線程反而推遲被調度執行的現象。
    發表于 02-09 10:33 ?2次下載
    uC/OS-II學習筆記——<b class='flag-5'>優先級</b>反轉與<b class='flag-5'>優先級</b><b class='flag-5'>繼承</b>機制

    中斷優先級處理的原則及配置 搶占優先級和響應優先級的區別

    首先我們需要知道什么是中斷優先級:中斷優先級是CPU響應中斷的先后順序
    的頭像 發表于 05-18 15:10 ?2.8w次閱讀
    中斷<b class='flag-5'>優先級</b>處理的原則及配置 搶占<b class='flag-5'>優先級</b>和響應<b class='flag-5'>優先級</b>的區別

    具有固定優先級調度程序RTOS的優先級倒置

      優先級繼承并不能真正治愈優先級倒置,它只是在某些情況下將其影響最小化。硬實時應用程序仍應仔細設計,以便一開始就不會發生優先級反轉。
    的頭像 發表于 06-22 15:45 ?1274次閱讀
    具有固定<b class='flag-5'>優先級</b>調度程序RTOS的<b class='flag-5'>優先級</b>倒置

    FreeRTOS任務的優先級示例

    任務的優先級:0~24之間。數字越大,任務優先等級越高。高優先級的任務優先執行。
    的頭像 發表于 09-15 11:13 ?2819次閱讀

    Free RTOS的優先級翻轉

    優先級翻轉簡介:就是高優先級的任務運行起來的效果好像成了低優先級,而低優先級比高優先級先運行;
    的頭像 發表于 02-10 15:31 ?1339次閱讀
    Free RTOS的<b class='flag-5'>優先級</b><b class='flag-5'>翻轉</b>

    什么是優先級反轉

    ,才能運行TaskC,TaskC釋放信號量之后高優先級的TaskA才能執行。看起來高優先級的TaskA還不如低優先級的TaskC優先級高,這就叫做
    的頭像 發表于 04-24 13:01 ?2308次閱讀
    什么是<b class='flag-5'>優先級</b>反轉

    freertos中斷優先級在哪設置

    中斷優先級之前,我們需要理解中斷優先級的概念。在嵌入式系統中,中斷是硬件或軟件事件,它們可以打斷CPU的當前執行流程,讓CPU去處理更緊急的任務。中斷優先級用于確定多個中斷請求之間的處
    的頭像 發表于 09-02 14:17 ?710次閱讀
    主站蜘蛛池模板: 国产精品人人爱一区二区白浆| 福利视频一区二区牛牛| 圆胖肥女人性视频| 欧美在线黄色| www.免费| 午夜黄网| 天天色天天综合| 色视频色露露永久免费观看| 乱人伦xxxx国语对白| 亚洲天天在线| 天天玩天天干| brazzersvideosexhd欧美高清| 在线精品小视频| 天天操夜夜操免费视频| 黄a在线| 性xxxx奶大欧美高清| 羞羞视频靠逼视频大全| 与子乱刺激对白在线播放| 天天久久影视色香综合网| 欧美亚洲三级| 国产高清视频免费最新在线 | 亚洲日本在线观看| 国产精品香蕉成人网在线观看| 亚洲国产成人在人网站天堂| 日本特黄特色| 国产精品久久久精品视频| 午夜国产理论| 天天透天天射| 澳门色视频| 欧美福利一区| 天天碰免费视频| 久久性色| 午夜视| 天堂最新版中文网| 午夜视频在线免费看| 久久久久88色偷偷免费| 在线99热| 日本一区不卡视频| 午夜美女写真福利写视频| 免费美剧在线观看| 六月婷婷在线观看|