一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

RTOS為什么用PendSV進(jìn)行線(xiàn)程調(diào)度?

CHANBAEK ? 來(lái)源:硬件工程師干貨 ? 作者:硬件工程師干貨 ? 2023-03-01 10:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

有些操作系統(tǒng)在“心跳”中斷(SysTick中斷)里進(jìn)行線(xiàn)程切換,如果處理器正在執(zhí)行一個(gè)ISR,此時(shí)SysTick異常到來(lái),且SysTick優(yōu)先級(jí)高,搶占了正在運(yùn)行的用戶(hù)ISR,SysTick ISR是不能進(jìn)行線(xiàn)程切換的,因?yàn)镾ysTick ISR運(yùn)行完后要返回上一層用戶(hù)ISR,此時(shí)仍然處于異常模式,不能進(jìn)入線(xiàn)程模式,強(qiáng)行進(jìn)入線(xiàn)程模式會(huì)導(dǎo)致Fault異常。如下圖,延時(shí)到了第二個(gè)SysTick ISR才線(xiàn)程切換,實(shí)時(shí)性降低。在這種情況下,SysTick ISR中切換任務(wù),這會(huì)導(dǎo)致任務(wù)切換延后。

pYYBAGP-vBmABjqgAACZDOEhLTs867.png

極端的情況下,SysTick中斷和用戶(hù)中斷步調(diào)一致,會(huì)導(dǎo)致任務(wù)切換嚴(yán)重滯后。如下圖所示:

pYYBAGP-vC-ARgIWAACHJ2Iqn98501.png

有朋友說(shuō)了,既然SysTick中斷搶占了用戶(hù)中斷不能調(diào)度線(xiàn)程,那么在用戶(hù)ISR即將退出時(shí)進(jìn)行調(diào)度就好了呀,確實(shí)比上面的情況要好一些,但這就需要在所有中斷的末尾都要檢查是否需要切換,增加用戶(hù)中斷程序復(fù)雜度。

也有朋友說(shuō)了,把SysTick中斷優(yōu)先級(jí)調(diào)到最低是不是也可以呢,當(dāng)然可以,調(diào)低了優(yōu)先級(jí),避免了嵌套,就算用戶(hù)中斷期間產(chǎn)生SysTick中斷,但是SysTick中斷不能運(yùn)行,用戶(hù)中斷結(jié)束后,SysTick中斷“咬尾”,這樣是沒(méi)問(wèn)題的,可是有一點(diǎn)SysTick的優(yōu)先級(jí)就無(wú)法提高了。

鑒于上述原因,我們想到了PendSV異常,這個(gè)異常比較特殊,可以理解為一個(gè)軟中斷(軟異常),代碼中操作寄存器就可以觸發(fā)此中斷,我們把它的優(yōu)先級(jí)調(diào)整到最低,當(dāng)SysTick ISR搶占了用戶(hù)中斷后,發(fā)現(xiàn)需要任務(wù)調(diào)度,就設(shè)置寄存器觸發(fā)PendSV異常,因?yàn)樗鼉?yōu)先級(jí)最低,不能響應(yīng),等到用戶(hù)中斷執(zhí)行完立即自動(dòng)響應(yīng),進(jìn)行任務(wù)切換,如下圖所示。

poYBAGP-vECAXPiBAAC198jzyNM802.png

一般情況下:

1、PendSV中斷優(yōu)先級(jí)設(shè)置為最低,用于線(xiàn)程調(diào)度。

2、SysTick中斷優(yōu)先級(jí)根據(jù)自己需求設(shè)置,如果想讓心跳更準(zhǔn)確就調(diào)高一些,如果想讓用戶(hù)中斷相應(yīng)更迅速就調(diào)低一些。

3、可以和PendSV一樣都設(shè)置為最低。

聲明:本文內(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)投訴
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7122

    瀏覽量

    125290
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    905

    瀏覽量

    42633
  • RTOS
    +關(guān)注

    關(guān)注

    24

    文章

    845

    瀏覽量

    120945
  • 線(xiàn)程
    +關(guān)注

    關(guān)注

    0

    文章

    508

    瀏覽量

    20143
  • Systick
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    RTOS中的線(xiàn)程、進(jìn)程和協(xié)程詳解

    看到有小伙伴在討論【RTOS任務(wù)屬于線(xiàn)程還是進(jìn)程】的話(huà)題,這里就來(lái)分析一下OS中的線(xiàn)程、進(jìn)程和協(xié)程的這幾個(gè)概念,同時(shí)一起看看RTOS中的任務(wù)到底屬于哪一種。
    的頭像 發(fā)表于 11-09 12:36 ?2482次閱讀
    <b class='flag-5'>RTOS</b>中的<b class='flag-5'>線(xiàn)程</b>、進(jìn)程和協(xié)程詳解

    深度剖析 RT-Thread 線(xiàn)程調(diào)度流程

    rt_system_scheduler_start:調(diào)度系統(tǒng)第一個(gè)線(xiàn)程rt_hw_context_switch_to:初始化上下文切換環(huán)境,觸發(fā)PendSV異常first_thread:系統(tǒng)中優(yōu)先級(jí)最高
    的頭像 發(fā)表于 06-25 18:24 ?472次閱讀
    深度剖析 RT-Thread <b class='flag-5'>線(xiàn)程</b><b class='flag-5'>調(diào)度</b>流程

    RTOS如何在FX3中工作?

    大家好, 我正在使用 FX3 進(jìn)行一個(gè)項(xiàng)目。 我想知道 RTOS 調(diào)度是如何工作的。 我知道調(diào)用“CyU3PKernelEntry();”后 RTOS 就會(huì)開(kāi)始工作。 如果我只注冊(cè)
    發(fā)表于 05-06 13:20

    rtthread線(xiàn)程調(diào)度

    rtthread線(xiàn)程調(diào)度,RT-Thread多線(xiàn)程學(xué)習(xí)總結(jié)多線(xiàn)程是實(shí)時(shí)操作系統(tǒng)里面最重要的知識(shí)點(diǎn)之一,要學(xué)習(xí)RTOS,多
    發(fā)表于 07-20 07:21

    如何合理的進(jìn)行線(xiàn)程切換與調(diào)度

    線(xiàn)程并發(fā)情況下,如何合理的進(jìn)行線(xiàn)程切換與調(diào)度,充分發(fā)揮芯片性能,解決線(xiàn)程間沖突,是迫切需要解決的問(wèn)題。MDK5.25版本以后提供了新的Sy
    發(fā)表于 08-24 07:33

    RT-Thread的線(xiàn)程簡(jiǎn)介

    。RT-Thread的線(xiàn)程簡(jiǎn)介線(xiàn)程(thread)是系統(tǒng)能夠進(jìn)行調(diào)度的最小單位,在linux中也是這樣定義的,但是和我們RTOS中的thre
    發(fā)表于 08-24 07:56

    對(duì)RTOS進(jìn)行講解

    自動(dòng)化類(lèi)專(zhuān)業(yè)小伙伴最早接觸一般都是在接觸RTOS后了,然而對(duì)于計(jì)算機(jī)相關(guān)專(zhuān)業(yè)的小伙伴應(yīng)該在學(xué)《計(jì)算機(jī)操作系統(tǒng)》老師對(duì)這一塊講解的非常清楚了,包括一些性能指標(biāo)的定義與計(jì)算等等,不過(guò)作者這里僅僅只針對(duì)RTOS進(jìn)行講解,大家感興趣可以
    發(fā)表于 11-10 07:24

    實(shí)現(xiàn)OSEK/VDX的RTOS進(jìn)行汽車(chē)電控單元開(kāi)發(fā)

    討論了現(xiàn)階段實(shí)現(xiàn)OSEK/VDX規(guī)范的實(shí)時(shí)操作系統(tǒng)(RTOs)進(jìn)行汽車(chē)電控單元開(kāi)發(fā)的必要性,介紹了OSEK OS的運(yùn)行機(jī)制和特點(diǎn),并對(duì)實(shí)現(xiàn)OSEK/VDX的
    發(fā)表于 04-20 08:49 ?15次下載

    RTOS線(xiàn)程訪(fǎng)問(wèn)同一硬件(如UART)的方法

    RTOS線(xiàn)程(任務(wù))訪(fǎng)問(wèn)同一硬件(如UART)的方法
    的頭像 發(fā)表于 03-12 11:28 ?5846次閱讀

    LEDs狀態(tài)燈任務(wù)(線(xiàn)程)設(shè)計(jì) (基于RTOS

    LEDs狀態(tài)燈任務(wù)(線(xiàn)程)設(shè)計(jì)(基于RTOS
    的頭像 發(fā)表于 03-12 11:30 ?2631次閱讀

    RTOS應(yīng)用中的調(diào)度策略

    RTOS中,協(xié)同調(diào)度是基于優(yōu)先級(jí)的非搶占調(diào)度方法。任務(wù)按優(yōu)先級(jí)排序,并且是事件驅(qū)動(dòng)類(lèi)型的,一旦正在運(yùn)行的任務(wù)完成,或者任務(wù)主動(dòng)調(diào)用OS服務(wù)放棄CPU,就緒運(yùn)行的優(yōu)先級(jí)最高的任務(wù)才可以獲得CPU使用權(quán)。
    的頭像 發(fā)表于 05-29 09:19 ?941次閱讀
    <b class='flag-5'>RTOS</b>應(yīng)用中的<b class='flag-5'>調(diào)度</b>策略

    什么是虛擬線(xiàn)程?虛擬線(xiàn)程到底是做什么用的呢?

    虛擬線(xiàn)程是在Java并發(fā)領(lǐng)域添加的一個(gè)新概念,那么虛擬線(xiàn)程到底是做什么用的呢?
    的頭像 發(fā)表于 10-29 10:23 ?3569次閱讀
    什么是虛擬<b class='flag-5'>線(xiàn)程</b>?虛擬<b class='flag-5'>線(xiàn)程</b>到底是做<b class='flag-5'>什么用</b>的呢?

    SCP線(xiàn)程模型特點(diǎn)

    線(xiàn)程 混合協(xié)作調(diào)度模型-調(diào)度在具有相同優(yōu)先級(jí)的線(xiàn)程之間是協(xié)作的。 ?無(wú)需鎖 ?使代碼更簡(jiǎn)單,避免了死鎖的情況。 ?它消除了對(duì)執(zhí)行上下文/RTOS
    的頭像 發(fā)表于 11-02 17:07 ?828次閱讀
    SCP<b class='flag-5'>線(xiàn)程</b>模型特點(diǎn)

    新手必看的RTOS基礎(chǔ)知識(shí)

    時(shí)間片調(diào)度保證每個(gè)線(xiàn)程都有一個(gè)要執(zhí)行的槽。這種類(lèi)型的調(diào)度通常不利于實(shí)時(shí)應(yīng)用。如果需要,TI-RTOS內(nèi)核支持使用任務(wù)進(jìn)行時(shí)間切片
    的頭像 發(fā)表于 11-20 16:06 ?2953次閱讀
    新手必看的<b class='flag-5'>RTOS</b>基礎(chǔ)知識(shí)

    基于RTOS的應(yīng)用進(jìn)程中的典型線(xiàn)程

    RTOS中的關(guān)鍵因素是最小的中斷延遲和最小的線(xiàn)程切換延遲。RTOS的價(jià)值在于它的響應(yīng)速度或可預(yù)測(cè)性,而不是它在給定時(shí)間段內(nèi)可以執(zhí)行的工作量。
    發(fā)表于 03-05 09:32 ?998次閱讀
    基于<b class='flag-5'>RTOS</b>的應(yīng)用進(jìn)程中的典型<b class='flag-5'>線(xiàn)程</b>