性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

程序小白
認(rèn)證:優(yōu)質(zhì)創(chuàng)作者
所在專題目錄 查看專題
關(guān)于軟件的作用域和生命周期的一些理解
淺析RTOS中的鉤子函數(shù)(HOOK)
RTOS的時(shí)間片調(diào)度不同處——FreeRTOS與RTT
FreeRTOS中任務(wù)間的同步——事件組與全局變量
FreeRTOS的優(yōu)先級(jí)翻轉(zhuǎn)與繼承
作者動(dòng)態(tài) 更多
基于stm32采用PWM驅(qū)動(dòng)伺服控制器學(xué)習(xí)筆記
5天前
基于STM32驅(qū)動(dòng)TM1638學(xué)習(xí)筆記——軟件篇
04-19 12:42
基于TM1638驅(qū)動(dòng)8位數(shù)碼管設(shè)計(jì)分享
02-24 11:26
RT-Thread驅(qū)動(dòng)之路: Studio創(chuàng)建FAL分區(qū)⑤
01-02 08:30
RT-Thread驅(qū)動(dòng)之路: Studio 掛載通用SPI flash④
2024-12-23 13:41

FreeRTOS的優(yōu)先級(jí)翻轉(zhuǎn)與繼承

 (多年前的真實(shí)經(jīng)歷)

      面試官:懂不懂RTOS?

      小白:懂一點(diǎn)。

      面試官:你來(lái)講一下什么是優(yōu)先級(jí)翻轉(zhuǎn),什么是優(yōu)先級(jí)繼承。

      小白:……


      曾經(jīng)一度以為是因?yàn)樽约簺](méi)答上來(lái),而失去了一份心儀已久的offer,但實(shí)際上哪怕答上來(lái)我也可能只是個(gè)joke.


優(yōu)先級(jí)的翻轉(zhuǎn)與繼承發(fā)生在什么情況下?

1. 首先這里所說(shuō)的都是任務(wù)級(jí)的優(yōu)先級(jí)(中斷也是有優(yōu)先級(jí)的,那歸NVIC管,RTOS插不上手)

2. 必須是多任務(wù)運(yùn)行情況下(至少三個(gè)以上的任務(wù))。

3.不同優(yōu)先級(jí)任務(wù)之間存在同步的關(guān)系(尤其是高優(yōu)先級(jí)任務(wù)與低優(yōu)先級(jí)任務(wù)之間有愛(ài)恨糾葛)。

接下來(lái)看一看優(yōu)先級(jí)繼承與翻轉(zhuǎn)出現(xiàn)的情況。

優(yōu)先級(jí)翻轉(zhuǎn)的運(yùn)行順序:

時(shí)刻一: Task3正在運(yùn)行態(tài),并且正在訪問(wèn)某個(gè)共享資源。

時(shí)刻二: 這個(gè)時(shí)候Task1 變?yōu)榫途w態(tài),于是搶占Task3任務(wù),搶占發(fā)生后,Task1變?yōu)檫\(yùn)行態(tài),Task3變?yōu)榫途w態(tài)。

時(shí)刻三: 假如在這一時(shí)刻,Task2從阻塞態(tài)變?yōu)榱司途w態(tài),但是由于Task1在運(yùn)行態(tài),所以他只能等待。

時(shí)刻四:Task1在運(yùn)行過(guò)程中,需要訪問(wèn)某個(gè)共享資源,但資源被Task3占用,于是Task1進(jìn)入阻塞態(tài)。

獵殺時(shí)刻到來(lái):Task1進(jìn)入阻塞態(tài),調(diào)度器需要從就緒任務(wù)列表中,讀取當(dāng)前已經(jīng)就緒的任務(wù),選擇優(yōu)先級(jí)較高的任務(wù),讓其進(jìn)入運(yùn)行態(tài)。目前在就緒任務(wù)列表中的任務(wù)有個(gè)Task2和Task3,該誰(shuí)進(jìn)入運(yùn)行態(tài)呢?

情況一(當(dāng)任務(wù)間應(yīng)用二值信號(hào)量進(jìn)行資源獲取時(shí)發(fā)生):

Task2進(jìn)入運(yùn)行態(tài)的情況,由于Task2 < Task1 ,所以站在應(yīng)用的角度來(lái)看優(yōu)先級(jí)發(fā)生了翻轉(zhuǎn)。

情況二(當(dāng)任務(wù)間應(yīng)用互斥信號(hào)量進(jìn)行資源獲取時(shí)發(fā)生):

Task3進(jìn)入運(yùn)行態(tài)的情況,由于Task3 < Task2,所以站在應(yīng)用的角度來(lái)看,Task3先于Task2運(yùn)行,更像是Task3繼承了Task1的優(yōu)先級(jí),而發(fā)生了優(yōu)先級(jí)搶占。


總結(jié)一下:

      不論是優(yōu)先級(jí)繼承還是優(yōu)先級(jí)翻轉(zhuǎn),都不是錯(cuò)誤,對(duì)于調(diào)度器來(lái)講都只能算是常規(guī)操作,他只是根據(jù)同步的類型以及任務(wù)的優(yōu)先級(jí),進(jìn)行了確定性的判斷,并調(diào)整任務(wù)的狀態(tài)而已。

應(yīng)用看起來(lái)有點(diǎn)怪或者是異常都是由設(shè)計(jì)者導(dǎo)致的,你比如常規(guī)的操作造成死鎖,掛掉整個(gè)應(yīng)用,你也不能怪調(diào)度器不是。


題外話:

      其實(shí)一切都沒(méi)那么復(fù)雜,在你真正實(shí)踐的時(shí)候就能掌握所有細(xì)節(jié)。

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺(jué)得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 4
收藏 2
關(guān)注 150
成為作者 賺取收益
全部留言
0/200
  • chaochao1545 2021-10-12 13:28
    思路清晰,受益匪淺
    回復(fù)