吴忠躺衫网络科技有限公司

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

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

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

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

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

01

臨界段與臨界資源

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

01

臨界段

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

02

臨界資源

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

02

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

2.1

示例代碼

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

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

2.2

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

不管是何種芯片,進(jìn)入臨界區(qū)的思想是不變的,就是失能控制PSW(Program Status Word)中的IF(中斷標(biāo)志位)標(biāo)志位。8086的標(biāo)志寄存器如下圖所示。不同芯片的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)中的中斷標(biāo)志位。

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

2.4

方法二

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

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

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

2.5

方法三

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

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

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

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

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

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

    關(guān)注

    21

    文章

    5010

    瀏覽量

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

    關(guān)注

    37

    文章

    6895

    瀏覽量

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

    關(guān)注

    30

    文章

    4827

    瀏覽量

    69054

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    示波器的三種觸發(fā)模式

    示波器的觸發(fā)方式不僅影響波形捕捉的時(shí)機(jī),還決定了顯示的波形是否穩(wěn)定。 常見的觸發(fā)模式有三種: 單次觸發(fā) (Single)、 正常觸發(fā) (Normal)和 自動(dòng)觸發(fā) (Auto)。下面將對(duì)這三種觸發(fā)
    的頭像 發(fā)表于 01-07 11:04 ?366次閱讀
    示波器的<b class='flag-5'>三種</b>觸發(fā)模式

    systemd journal收集日志的三種方式

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

    I2S有左對(duì)齊,右對(duì)齊跟標(biāo)準(zhǔn)的I2S三種格式,那么這三種格式各有什么優(yōu)點(diǎn)呢?

    大家好,關(guān)于I2S格式,有兩個(gè)疑問請(qǐng)教一下 我們知道I2S有左對(duì)齊,右對(duì)齊跟標(biāo)準(zhǔn)的I2S三種格式,那么這三種格式各有什么優(yōu)點(diǎn)呢? 而且對(duì)于標(biāo)準(zhǔn)的I2S格式,32FS傳輸16bit的數(shù)據(jù),48fs傳輸24bit的數(shù)據(jù),最低位會(huì)移動(dòng)到右聲道,是否意味著該數(shù)據(jù)被丟棄了?還是有
    發(fā)表于 10-21 08:23

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

    電子發(fā)燒友網(wǎng)站提供《優(yōu)化MSP430上用于uC/OS-II的內(nèi)存.pdf》資料免費(fèi)下載
    發(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)存的三種主要方式的詳細(xì)闡
    的頭像 發(fā)表于 10-12 17:09 ?1348次閱讀

    mosfet的三種工作狀態(tài)及工作條件是什么

    )的不同,可以工作在三種主要狀態(tài):截止?fàn)顟B(tài)、線性區(qū)和飽和區(qū)。 1. 截止?fàn)顟B(tài) 工作狀態(tài)描述 : 當(dāng)VGS小于MOSFET的開啟電壓(VGS(TH))時(shí),MOSF
    的頭像 發(fā)表于 10-06 16:51 ?2733次閱讀

    隔離開關(guān)的三種連鎖方式介紹

    的必要手段。通過連鎖機(jī)制,可以有效防止在斷路器未斷開的情況下對(duì)隔離開關(guān)進(jìn)行操作,從而避免潛在的安全隱患。 隔離開關(guān)的三種連鎖方式 隔離開關(guān)與斷路器之間的閉鎖:這種閉鎖方式確保了在斷路器未斷開之前,隔離開關(guān)無
    的頭像 發(fā)表于 09-19 11:54 ?1244次閱讀

    單片機(jī)的三種總線結(jié)構(gòu)

    單片機(jī)的三種總線結(jié)構(gòu)包括地址總線(Address Bus, AB)、數(shù)據(jù)總線(Data Bus, DB)和控制總線(Control Bus, CB)。這三種總線在單片機(jī)內(nèi)部及與外部設(shè)備之間的數(shù)據(jù)傳輸
    的頭像 發(fā)表于 09-10 11:32 ?3699次閱讀

    shell腳本執(zhí)行的三種方式及區(qū)別

    在Linux系統(tǒng)中,Shell腳本是一非常實(shí)用的工具,用于自動(dòng)化執(zhí)行一系列命令。Shell腳本可以大大提高工作效率,簡(jiǎn)化復(fù)雜的任務(wù)。在這篇文章中,我們將介紹Shell腳本執(zhí)行的三種方式及其區(qū)別
    的頭像 發(fā)表于 08-30 15:24 ?1408次閱讀

    簡(jiǎn)述三種esp32的開發(fā)方式是什么

    ESP32是一款由樂鑫(Espressif)推出的低功耗、高性能的Wi-Fi和藍(lán)牙雙模無線通信芯片,廣泛應(yīng)用于物聯(lián)網(wǎng)、智能家居、智能硬件等領(lǐng)域。本文將詳細(xì)介紹三種ESP32的開發(fā)方式:Arduino
    的頭像 發(fā)表于 08-20 09:11 ?4031次閱讀

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

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

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

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

    逆變電路的三種調(diào)壓方式

    路的三種調(diào)壓方式:脈寬調(diào)制(PWM)調(diào)壓、相位控制調(diào)壓和頻率調(diào)制調(diào)壓。 1. 脈寬調(diào)制(PWM)調(diào)壓 脈寬調(diào)制是一通過改變脈沖寬度來調(diào)整輸出電壓的調(diào)壓方式。在PWM調(diào)壓中,逆變電路的
    的頭像 發(fā)表于 08-02 16:59 ?2625次閱讀

    簡(jiǎn)述斬波電路的三種控制方式及其特點(diǎn)

    斬波電路是一通過控制開關(guān)管實(shí)現(xiàn)對(duì)直流電壓的調(diào)節(jié)的電路。在不同的工作條件下,我們可以采用不同的控制方式來控制斬波電路的輸出,以滿足不同的需求。本文將詳細(xì)介紹斬波電路的三種常見控制方式
    的頭像 發(fā)表于 03-14 16:23 ?4319次閱讀

    簡(jiǎn)述斬波電路的三種控制方式

    斬波電路是一常見的電力電子器件,廣泛應(yīng)用于直流電壓調(diào)節(jié)、電壓變換、電流變換等領(lǐng)域。它可以實(shí)現(xiàn)對(duì)電流和電壓的控制,以滿足不同的電氣設(shè)備的需求。斬波電路的控制方式主要有三種:脈寬調(diào)制控制、頻率調(diào)制控制
    的頭像 發(fā)表于 03-11 15:22 ?4585次閱讀
    百家乐百博亚洲| 最可信百家乐官网娱乐城| 新皇冠现金网| 百家乐览| 百家乐官网赌场论坛| 亲朋棋牌捕鱼技巧| 百家乐变牌桌| 利澳百家乐官网的玩法技巧和规则 | 真人百家乐在线玩| 百家乐官网长龙怎么预判| 全讯网六| 百家乐太阳城娱乐城| 百家乐官网网上赌博网| 全球最大赌博网站| JJ百家乐的玩法技巧和规则| 百家乐投注助手| 百家乐官网电脑游戏机投注法实例| 尖扎县| 大发888国际娱乐网| 百家乐官网vshow| 百家乐官网里面的奥妙| bet365体育投注提款要几天| 加多宝百家乐的玩法技巧和规则| 利高百家乐官网的玩法技巧和规则 | 百家乐官网双面数字筹码| 百家博娱乐城| 全讯网3344111| 百家乐赌场走势图| 风水学中的24向是什么| 百家乐官网长庄投注| 洞头县| 伟博娱乐城| 大发888真钱棋牌| 百家乐长龙技巧| 高尔夫百家乐官网的玩法技巧和规则 | 百家乐官网破解版| 百家乐官网园千术大全| 优博代理| 大发888游戏平台hg| 旧金山百家乐的玩法技巧和规则| 川宜百家乐注册号|