當一個高優先級任務正在等待一個資源,但一個低優先級任務正在持有它,一個中等優先級任務繼續在中間運行時,就會發生優先級反轉——阻止低優先級任務釋放它。
如此有效→低優先級任務阻止高優先級任務。
示例
任務H→高優先級任務(需要UART)。
任務L→低優先級任務(目前持有UART互斥)。
任務M→中等優先級任務(不使用UART,但繼續運行)。
1.任務L鎖定UART互斥。
2.任務H喚醒并嘗試鎖定UART→,但它被阻止了,因為任務L保留了它。
3.任務M(中等優先級)繼續運行,因為它的優先級高于任務L。
4.任務L永遠不會獲得釋放互斥的CPU時間。
5.任務H(高優先級)仍然卡住→優先級反轉。
解決方案→優先繼承
RTOS暫時提高了任務L的優先級,以匹配任務H,因此它可以快速完成并釋放互斥。然后任務H繼續。
結論
當高優先級任務被阻止時,就會發生優先級反轉,因為低優先級任務持有它所需的資源,而中優先級任務阻止了低優先級任務。這可能會導致系統停滯。RTOS通常通過優先級繼承來解決它,低優先級任務的優先級被暫時提高,使其能夠快速釋放資源。
9月11日及9月17日,STM32研討會將走進北京和上海。作為ST合作伙伴,麥克泰將在本次研討會展示功能安全嵌入式實時操作系統SAFERTOS和Flexible Safety RTOS。歡迎報名并現場溝通您的功能安全RTOS需求。
麥克泰技術走過了30年發展歷程(1995-2025),秉承“讓嵌入式軟件開發更容易”的理念,致力于推廣嵌入式軟件開發工具、測試軟件和嵌入式操作系統。麥克泰技術通過舉辦嵌入式軟件和操作系統研討會、開設培訓課程、出版圖書,撰寫博客文章,倡導和宣傳開放和開源的嵌入式軟件、操作系統以及開發技術,包括VRTX(90年代)、μC/OS(2000年),Montavista Linux(2010年)和FreeRTOS(2010年)以及IAR/BDI/J-Link等知名的產品和技術。
麥克泰技術具有豐富嵌入式軟件項目開發、行業應用與服務經驗。今天,我們依托歐美嵌入式軟件商業團隊支持,提供嵌入式軟件商業授權和服務。包括(不限于)SEGGER嵌入式軟件開發和編程工具(J-Link/Flasher),OS分析工具Tracealyzer,WITTENSTEIN公司的SafeRTOS(FreeRTOS)、Flexible Safety RTOS(μC/OS-II MPU)以及新一代PX5 RTOS。麥克泰技術專注預認證功能安全操作系統在汽車、軌交、醫療和工業領域的應用以及RISC-V處理器嵌入式開發生態建設。我們正在以開放開源+商業軟件的支持,服務產業客戶。
-
cpu
+關注
關注
68文章
11229瀏覽量
223225 -
RTOS
+關注
關注
25文章
863瀏覽量
122662 -
優先級反轉
+關注
關注
0文章
3瀏覽量
1218
原文標題:什么是RTOS中的優先級反轉?
文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
CS32L010系列能否支持串口的發送和接收中斷單獨配置?不同中斷的中斷優先級如何設置?
RTOS Crash 問題全維度分析與解決指南
電能質量在線監測裝置的暫態數據補傳的優先級如何在實際應用中進行動態調整?
電能質量在線監測裝置的暫態數據補傳的優先級是怎樣的?
FreeRTOS任務調度及優先級問題
低優先級線程無法調度怎么解決?
求助,關于MS51設置中斷優先級問題求解
揭秘!基于RT-Thread探究“優先級反轉”下的任務調度究竟是什么樣的?| 技術集結

什么是RTOS中的優先級反轉
評論