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

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

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

μC/OS-II三種臨界區(qū)管理方式

GReq_mcu168 ? 來源:typedef ? 作者:typedef ? 2022-07-11 10:01 ? 次閱讀

01

臨界段與臨界資源

操作系統(tǒng)中有有兩個名詞,臨界段和臨界資源。

01

臨界段

代碼的臨界段也稱為臨界區(qū),指處理時不可分割的代碼。一旦這部分代碼開始執(zhí)行,則不允許任何中斷打入。為確保臨界段代碼的執(zhí)行,在進入臨界段之前要關(guān)中斷,而臨界段代碼執(zhí)行完以后要立即開中斷。

02

臨界資源

臨界資源在一段時間內(nèi)只允許一個進程訪問的資源。又稱獨占資源。資源可以是輸入輸出設(shè)備,例如打印機、鍵盤、顯示器,資源也可以是一個變量,一個結(jié)構(gòu)或一個數(shù)組等。

02

三種臨界區(qū)管理機制

2.1

示例代碼

在μC/OS-II中有三種臨界區(qū)管理方式,是在oc_cpu.h文件中通過宏OS_CRITICAL_METHOD來控制,如下圖為8086臨界區(qū)實現(xiàn)方式

ce86d1f6-00bb-11ed-ba43-dac502259ad0.png

2.2

PSW(程序狀態(tài)字)

不管是何種芯片,進入臨界區(qū)的思想是不變的,就是失能控制PSW(Program Status Word)中的IF(中斷標志位)標志位。8086的標志寄存器如下圖所示。不同芯片的PSW略微不同。

ce9b1d14-00bb-11ed-ba43-dac502259ad0.png

2.3

方法1

方法1是直接將OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()定義為處理器的關(guān)閉(CLI)和打開(STI)中斷指令。STI(Set Interrupt) 為開中斷,CLI(Clear Interrupt) 為關(guān)中斷,這里設(shè)置的是PSW(Program Status Word)中的中斷標志位。

但這種方法有一個隱患,如果在關(guān)閉中斷后調(diào)用μC/OS函數(shù),當(dāng)函數(shù)返回后,中斷將被打開!嚴格意義上的關(guān)閉中斷應(yīng)該是執(zhí)行OS_ENTER_CRITICAL()后中斷始終是關(guān)閉的, 方法1顯然不滿足要求。但方法1的優(yōu)點是簡單,執(zhí)行速度快(只有一條指令)。

2.4

方法二

OS_ENTER_CRITICAL()會在關(guān)中斷前保存之前的標志寄存器內(nèi)容到堆棧中,隨之將中斷關(guān)閉,OS_EXIT_CRITICAL()從堆棧中恢復(fù)之前保存的狀態(tài)。

PUSHF是將標志寄存器入棧,POPF是將棧頂?shù)膬?nèi)容彈出到標志寄存器中。

但是一些編譯器不能很好地優(yōu)化內(nèi)聯(lián)代碼,因此,此方法可能無法正常工作。因為編譯器可能不夠智能,無法知道堆棧指針已經(jīng)被更改(通過PUSHF指令),此時再想去訪問堆棧中的數(shù)據(jù)極大可能出現(xiàn)錯誤的值,從而導(dǎo)致應(yīng)用程序的崩潰。

2.5

方法三

一些編譯器提供了擴展的接口允許用戶獲取PSW中的值,并將此狀態(tài)值保存在聲明的變量中,隨之將中斷關(guān)閉,在退出臨界區(qū)時,在將上面保存的值恢復(fù)到PSW中。

OSCPUSaveSR以及OSCPURestoreSR是在os_cpu_a.s文件中定義的,使用匯編指令實現(xiàn)的。

這種方法的優(yōu)點就是安全可靠,缺點就是執(zhí)行速度較上面兩種慢,因為進入和退出臨界區(qū)的匯編代碼可能不止一條,而且還需要訪問內(nèi)存變量cpu_sr。

原文標題:μC/OS三種臨界區(qū)管理機制

文章出處:【微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

    關(guān)注

    21

    文章

    4931

    瀏覽量

    139743
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6689

    瀏覽量

    123141
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4723

    瀏覽量

    68237

原文標題:μC/OS三種臨界區(qū)管理機制

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    systemd journal收集日志的三種方式

    隨著 systemd 成了主流的 init 系統(tǒng),systemd 的功能也在不斷的增加,比如對系統(tǒng)日志的管理。Systemd 設(shè)計的日志系統(tǒng)好處多多,這里筆者就不再贅述了,本文筆者主要介紹 systemd journal 收集日志的三種
    的頭像 發(fā)表于 10-23 11:50 ?121次閱讀
    systemd journal收集日志的<b class='flag-5'>三種</b><b class='flag-5'>方式</b>

    優(yōu)化MSP430上用于uC/OS-II的內(nèi)存

    電子發(fā)燒友網(wǎng)站提供《優(yōu)化MSP430上用于uC/OS-II的內(nèi)存.pdf》資料免費下載
    發(fā)表于 10-18 10:16 ?0次下載
    優(yōu)化MSP430上用于uC/<b class='flag-5'>OS-II</b>的內(nèi)存

    Windows管理內(nèi)存的三種主要方式

    Windows操作系統(tǒng)提供了多種方式管理內(nèi)存,以確保系統(tǒng)資源的有效利用和性能的優(yōu)化。以下是關(guān)于Windows管理內(nèi)存的三種主要方式的詳細闡
    的頭像 發(fā)表于 10-12 17:09 ?324次閱讀

    常用的pwm跟蹤控制方式是哪三種

    PWM(脈寬調(diào)制)跟蹤控制是一廣泛應(yīng)用于電機控制、電源管理、通信等領(lǐng)域的技術(shù)。它通過調(diào)整脈沖的寬度來控制輸出信號的占空比,從而實現(xiàn)對系統(tǒng)的精確控制。常用的PWM跟蹤控制方式主要有三種
    的頭像 發(fā)表于 08-14 10:34 ?647次閱讀

    計算機網(wǎng)絡(luò)中的三種通信方式

    計算機網(wǎng)絡(luò)中的三種通信方式,即單工通信、半雙工通信和全雙工通信,是理解和設(shè)計高效網(wǎng)絡(luò)架構(gòu)的基礎(chǔ)。每種通信方式都有其獨特的特性、應(yīng)用場景及優(yōu)缺點。以下是對這三種通信
    的頭像 發(fā)表于 08-07 15:00 ?1856次閱讀

    簡述斬波電路的三種控制方式

    斬波電路是一常見的電力電子器件,廣泛應(yīng)用于直流電壓調(diào)節(jié)、電壓變換、電流變換等領(lǐng)域。它可以實現(xiàn)對電流和電壓的控制,以滿足不同的電氣設(shè)備的需求。斬波電路的控制方式主要有三種:脈寬調(diào)制控制、頻率調(diào)制控制
    的頭像 發(fā)表于 03-11 15:22 ?3026次閱讀

    介紹三種建模方式

    據(jù)量大,而是指樣本的完備性。還有就是大數(shù)據(jù)或者AI被專業(yè)學(xué)者或者行業(yè)工程師所詬病的就是,純粹的數(shù)據(jù)驅(qū)動搞不出所以然出來,需要領(lǐng)域知識(即Domain Knowledge)的協(xié)助。此外,還有第三種建模方式就是混合驅(qū)動,即基礎(chǔ)物理模型加上數(shù)據(jù)驅(qū)動的
    的頭像 發(fā)表于 01-23 10:48 ?1426次閱讀

    運動控制的三種控制方式

    非標項目中有非常多的運動控制,根據(jù)系統(tǒng)配置、電機類型以及精度需求的不同主要有三種控制方式:開環(huán)控制、半閉環(huán)控制、全閉環(huán)控制。
    的頭像 發(fā)表于 01-23 09:48 ?1254次閱讀
    運動控制的<b class='flag-5'>三種</b>控制<b class='flag-5'>方式</b>

    嵌入式Linux開發(fā)的三種方式

    嵌入式Linux開發(fā)主要有三種方式:裸機開發(fā)、SDK開發(fā)和驅(qū)動開發(fā)。
    的頭像 發(fā)表于 01-22 14:22 ?900次閱讀

    通過TestStand三種主要運行方式探究TestStand開放式架構(gòu)

    在這張圖中,我們可以看到三種主要運行方式分別是”Test UUTs”、”Single Pass”、”Run MainSequence”。大家不妨先嘗試一下看看同一個序列文件用三種運行方式
    的頭像 發(fā)表于 01-19 17:34 ?4054次閱讀
    通過TestStand<b class='flag-5'>三種</b>主要運行<b class='flag-5'>方式</b>探究TestStand開放式架構(gòu)

    自動控制的基本方式三種是什么

    自動控制是指利用特定的設(shè)備和技術(shù)手段,通過對被控制系統(tǒng)的輸入信號進行監(jiān)測和調(diào)整,以實現(xiàn)期望的輸出狀態(tài)或目標。自動控制的基本方式三種:開環(huán)控制、閉環(huán)控制和神經(jīng)網(wǎng)絡(luò)控制。 第一基本方式
    的頭像 發(fā)表于 01-17 09:38 ?3233次閱讀

    分布式鎖的三種實現(xiàn)方式

    分布式鎖的三種實現(xiàn)方式? 分布式鎖是在分布式系統(tǒng)中用于實現(xiàn)對共享資源進行訪問控制的一機制。分布式鎖的實現(xiàn)需要考慮高可用性、高性能和正確性等方面的問題。在實際應(yīng)用中,有多種不同的方式
    的頭像 發(fā)表于 12-28 10:01 ?836次閱讀

    變頻器的三種控制方式 | 變頻器三種控制方式的優(yōu)缺點

    ? ? ? 變頻器是一電力調(diào)節(jié)設(shè)備,它通過改變電機的工作頻率來調(diào)節(jié)電機的轉(zhuǎn)速。在實際應(yīng)用中,變頻器通常采用三種控制方式:開環(huán)控制、閉環(huán)控制和矢量控制。這三種控制
    的頭像 發(fā)表于 12-18 09:56 ?3225次閱讀
    變頻器的<b class='flag-5'>三種</b>控制<b class='flag-5'>方式</b> | 變頻器<b class='flag-5'>三種</b>控制<b class='flag-5'>方式</b>的優(yōu)缺點

    極管的偏置電壓和三種連接方式

    電子發(fā)燒友網(wǎng)站提供《極管的偏置電壓和三種連接方式.zip》資料免費下載
    發(fā)表于 11-20 14:44 ?0次下載
    <b class='flag-5'>三</b>極管的偏置電壓和<b class='flag-5'>三種</b>連接<b class='flag-5'>方式</b>

    單工通信、半雙工通信和全雙工通信三種方式的不同之處

    首先,不要被生澀的文字嚇到了,通訊在我們?nèi)粘V型ㄓ嵤菬o處不在的,三種通訊方式也是隨處可見。下面分別舉例說明三種方式的不同之處以及在工業(yè)和電子設(shè)備上常用的一些案例。
    的頭像 發(fā)表于 11-14 16:09 ?5177次閱讀
    單工通信、半雙工通信和全雙工通信<b class='flag-5'>三種</b><b class='flag-5'>方式</b>的不同之處