91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

完善資料讓更多小伙伴認(rèn)識你,還能領(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í)行,在進(jìn)入臨界段之前要關(guān)中斷,而臨界段代碼執(zhí)行完以后要立即開中斷。

02

臨界資源

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

02

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

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)字)

不管是何種芯片,進(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)志位。

但這種方法有一個隱患,如果在關(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)點是簡單,執(zhí)行速度快(只有一條指令)。

2.4

方法二

OS_ENTER_CRITICAL()會在關(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)代碼,因此,此方法可能無法正常工作。因為編譯器可能不夠智能,無法知道堆棧指針已經(jīng)被更改(通過PUSHF指令),此時再想去訪問堆棧中的數(shù)據(jù)極大可能出現(xiàn)錯誤的值,從而導(dǎo)致應(yīng)用程序的崩潰。

2.5

方法三

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

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

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

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

文章出處:【微信公眾號:硬件攻城獅】歡迎添加關(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)注

    22

    文章

    5146

    瀏覽量

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

    關(guān)注

    37

    文章

    7402

    瀏覽量

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

    關(guān)注

    30

    文章

    4968

    瀏覽量

    73999

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    C語言中實現(xiàn)函數(shù)宏的三種方式

    在宏的第一個分號后便結(jié)束。即 a = b 和 b = tmp 均不受控制語句所作用。 因此,在工程中,一般使用三種方式來對函數(shù)宏進(jìn)行封裝,分別為 {}、do{...}while(0
    發(fā)表于 12-29 07:34

    請問CW32芯片的三種工作模式是什么?

    CW32芯片的三種工作模式是什么?
    發(fā)表于 12-26 06:48

    FreeRTOS和uC/OS-II的功能特性

    AWS 條款)。 uC/OS-II: 核心功能: 任務(wù)調(diào)度(固定優(yōu)先級搶占式 + 時間片輪詢)、信號量、互斥鎖(帶優(yōu)先級繼承)、消息郵箱、消息隊列、事件標(biāo)志、內(nèi)存分區(qū)管理、軟件定時器。 內(nèi)存管理
    發(fā)表于 11-17 08:17

    FreeRTOS與uC/OS-II如何選擇?

    /OS-II: 你非常熟悉 Jean Labrosse 的書或其設(shè)計理念。 你在維護(hù)一個歷史悠久的、基于 uC/OS-II 的項目。 你的應(yīng)用對極端可靠性和確定性有非常高的要求(其嚴(yán)謹(jǐn)?shù)脑O(shè)計和歷史認(rèn)證背景
    發(fā)表于 11-13 07:15

    伺服電機(jī)的三種制動方式有什么區(qū)別?

    伺服電機(jī)作為自動化控制系統(tǒng)中執(zhí)行元件的核心部件,其制動性能直接影響設(shè)備的定位精度和安全可靠性。目前主流的伺服電機(jī)制動方式包括動態(tài)制動、再生制動和電磁機(jī)械制動三種,它們在制動原理、應(yīng)用場景及技術(shù)特點上
    的頭像 發(fā)表于 09-19 18:26 ?1783次閱讀
    伺服電機(jī)的<b class='flag-5'>三種</b>制動<b class='flag-5'>方式</b>有什么區(qū)別?

    rtt使用的軟件i2c庫進(jìn)行模擬i2c時序時,不需要加臨界區(qū)保護(hù)嗎?

    這里進(jìn)行模擬i2c時序,不需要加臨界區(qū)的保護(hù)。假如我有一個低優(yōu)先級的線程正在進(jìn)行i2c讀寫,這時候有個高優(yōu)先級的線程進(jìn)行搶占,做了一些工作,這個時候i2
    發(fā)表于 09-10 08:09

    MEMS中的三種測溫方式

    在集成MEMS芯片的環(huán)境溫度測量領(lǐng)域,熱阻、熱電堆和PN結(jié)原理是三種主流技術(shù)。熱阻是利用熱敏電阻,如金屬鉑或注入硅的溫度電阻系數(shù)恒定,即電阻隨溫度線性變化的特性測溫,電阻變化直接對應(yīng)絕對溫度,需恒流源供電。
    的頭像 發(fā)表于 07-16 13:58 ?1674次閱讀
    MEMS中的<b class='flag-5'>三種</b>測溫<b class='flag-5'>方式</b>

    1553B總線常見三種組網(wǎng)方式

    1553B總線作為航空電子系統(tǒng)中的關(guān)鍵通信協(xié)議,其組網(wǎng)方式直接影響系統(tǒng)的可靠性和實時性。本文將深入解析1553B總線的三種典型組網(wǎng)結(jié)構(gòu):單總線結(jié)構(gòu)、雙冗余總線和多總線分層架構(gòu),并結(jié)合實際應(yīng)用場景分析
    的頭像 發(fā)表于 06-21 17:39 ?1975次閱讀
    1553B總線常見<b class='flag-5'>三種</b>組網(wǎng)<b class='flag-5'>方式</b>

    開關(guān)電源三種控制模式:PWM/PFM/PSM

    摘要 本文詳細(xì)介紹了開關(guān)電源的三種主要調(diào)制方式:PWM(脈沖寬度調(diào)制)、PFM(脈沖頻率調(diào)制)和PSM(脈沖跨周期調(diào)制)。PWM通過調(diào)整脈沖寬度保持恒定頻率,適用于重負(fù)載,但輕負(fù)載效率低。PFM則在
    發(fā)表于 06-09 16:11

    CH32F103C8T6核心板三種程序下載方式簡介

    CH32F103C8T6核心板,通過USB轉(zhuǎn)串口方式、USB直連方式、SWD方式下載應(yīng)用程序
    的頭像 發(fā)表于 06-09 09:38 ?1065次閱讀
    CH32F103<b class='flag-5'>C</b>8T6核心板<b class='flag-5'>三種</b>程序下載<b class='flag-5'>方式</b>簡介

    介紹三種常見的MySQL高可用方案

    在生產(chǎn)環(huán)境中,為了確保數(shù)據(jù)庫系統(tǒng)的連續(xù)可用性、降低故障恢復(fù)時間以及實現(xiàn)業(yè)務(wù)的無縫切換,高可用(High Availability, HA)方案至關(guān)重要。本文將詳細(xì)介紹三種常見的 MySQL 高可用
    的頭像 發(fā)表于 05-28 17:16 ?1250次閱讀

    信號隔離器三種供電方式的區(qū)別

    信號隔離器是一重要的信號隔離裝置,其供電方式主要有獨立供電、回路供電和輸出回路供電三種。以下是這三種供電方式的詳細(xì)區(qū)別: 一、獨立供電 1
    的頭像 發(fā)表于 04-17 16:23 ?1552次閱讀
    信號隔離器<b class='flag-5'>三種</b>供電<b class='flag-5'>方式</b>的區(qū)別

    redis三種集群方案詳解

    在Redis中提供的集群方案總共有三種(一般一個redis節(jié)點不超過10G內(nèi)存)。
    的頭像 發(fā)表于 03-31 10:46 ?1539次閱讀
    redis<b class='flag-5'>三種</b>集群方案詳解

    GaN、超級SI、SiC這三種MOS器件的用途區(qū)別

    如果想要說明白GaN、超級SI、SiC這三種MOS器件的用途區(qū)別,首先要做的是搞清楚這三種功率器件的特性,然后再根據(jù)材料特性分析具體應(yīng)用。
    的頭像 發(fā)表于 03-14 18:05 ?2728次閱讀

    FOC中的三種電流采樣方式,你真的會選擇嗎?(可下載)

    的基礎(chǔ),用一句話來形容就是“基礎(chǔ)不對,努力白費”,由此可見電流采樣在整 個 FOC 算法中的作用電流采樣的方式一般分為電阻、雙電阻、單電阻,這三種采樣方式都有其
    發(fā)表于 03-12 15:04 ?4次下載