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

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

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

FreeRTOS信號(hào)量介紹

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-06 17:09 ? 次閱讀

1、信號(hào)量用于控制對(duì)共享資源的訪問

舉一個(gè)很常見的例子,某個(gè)停車場(chǎng)有100個(gè)停車位,這 100 個(gè)停車位大家都可以用,對(duì)于大家來說這 100 個(gè)停車位就是共享資源。假設(shè)現(xiàn)在這個(gè)停車場(chǎng)正常運(yùn)行,你要把車停到這個(gè)這個(gè)停車場(chǎng)肯定要先看一下現(xiàn)在停了多少車了?還有沒有停車位?當(dāng)前停車數(shù)量就是一個(gè)信號(hào)量,具體的停車數(shù)量就是這個(gè)信號(hào)量值,當(dāng)這個(gè)值到 100 的時(shí)候說明停車場(chǎng)滿了。停車場(chǎng)滿的時(shí)你可以等一會(huì)看看有沒有其他的車開出停車場(chǎng),當(dāng)有車開出停車場(chǎng)的時(shí)候停車數(shù)量就會(huì)減一,也就是說信號(hào)量減一,此時(shí)你就可以把車停進(jìn)去了,你把車停進(jìn)去以后停車數(shù)量就會(huì)加一,也就是信號(hào)量加一。這就是一個(gè)典型的使用信號(hào)量進(jìn)行共享資源管理的案例,在這個(gè)案例中使用的就是計(jì)數(shù)型信號(hào)量。

再看另外一個(gè)案例:使用公共電話,我們知道一次只能一個(gè)人使用電話,這個(gè)時(shí)候公共電話就只可能有兩個(gè)狀態(tài):使用或未使用,如果用電話的這兩個(gè)狀態(tài)作為信號(hào)量的話,那么這個(gè)就是二值信號(hào)量。

信號(hào)量用于控制共享資源訪問的場(chǎng)景相當(dāng)于一個(gè)上鎖機(jī)制,代碼只有獲得了這個(gè)鎖的鑰匙才能夠執(zhí)行。

2、信號(hào)量的用于任務(wù)同步

任務(wù)與任務(wù)或中斷與任務(wù)之間的同步。

在執(zhí)行中斷服務(wù)函數(shù)的時(shí)候可以通過向任務(wù)發(fā)送信號(hào)量來通知任務(wù)它所期待的事件發(fā)生了,當(dāng)退出中斷服務(wù)函數(shù)以后在任務(wù)調(diào)度器的調(diào)度下同步的任務(wù)就會(huì)執(zhí)行。

在編寫中斷服務(wù)函數(shù)的時(shí)候我們都知道一定要快進(jìn)快出,中斷服務(wù)函數(shù)里面不能放太多的代碼,否則的話會(huì)影響的中斷的實(shí)時(shí)性。裸機(jī)編寫中斷服務(wù)函數(shù)的時(shí)候一般都只是在中斷服務(wù)函數(shù)中打個(gè)標(biāo)記,然后在其他的地方根據(jù)標(biāo)記來做具體的處理過程。在使用 RTOS 系統(tǒng)的時(shí)候我們就可以借助信號(hào)量完成此功能,當(dāng)中斷發(fā)生的時(shí)候就釋放信號(hào)量,中斷服務(wù)函數(shù)不做具體的處理。具體的處理過程做成一個(gè)任務(wù),這個(gè)任務(wù)會(huì)獲取信號(hào)量,如果獲取到信號(hào)量就說明中斷發(fā)生了,那么就開始完成相應(yīng)的處理,這樣做的好處就是中斷執(zhí)行時(shí)間非常短。

聲明:本文內(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)注

    5045

    文章

    18816

    瀏覽量

    298460
  • 信號(hào)
    +關(guān)注

    關(guān)注

    11

    文章

    2739

    瀏覽量

    76174
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61724
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FreeRTOS串口中斷接收不定長(zhǎng)的數(shù)據(jù)與二值信號(hào)量的使用

    FreeRTOS例程,使用串口中斷接收不定長(zhǎng)的數(shù)據(jù),以及二值信號(hào)量的使用
    的頭像 發(fā)表于 09-26 09:02 ?3789次閱讀
    <b class='flag-5'>FreeRTOS</b>串口中斷接收不定長(zhǎng)的數(shù)據(jù)與二值<b class='flag-5'>信號(hào)量</b>的使用

    FreeRTOS信號(hào)量使用教程

    信號(hào)量是操作系統(tǒng)中重要的一部分,信號(hào)量一般用來進(jìn)行資源管理和任務(wù)同步, FreeRTOS信號(hào)量又分為二值信號(hào)量、 計(jì)數(shù)型
    的頭像 發(fā)表于 12-19 09:22 ?2872次閱讀
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>信號(hào)量</b>使用教程

    FreeRTOS信號(hào)量的使用與實(shí)例

    在嵌入式系統(tǒng)中,任務(wù)管理是一個(gè)重要的部分,它涉及到任務(wù)之間的通信和同步,信號(hào)量,隊(duì)列,互斥鎖和事件標(biāo)志組等概念。本文將以 FreeRTOS 為例,詳細(xì)講解這些內(nèi)容。
    的頭像 發(fā)表于 12-12 15:25 ?1855次閱讀

    轉(zhuǎn):freeRTOS信號(hào)量學(xué)習(xí)

    信號(hào)量同樣是RTOS學(xué)習(xí)中很重要的一節(jié),信號(hào)量可以用在共享資源或者同步任務(wù)中,對(duì)執(zhí)行權(quán)的控制,誰擁有信號(hào)量誰擁有執(zhí)行權(quán),在freeRTOS信號(hào)量
    發(fā)表于 08-12 18:29

    有關(guān)FreeRTOS信號(hào)量和計(jì)數(shù)信號(hào)量在使用過程中需要注意的細(xì)節(jié)

    本文介紹有關(guān)FreeRTOS信號(hào)量和計(jì)數(shù)信號(hào)量在使用過程中需要注意的細(xì)節(jié),以及自己在過程中的分享的一些有關(guān)遇到的問題和注意點(diǎn)。
    發(fā)表于 08-06 06:26

    FreeRTOS信號(hào)量介紹

    FreeRTOS信號(hào)量 & ESP32實(shí)戰(zhàn)閱讀建議:有一定操作系統(tǒng)基礎(chǔ)知識(shí)。FreeRTOS信號(hào)量1. 二值信號(hào)量??二值
    發(fā)表于 01-27 07:28

    Linux信號(hào)量(2):POSIX 信號(hào)量

    上一章,講述了 SYSTEM V 信號(hào)量,主要運(yùn)行于進(jìn)程之間,本章主要介紹 POSIX 信號(hào)量:有名信號(hào)量、無名信號(hào)量。 POSIX
    的頭像 發(fā)表于 10-29 17:34 ?613次閱讀

    FreeRTOS信號(hào)量 & ESP32實(shí)戰(zhàn)

    FreeRTOS信號(hào)量 & ESP32實(shí)戰(zhàn)閱讀建議:有一定操作系統(tǒng)基礎(chǔ)知識(shí)。FreeRTOS信號(hào)量1. 二值信號(hào)量??二值
    發(fā)表于 12-03 18:06 ?1次下載
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>信號(hào)量</b> & ESP32實(shí)戰(zhàn)

    FreeRTOS 隊(duì)列 信號(hào)量 互斥

    文章目錄前言Queue 隊(duì)列semaphore 信號(hào)量Mutex 互斥微信公眾號(hào)前言FreeRTOS STM32CubeMX配置 內(nèi)存管理 任務(wù)管理上節(jié)介紹了用STM32CubeMX
    發(fā)表于 12-09 09:51 ?0次下載
    <b class='flag-5'>FreeRTOS</b> 隊(duì)列 <b class='flag-5'>信號(hào)量</b> 互斥<b class='flag-5'>量</b>

    FreeRTOS高級(jí)篇6---FreeRTOS信號(hào)量分析

    FreeRTOS信號(hào)量包括二進(jìn)制信號(hào)量、計(jì)數(shù)信號(hào)量、互斥信號(hào)量(以后簡(jiǎn)稱互斥)和遞歸互斥
    發(fā)表于 01-26 17:39 ?7次下載
    <b class='flag-5'>FreeRTOS</b>高級(jí)篇6---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>信號(hào)量</b>分析

    FreeRTOS系列第20篇---FreeRTOS信號(hào)量API函數(shù)

    FreeRTOS信號(hào)量包括二進(jìn)制信號(hào)量、計(jì)數(shù)信號(hào)量、互斥信號(hào)量(以后簡(jiǎn)稱互斥)和遞歸互斥
    發(fā)表于 01-26 17:44 ?4次下載
    <b class='flag-5'>FreeRTOS</b>系列第20篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>信號(hào)量</b>API函數(shù)

    在Arduino IDE中使用FreeRTOS信號(hào)量

    電子發(fā)燒友網(wǎng)站提供《在Arduino IDE中使用FreeRTOS信號(hào)量.zip》資料免費(fèi)下載
    發(fā)表于 01-04 10:18 ?0次下載
    在Arduino IDE中使用<b class='flag-5'>FreeRTOS</b><b class='flag-5'>信號(hào)量</b>

    freeRTOS中最常用到的信號(hào)量有哪些

    在操作系統(tǒng)系統(tǒng)中,信號(hào)量通常用于控制對(duì)共享資源的訪問和任務(wù)之間進(jìn)行同步,信號(hào)量在操作系統(tǒng)中是很常用的,也是學(xué)習(xí)freeRTOS操作系統(tǒng)必須要掌握的。
    的頭像 發(fā)表于 02-10 11:04 ?1775次閱讀
    <b class='flag-5'>freeRTOS</b>中最常用到的<b class='flag-5'>信號(hào)量</b>有哪些

    FreeRTOS的二值信號(hào)量

    FreeRTOS中的信號(hào)量是一種任務(wù)間通信的方式,信號(hào)量包括:二值信號(hào)量、互斥信號(hào)量、計(jì)數(shù)信號(hào)量
    的頭像 發(fā)表于 02-10 15:07 ?1242次閱讀

    FreeRTOS四種信號(hào)量詳細(xì)介紹

    1、二值信號(hào)量 二值信號(hào)量通常用于互斥訪問或同步,二值信號(hào)量和互斥信號(hào)量非常類似,但是還是有一些細(xì)微的差別,互斥信號(hào)量擁有優(yōu)先級(jí)繼承機(jī)制,二
    的頭像 發(fā)表于 07-06 17:14 ?2254次閱讀