日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

任務(wù)間通信和同步的三種范式

要長高 ? 來源:embedded ? 作者:Colin Walls ? 2022-06-16 15:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

任務(wù)間通信和同步有三種廣泛的范式:

任務(wù)擁有的設(shè)施 ——RTOS 賦予提供通信(輸入)設(shè)施的任務(wù)的屬性。我們將再看的例子是信號

內(nèi)核對象 ——由 RTOS 提供的工具,代表獨立的通信或同步工具。示例包括:事件標(biāo)志、郵箱、隊列/管道、信號量和互斥體。

消息傳遞 ——一種合理化的方案,其中 RTOS 允許創(chuàng)建消息對象,這些對象可以從一個任務(wù)發(fā)送到另一個任務(wù)或多個其他任務(wù)。這是內(nèi)核設(shè)計的基礎(chǔ),并導(dǎo)致將此類產(chǎn)品描述為“消息傳遞 RTOS”。

適合每種應(yīng)用的設(shè)施會有所不同。它們的功能也有一些重疊,一些關(guān)于可擴展性的思考是值得的。例如,如果一個應(yīng)用程序需要多個隊列,但只需要一個郵箱,那么實現(xiàn)具有單項隊列的郵箱可能會更高效。這個對象會有點不理想,但所有郵箱處理代碼都不會包含在應(yīng)用程序中,因此,可伸縮性將減少 RTOS 內(nèi)存占用。

共享變量或內(nèi)存區(qū)域

任務(wù)間通信的一種簡單方法是只擁有所有相關(guān)任務(wù)都可以訪問的變量或內(nèi)存區(qū)域。雖然它非常原始,但這種方法可能適用于某些應(yīng)用程序。需要控制訪問。如果變量只是一個字節(jié),那么對它的寫入或讀取可能是“原子”(即不可中斷)操作,但如果處理器允許對內(nèi)存字節(jié)進行其他操作,則需要小心,因為它們可能是可中斷的并且可能會導(dǎo)致時間問題。實現(xiàn)鎖定/解鎖的一種方法是在短時間內(nèi)禁用中斷。

如果您正在使用內(nèi)存區(qū)域,當(dāng)然您仍然需要鎖定。使用第一個字節(jié)作為鎖定標(biāo)志是可能的,假設(shè)內(nèi)存體系結(jié)構(gòu)促進對該字節(jié)的原子訪問。一個任務(wù)將數(shù)據(jù)加載到內(nèi)存區(qū)域,設(shè)置標(biāo)志,然后等待它清除。另一個任務(wù)等待設(shè)置標(biāo)志,讀取數(shù)據(jù)并清除標(biāo)志。使用中斷禁用作為鎖定不太明智,因為移動整個數(shù)據(jù)緩沖區(qū)可能需要時間。

這種類型的共享內(nèi)存使用方式類似于在多核系統(tǒng)中實現(xiàn)許多處理器間通信設(shè)施的方式。在某些情況下,硬件鎖和/或中斷被合并到處理器間共享存儲器接口中。

信號

信號可能是傳統(tǒng) RTOS 中提供的最簡單的任務(wù)間通信工具。它們由一組位標(biāo)志組成——可能有 8、16 或 32 個,具體取決于具體實現(xiàn)——與特定任務(wù)相關(guān)聯(lián)。

任何任務(wù)都可以使用 OR 類型的操作設(shè)置一個信號標(biāo)志(或多個標(biāo)志)。只有擁有信號的任務(wù)才能讀取它們。讀取過程通常是破壞性的——即標(biāo)志也被清除。

在某些系統(tǒng)中,信號以更復(fù)雜的方式實現(xiàn),以便在設(shè)置任何信號標(biāo)志時自動執(zhí)行由信號擁有任務(wù)指定的特殊功能。這消除了任務(wù)監(jiān)控標(biāo)志本身的必要性。這有點類似于中斷服務(wù)程序。

在以后的文章中將有更多關(guān)于信號的信息,其中描述了它們在 Nucleus SE 中的實現(xiàn)。

事件標(biāo)志組

事件標(biāo)志組類似于信號,因為它們是面向位的任務(wù)間通信設(shè)施。它們可以類似地以 8、16 或 32 位的組來實現(xiàn)。它們與信號的不同之處在于它們是獨立的內(nèi)核對象;它們不“屬于”任何特定任務(wù)。

任何任務(wù)都可以使用 OR 和 AND 操作設(shè)置和清除事件標(biāo)志。同樣,任何任務(wù)都可以使用相同類型的操作詢問事件標(biāo)志。在許多 RTOS 中,可以對事件標(biāo)志組合進行阻塞 API 調(diào)用;這意味著任務(wù)可能會暫停,直到設(shè)置了特定的事件標(biāo)志組合。當(dāng)詢問事件標(biāo)志時,還可能有一個“使用”選項可用,以便清除所有讀取標(biāo)志。

在以后的文章中提供有關(guān)事件標(biāo)志組的更多信息,其中描述了它們在 Nucleus SE 中的實現(xiàn)。

信號

量 信號量是獨立的內(nèi)核對象,它提供了一種標(biāo)記機制,通常用于控制對資源的訪問。大致有兩種類型:二進制信號量(只有兩種狀態(tài))和計數(shù)信號量(具有任意數(shù)量的狀態(tài))。一些處理器支持便于輕松實現(xiàn)二進制信號量的(原子)指令。二進制信號量也可以被視為計數(shù)限制為 1 的計數(shù)信號量。

任何任務(wù)都可能嘗試獲取信號量以獲取對資源的訪問權(quán)。如果當(dāng)前信號量值大于0,則獲取成功,信號量值遞減。在許多操作系統(tǒng)中,可以通過阻塞調(diào)用來獲取信號量;這意味著一個任務(wù)可能會被掛起,直到另一個任務(wù)釋放信號量。任何任務(wù)都可以釋放一個信號量,這會增加它的值。

在以后的文章中有更多關(guān)于信號量的信息,其中描述了它們在 Nucleus SE 中的實現(xiàn)。

郵箱

郵箱是獨立的內(nèi)核對象,它為任務(wù)提供了一種傳輸消息的方法。消息大小取決于實現(xiàn),但通常是固定的。一到四個指針大小的項目是典型的消息大小。通常,指向一些更復(fù)雜數(shù)據(jù)的指針是通過郵箱發(fā)送的。一些內(nèi)核實現(xiàn)了郵箱,因此數(shù)據(jù)只存儲在一個常規(guī)變量中,內(nèi)核管理對它的訪問。郵箱也可以稱為“交換”,盡管這個名字現(xiàn)在已經(jīng)不常見了。

任何任務(wù)都可以發(fā)送到郵箱,然后郵箱已滿。如果一個任務(wù)然后嘗試發(fā)送到一個完整的郵箱,它將收到一個錯誤響應(yīng)。在許多 RTOS 中,可以進行阻塞調(diào)用以發(fā)送到郵箱;這意味著一個任務(wù)可能會被掛起,直到郵箱被另一個任務(wù)讀取。任何任務(wù)都可以從郵箱中讀取,這會再次使其為空。如果任務(wù)嘗試從空郵箱讀取,它將收到錯誤響應(yīng)。在許多 RTOS 中,可以進行阻塞調(diào)用以讀取郵箱;這意味著一個任務(wù)可能會被掛起,直到郵箱被另一個任務(wù)填滿。

一些 RTOS 支持“廣播”功能。這使消息能夠發(fā)送到當(dāng)前在讀取特定郵箱時暫停的所有任務(wù)。

某些 RTOS 根本不支持郵箱。建議改為使用單條目隊列(見下文)。這在功能上是等效的,但會帶來額外的內(nèi)存和運行時開銷。

在以后的文章中會提供有關(guān)郵箱的更多信息,該文章描述了它們在 Nucleus SE 中的實現(xiàn)。

隊列

隊列是獨立的內(nèi)核對象,它為任務(wù)提供了一種傳輸消息的方法。它們比郵箱更靈活、更復(fù)雜。消息大小取決于實現(xiàn),但通常是固定大小和面向字/指針的。

任何任務(wù)都可能發(fā)送到隊列,并且這可能會重復(fù)發(fā)生,直到隊列已滿,此后任何發(fā)送嘗試都將導(dǎo)致錯誤。隊列的深度通常是用戶在創(chuàng)建或配置系統(tǒng)時指定的。在許多 RTOS 中,可以進行阻塞調(diào)用以發(fā)送到隊列;這意味著,如果隊列已滿,一個任務(wù)可能會被掛起,直到隊列被另一個任務(wù)讀取。任何任務(wù)都可以從隊列中讀取。消息的讀取順序與發(fā)送順序相同——先進先出 (FIFO)。如果一個任務(wù)試圖從一個空隊列中讀取,它將收到一個錯誤響應(yīng)。在許多 RTOS 中,可以進行阻塞調(diào)用以從隊列中讀取;這意味著,如果隊列為空,則任務(wù)可能會暫停,直到另一個任務(wù)將消息發(fā)送到隊列。

RTOS 可能會支持將消息發(fā)送到隊列前面的功能——這也稱為“干擾”。一些 RTOS 還支持“廣播”功能。這使消息能夠發(fā)送到在讀取隊列時暫停的所有任務(wù)。此外,RTOS 可以支持可變長度消息的發(fā)送和讀??;這提供了更大的靈活性,但會帶來一些額外的開銷。

許多 RTOS 支持另一種稱為“管道”的內(nèi)核對象類型。管道本質(zhì)上與隊列相同,但處理面向字節(jié)的數(shù)據(jù)。

隊列的內(nèi)部操作在這里不感興趣,但應(yīng)該理解它們在內(nèi)存和運行時的開銷比郵箱要多。這主要是因為需要維護兩個指針——指向隊列的頭部和尾部。

在以后的文章中有更多關(guān)于隊列和管道的信息,這些文章描述了它們在 Nucleus SE 中的實現(xiàn)。

互斥

信號量互斥信號量——互斥量——是獨立的內(nèi)核對象,其行為方式與正常的二進制信號量非常相似。它們稍微復(fù)雜一些,并包含臨時所有權(quán)的概念(資源的,對其的訪問受到控制)。如果一個任務(wù)獲得了一個互斥鎖,那么只有同一個任務(wù)才能再次釋放它——互斥鎖(以及資源??)暫時歸任務(wù)所有。

并非所有 RTOS 都提供互斥鎖,但調(diào)整常規(guī)二進制信號量非常簡單。有必要編寫一個“互斥量獲取”函數(shù),該函數(shù)獲取信號量并記錄任務(wù)標(biāo)識符。然后一個互補的“互斥釋放”函數(shù)將檢查調(diào)用任務(wù)的標(biāo)識符,只有當(dāng)它與存儲的值匹配時才釋放信號量,否則它將返回錯誤。

Colin Walls 在電子行業(yè)擁有超過 30 年的經(jīng)驗,主要致力于嵌入式軟件。Colin 經(jīng)常在會議和研討會上發(fā)表演講,并著有大量技術(shù)文章和兩本關(guān)于嵌入式軟件的書籍,他是 Mentor Embedded [Mentor Graphics Embedded Software Division] 的嵌入式軟件技術(shù)專家,常駐英國。

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

    關(guān)注

    18

    文章

    6470

    瀏覽量

    140299
  • RTOS
    +關(guān)注

    關(guān)注

    25

    文章

    871

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    ATE系統(tǒng)中這三種測量卡的架構(gòu)和功能

    測試儀行業(yè)面臨的一個挑戰(zhàn)是,如何在不顯著增加測試儀時間、尺寸或成本的情況下,滿足對大量測試通道的需求。盡管半導(dǎo)體測試儀(也稱為自動測試器件(ATE))種類繁多,但在大多數(shù)測試儀都包含三種主要卡:電壓
    的頭像 發(fā)表于 04-09 15:12 ?203次閱讀
    ATE系統(tǒng)中這<b class='flag-5'>三種</b>測量卡的架構(gòu)和功能

    數(shù)字療法如何更有效?(得加生物反饋)

    訓(xùn)練任務(wù):游戲包含三種任務(wù)類型——打蛋、數(shù)字和水果。這些任務(wù)要求兒童在時間壓力下快速辨別目標(biāo)并作出點擊反應(yīng),同時抑制對非目標(biāo)刺激的反應(yīng)(Go/No-go
    的頭像 發(fā)表于 03-18 18:01 ?345次閱讀
    數(shù)字療法如何更有效?(得加生物反饋)

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

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

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

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

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

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

    【干貨】一文帶你了解CAN、Modbus與LoRa三種通信協(xié)議的區(qū)別

    在工業(yè)自動化與物聯(lián)網(wǎng)領(lǐng)域,CAN、Modbus和LoRa是三種主流通信技術(shù)。而億佰特在該行業(yè)具有豐富的產(chǎn)品供客戶選擇與使用,幫助客戶進一步確定需求,本文將結(jié)合技術(shù)細節(jié)與實際案例解析其核心區(qū)別。一
    的頭像 發(fā)表于 08-28 19:32 ?2340次閱讀
    【干貨】一文帶你了解CAN、Modbus與LoRa<b class='flag-5'>三種</b><b class='flag-5'>通信</b>協(xié)議的區(qū)別

    TC377配置SMU FSP時,如何配置頻率參數(shù);三種模式有何區(qū)別,配置上有何區(qū)別?

    TC377配置SMU FSP時,如何配置頻率參數(shù);三種模式有何區(qū)別,配置上有何區(qū)別?
    發(fā)表于 08-08 07:48

    三種SPWM波形生成算法的分析與實現(xiàn)

    摘要:變頻技術(shù)作為現(xiàn)代電力電子的核心技術(shù),集現(xiàn)代電子、信息和智能技術(shù)于一體。而SPW(正弦波脈寬調(diào)制)波的產(chǎn)生和控制則是變頻技術(shù)的核心之一。本文對SPI波形生成的三種算法-對稱規(guī)則采樣法、不對稱規(guī)則
    發(fā)表于 07-31 13:34

    CAN總線電容過大?三種解決方案來了

    在新能源汽車路試中,CAN總線傳輸異常是一個常見問題。本期我們將探討由于總線電容過大導(dǎo)致的下降沿過緩問題,并介紹三種有效的解決方案。CAN總線下降沿過緩問題新能源路試工程師在分析CAN總線波形
    的頭像 發(fā)表于 07-22 11:36 ?898次閱讀
    CAN總線電容過大?<b class='flag-5'>三種</b>解決方案來了

    MEMS中的三種測溫方式

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

    同步任務(wù)開發(fā)指導(dǎo)

    同步任務(wù)是指在多個線程之間協(xié)調(diào)執(zhí)行的任務(wù),其目的是確保多個任務(wù)按照一定的順序和規(guī)則執(zhí)行,例如使用鎖來防止數(shù)據(jù)競爭。 同步
    發(fā)表于 06-19 07:57

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

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

    HarmonyOS基礎(chǔ)組件:Button三種類型的使用

    中的Button相較于Android原生來說,功能比較豐富,擴展性高,減少了開發(fā)者的代碼數(shù)量,簡化了使用方式。不僅可以自定義圓角還支持三種樣式。 常用屬性 名稱 參數(shù)類型 描述 type
    的頭像 發(fā)表于 06-09 15:48 ?2734次閱讀
    HarmonyOS基礎(chǔ)組件:Button<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)重要。本文將詳細介紹三種常見的 MySQL 高可用
    的頭像 發(fā)表于 05-28 17:16 ?1466次閱讀
    当阳市| 舞阳县| 洛川县| 郯城县| 志丹县| 五常市| 太保市| 玛纳斯县| 通渭县| 红原县| 鸡东县| 织金县| 长丰县| 巴林左旗| 西平县| 剑川县| 平陆县| 当阳市| 昌宁县| 牡丹江市| 百色市| 敦煌市| 葫芦岛市| 雷波县| 泽普县| 桃园县| 滦平县| 新乡县| 噶尔县| 昌吉市| 工布江达县| 文昌市| 神农架林区| 宜兰市| 都匀市| 遂川县| 察雅县| 巴林右旗| 时尚| 广元市| 迁西县|