chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

韋東山freeRTOS系列教程之同步互斥與通信(4)

嵌入式Linux那些事 ? 2021-12-13 14:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

文章目錄

  • 系列教程總目錄
  • 概述
  • 4.1 同步與互斥的概念
  • 4.2 同步與互斥并不簡(jiǎn)單
  • 4.3 各類方法的對(duì)比

需要獲取更好閱讀體驗(yàn)的同學(xué),請(qǐng)?jiān)L問我專門設(shè)立的站點(diǎn)查看,地址:http://rtos.100ask.net/

系列教程總目錄

本教程連載中,篇章會(huì)比較多,為方便同學(xué)們閱讀,點(diǎn)擊這里可以查看文章的 目錄列表,目錄列表頁(yè)面地址:https://blog.csdn.net/thisway_diy/article/details/121399484

概述

本章是概述性的內(nèi)容??梢园讯嗳蝿?wù)系統(tǒng)當(dāng)做一個(gè)團(tuán)隊(duì),里面的每一個(gè)任務(wù)就相當(dāng)于團(tuán)隊(duì)里的一個(gè)人。團(tuán)隊(duì)成員之間要協(xié)調(diào)工作進(jìn)度(同步)、爭(zhēng)用會(huì)議室(互斥)、溝通(通信)。多任務(wù)系統(tǒng)中所涉及的概念,都可以在現(xiàn)實(shí)生活中找到例子。

各類RTOS都會(huì)涉及這些概念:任務(wù)通知(task notification)、隊(duì)列(queue)、事件組(event group)、信號(hào)量(semaphoe)、互斥量(mutex)等。我們先站在更高角度來講解這些概念。

4.1 同步與互斥的概念

一句話理解同步與互斥:我等你用完廁所,我再用廁所。

  • 什么叫同步?就是:哎哎哎,我正在用廁所,你等會(huì)。
  • 什么叫互斥?就是:哎哎哎,我正在用廁所,你不能進(jìn)來。

同步與互斥經(jīng)常放在一起講,是因?yàn)樗鼈冎年P(guān)系很大,“互斥”操作可以使用“同步”來實(shí)現(xiàn)。我“等”你用完廁所,我再用廁所。這不就是用“同步”來實(shí)現(xiàn)“互斥”嗎?

再舉一個(gè)例子。在團(tuán)隊(duì)活動(dòng)里,同事A先寫完報(bào)表,經(jīng)理B才能拿去向領(lǐng)導(dǎo)匯報(bào)。經(jīng)理B必須等同事A完成報(bào)表,AB之間有依賴,B必須放慢腳步,被稱為同步。在團(tuán)隊(duì)活動(dòng)中,同事A已經(jīng)使用會(huì)議室了,經(jīng)理B也想使用,即使經(jīng)理B是領(lǐng)導(dǎo),他也得等著,這就叫互斥。經(jīng)理B跟同事A說:你用完會(huì)議室就提醒我。這就是使用"同步"來實(shí)現(xiàn)"互斥"。

有時(shí)候看代碼更容易理解,偽代碼如下:

01 void  搶廁所(void)
02 {
03    if (有人在用) 我瞇一會(huì);
04    用廁所;
05    喂,醒醒,有人要用廁所嗎;
06 }

假設(shè)有A、B兩人早起搶廁所,A先行一步占用了;B慢了一步,于是就瞇一會(huì);當(dāng)A用完后叫醒B,B也就愉快地上廁所了。
在這個(gè)過程中,A、B是互斥地訪問“廁所”,“廁所”被稱之為臨界資源。我們使用了“休眠-喚醒”的同步機(jī)制實(shí)現(xiàn)了“臨界資源”的“互斥訪問”。

同一時(shí)間只能有一個(gè)人使用的資源,被稱為臨界資源。比如任務(wù)A、B都要使用串口來打印,串口就是臨界資源。如果A、B同時(shí)使用串口,那么打印出來的信息就是A、B混雜,無法分辨。所以使用串口時(shí),應(yīng)該是這樣:A用完,B再用;B用完,A再用。

4.2 同步與互斥并不簡(jiǎn)單

4.3 各類方法的對(duì)比

能實(shí)現(xiàn)同步、互斥的內(nèi)核方法有:任務(wù)通知(task notification)、隊(duì)列(queue)、事件組(event group)、信號(hào)量(semaphoe)、互斥量(mutex)。

它們都有類似的操作方法:獲取/釋放、阻塞/喚醒、超時(shí)。比如:

  • A獲取資源,用完后A釋放資源
  • A獲取不到資源則阻塞,B釋放資源并把A喚醒
  • A獲取不到資源則阻塞,并定個(gè)鬧鐘;A要么超時(shí)返回,要么在這段時(shí)間內(nèi)因?yàn)锽釋放資源而被喚醒。

這些內(nèi)核對(duì)象五花八門,記不住怎么辦?我也記不住,通過對(duì)比的方法來區(qū)分它們。

  • 能否傳信息?只能傳遞狀態(tài)?
  • 為眾生?只為你?
  • 我生產(chǎn),你們消費(fèi)?
  • 我上鎖,只能由我開鎖
內(nèi)核對(duì)象 生產(chǎn)者 消費(fèi)者 數(shù)據(jù)/狀態(tài) 說明
隊(duì)列 ALL ALL 數(shù)據(jù):若干個(gè)數(shù)據(jù)
誰都可以往隊(duì)列里扔數(shù)據(jù),
誰都可以從隊(duì)列里讀數(shù)據(jù)
用來傳遞數(shù)據(jù),
發(fā)送者、接收者無限制,
一個(gè)數(shù)據(jù)只能喚醒一個(gè)接收者
事件組 ALL ALL 多個(gè)位:或、與
誰都可以設(shè)置(生產(chǎn))多個(gè)位,
誰都可以等待某個(gè)位、若干個(gè)位
用來傳遞事件,
可以是N個(gè)事件,
發(fā)送者、接受者無限制,
可以喚醒多個(gè)接收者:像廣播
信號(hào)量 ALL ALL 數(shù)量:0~n
誰都可以增加一個(gè)數(shù)量,
誰都可消耗一個(gè)數(shù)量
用來維持資源的個(gè)數(shù),
生產(chǎn)者、消費(fèi)者無限制,
1個(gè)資源只能喚醒1個(gè)接收者
任務(wù)通知 ALL 只有我 數(shù)據(jù)、狀態(tài)都可以傳輸,
使用任務(wù)通知時(shí),
必須指定接受者
N對(duì)1的關(guān)系:
發(fā)送者無限制,
接收者只能是這個(gè)任務(wù)
互斥量 只能A開鎖 A上鎖 位:0、1
我上鎖:1變?yōu)?,
只能由我開鎖:0變?yōu)?
就像一個(gè)空廁所,
誰使用誰上鎖,
也只能由他開鎖

使用圖形對(duì)比如下:

  • 隊(duì)列:
    • 里面可以放任意數(shù)據(jù),可以放多個(gè)數(shù)據(jù)
    • 任務(wù)、ISR都可以放入數(shù)據(jù);任務(wù)、ISR都可以從中讀出數(shù)據(jù)
  • 事件組:
    • 一個(gè)事件用一bit表示,1表示事件發(fā)生了,0表示事件沒發(fā)生
    • 可以用來表示事件、事件的組合發(fā)生了,不能傳遞數(shù)據(jù)
    • 有廣播效果:事件或事件的組合發(fā)生了,等待它的多個(gè)任務(wù)都會(huì)被喚醒
  • 信號(hào)量:
    • 核心是"計(jì)數(shù)值"
    • 任務(wù)、ISR釋放信號(hào)量時(shí)讓計(jì)數(shù)值加1
    • 任務(wù)、ISR獲得信號(hào)量時(shí),讓計(jì)數(shù)值減1
  • 任務(wù)通知:
    • 核心是任務(wù)的TCB里的數(shù)值
    • 會(huì)被覆蓋
    • 發(fā)通知給誰?必須指定接收任務(wù)
    • 只能由接收任務(wù)本身獲取該通知
  • 互斥量:
    • 數(shù)值只有0或1
    • 誰獲得互斥量,就必須由誰釋放同一個(gè)互斥量
在這里插入圖片描述
聲明:本文內(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)注

    18

    文章

    6311

    瀏覽量

    139518
  • RTOS
    +關(guān)注

    關(guān)注

    24

    文章

    862

    瀏覽量

    122552
  • FreeRTOS
    +關(guān)注

    關(guān)注

    14

    文章

    497

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    東山freeRTOS系列程之信號(hào)量(6)

    文章目錄 系列教程總目錄 概述 6.1 信號(hào)量的特性 6.1.1 信號(hào)量的常規(guī)操作 6.1.2 信號(hào)量跟隊(duì)列的對(duì)比 6.1.3 兩種信號(hào)量的對(duì)比 6.2 信號(hào)量函數(shù) 6.2.1 創(chuàng)建 6.2.2
    的頭像 發(fā)表于 12-13 14:35 ?5931次閱讀
    <b class='flag-5'>韋</b><b class='flag-5'>東山</b><b class='flag-5'>freeRTOS</b><b class='flag-5'>系列</b>教<b class='flag-5'>程之</b>信號(hào)量(6)

    東山freeRTOS系列程之隊(duì)列(queue)(5)

    文章目錄 系列教程總目錄 概述 5.1 隊(duì)列的特性 5.1.1 常規(guī)操作 5.1.2 傳輸數(shù)據(jù)的兩種方法 5.1.3 隊(duì)列的阻塞訪問 5.2 隊(duì)列函數(shù) 5.2.1 創(chuàng)建 5.2.2 復(fù)位 5.2.3
    的頭像 發(fā)表于 12-13 14:33 ?6630次閱讀
    <b class='flag-5'>韋</b><b class='flag-5'>東山</b><b class='flag-5'>freeRTOS</b><b class='flag-5'>系列</b>教<b class='flag-5'>程之</b>隊(duì)列(queue)(5)

    東山freeRTOS系列程之互斥量(mutex)(7)

    文章目錄 系列教程總目錄 概述 7.1 互斥量的使用場(chǎng)合 7.2 互斥量函數(shù) 7.2.1 創(chuàng)建 7.2.2 其他函數(shù) 7.3 示例15: 互斥量基本使用 7.4 示例16: 誰上鎖就由
    的頭像 發(fā)表于 12-13 14:38 ?8509次閱讀
    <b class='flag-5'>韋</b><b class='flag-5'>東山</b><b class='flag-5'>freeRTOS</b><b class='flag-5'>系列</b>教<b class='flag-5'>程之</b><b class='flag-5'>互斥</b>量(mutex)(7)

    基于FreeRTOS的STM32F103系統(tǒng)—隊(duì)列

    FreeRTOS中,隊(duì)列是實(shí)現(xiàn)任務(wù)之間同步、互斥通信的一種重要方法(其他的實(shí)現(xiàn)方法有:任務(wù)通知、事件組、信號(hào)量、互斥量)。
    的頭像 發(fā)表于 11-10 11:37 ?1780次閱讀
    基于<b class='flag-5'>FreeRTOS</b>的STM32F103系統(tǒng)—隊(duì)列

    東山linux視頻

    東山linux視頻主要內(nèi)容包括:uboot、裸機(jī)、文件系統(tǒng)、驅(qū)動(dòng)初步,又需要的可以下載看看東山的視頻還是很不錯(cuò)的,可惜沒有找到后兩期的?!菊怼?b class='flag-5'>
    發(fā)表于 12-21 23:49

    轉(zhuǎn):第23章 FreeRTOS互斥信號(hào)量

    FreeRTOS互斥信號(hào)量的源碼實(shí)現(xiàn)是基于消息隊(duì)列實(shí)現(xiàn)的。本章教程配套的例子含Cortex-M3內(nèi)核的STM32F103和Cortex-M4內(nèi)核的STM32F407以及F429。23.1
    發(fā)表于 09-06 14:58

    多線程同步互斥有幾種實(shí)現(xiàn)方法

    線程同步是指線程之間所具有的一種制約關(guān)系,一個(gè)線程的執(zhí)行依賴另一個(gè)線程的消息,當(dāng)它沒有得到另一個(gè)線程的消息時(shí)應(yīng)等待,直到消息到達(dá)時(shí)才被喚醒。線程互斥是指對(duì)于共享的進(jìn)程系統(tǒng)資源,在各單個(gè)線程訪問時(shí)的排
    發(fā)表于 08-05 06:06

    同步互斥通信相關(guān)資料下載

    慕課電子科技大學(xué).嵌入式系統(tǒng).第八章.同步互斥通信.異步信號(hào)和管道0 目錄8 同步互斥通信8
    發(fā)表于 12-22 06:37

    東山freeRTOS系列教程:入門文檔教程+進(jìn)階視頻教程

    文章目錄 學(xué)前知識(shí)普及 初級(jí)文檔教程 進(jìn)階視頻教程 進(jìn)階一:FreeRTOS的內(nèi)部機(jī)制 進(jìn)階二:深入理解FreeRTOS隊(duì)列之隊(duì)列實(shí)戰(zhàn) 進(jìn)階三:RTOS商業(yè)產(chǎn)品案例源碼講解 學(xué)前知識(shí)普及 對(duì)于
    發(fā)表于 11-29 16:36 ?3140次閱讀
    <b class='flag-5'>韋</b><b class='flag-5'>東山</b><b class='flag-5'>freeRTOS</b><b class='flag-5'>系列</b>教程:入門文檔教程+進(jìn)階視頻教程

    東山freeRTOS程之FreeRTOS概述與體驗(yàn)(1)

    文章目錄 教程目錄 1.1 FreeRTOS目錄結(jié)構(gòu) 1.1 FreeRTOS目錄結(jié)構(gòu) 1.2 核心文件 1.3 移植時(shí)涉及的文件 1.4 頭文件相關(guān) 1.4.1 頭文件目錄 1.4.2 頭文件
    發(fā)表于 11-29 16:56 ?2706次閱讀
    <b class='flag-5'>韋</b><b class='flag-5'>東山</b><b class='flag-5'>freeRTOS</b>教<b class='flag-5'>程之</b><b class='flag-5'>FreeRTOS</b>概述與體驗(yàn)(1)

    東山freeRTOS系列程之內(nèi)存管理(2)

    文章目錄 教程目錄 2.1 為什么要自己實(shí)現(xiàn)內(nèi)存管理 2.2 FreeRTOS的5種內(nèi)存管理方法 2.2.1 Heap_1 2.2.2 Heap_2 2.2.3 Heap_3 2.2.4
    發(fā)表于 11-29 16:58 ?1428次閱讀
    <b class='flag-5'>韋</b><b class='flag-5'>東山</b><b class='flag-5'>freeRTOS</b><b class='flag-5'>系列</b>教<b class='flag-5'>程之</b>內(nèi)存管理(2)

    東山freeRTOS系列程之任務(wù)管理(3)

    文章目錄 系列教程總目錄 概述 3.1 基本概念 3.2 任務(wù)創(chuàng)建與刪除 3.2.1 什么是任務(wù) 3.2.2 創(chuàng)建任務(wù) 3.2.3 示例1: 創(chuàng)建任務(wù) 3.2.4 示例2: 使用任務(wù)參數(shù) 3.2.5
    發(fā)表于 11-29 17:00 ?1551次閱讀
    <b class='flag-5'>韋</b><b class='flag-5'>東山</b><b class='flag-5'>freeRTOS</b><b class='flag-5'>系列</b>教<b class='flag-5'>程之</b>任務(wù)管理(3)

    東山嵌入式Linux學(xué)習(xí)——012 按鍵中斷

    東山嵌入式Linux學(xué)習(xí)——012 按鍵中斷
    發(fā)表于 12-04 17:36 ?10次下載
    <b class='flag-5'>韋</b><b class='flag-5'>東山</b>嵌入式Linux學(xué)習(xí)——012 按鍵中斷

    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ì)列 信號(hào)量 <b class='flag-5'>互斥</b>量

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

    FreeRTOS中的信號(hào)量是一種任務(wù)間通信的方式,信號(hào)量包括:二值信號(hào)量、互斥信號(hào)量、計(jì)數(shù)信號(hào)量,本次實(shí)驗(yàn)只使用二值信號(hào)量。信號(hào)量用于任務(wù)間的同步,
    的頭像 發(fā)表于 02-10 15:07 ?2271次閱讀