色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

任務間通信和同步的三種范式

要長高 ? 來源:embedded ? 作者:Colin Walls ? 2022-06-16 15:46 ? 次閱讀

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

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

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

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

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

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

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

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

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

信號

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

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

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

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

事件標志組

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

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

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

信號

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

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

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

郵箱

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

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

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

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

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

隊列

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

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

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

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

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

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

互斥

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

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

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)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6049

    瀏覽量

    136220
  • RTOS
    +關(guān)注

    關(guān)注

    22

    文章

    817

    瀏覽量

    119767
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    基本放大電路有哪三種

    基本放大電路是電子電路中至關(guān)重要的組成部分,它能夠?qū)⑤斎胄盘柗糯蟮剿璧碾娖剑员愫罄m(xù)電路進行處理。在電子工程中,基本放大電路主要有三種形式,分別是共發(fā)射極放大電路(簡稱共射放大電路)、共基極放大
    的頭像 發(fā)表于 10-15 11:07 ?1889次閱讀

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

    的工作狀態(tài)及工作條件對于理解和設計相關(guān)電路至關(guān)重要。以下是MOSFET的三種主要工作狀態(tài)及其工作條件的介紹。 一、MOSFET的三種工作狀態(tài) MOSFET根據(jù)其柵源電壓(VGS)和漏源電壓(VDS
    的頭像 發(fā)表于 10-06 16:51 ?2470次閱讀

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

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

    計算機網(wǎng)絡中的三種通信方式

    計算機網(wǎng)絡中的三種通信方式,即單工通信、半雙工通信和全雙工通信,是理解和設計高效網(wǎng)絡架構(gòu)的基礎。每種通信
    的頭像 發(fā)表于 08-07 15:00 ?3046次閱讀

    放大電路的三種組態(tài)可以放大什么

    放大電路是電子學中非常重要的組成部分,它們可以將輸入信號的幅度放大,以滿足各種應用的需求。放大電路的三種基本組態(tài)包括共射放大電路、共集放大電路和共基放大電路。每種組態(tài)都有其特定的應用和特點。以下
    的頭像 發(fā)表于 07-09 14:31 ?1344次閱讀

    信號調(diào)制的三種基本方法

    號調(diào)制的三種基本方法:調(diào)幅(AM)、調(diào)頻(FM)和調(diào)相(PM),并分析它們的優(yōu)缺點及應用場景。 調(diào)幅(AM) 2.1 調(diào)幅原理 調(diào)幅(Amplitude Modulation,AM)是一將低頻信號的幅度變化映射到高頻載波信號的幅度變化上的調(diào)制方式。在調(diào)
    的頭像 發(fā)表于 06-03 09:38 ?4555次閱讀

    晶體管的三種工作狀態(tài)

    晶體管作為現(xiàn)代電子技術(shù)的基石,其工作狀態(tài)直接影響電子設備的性能和功能。晶體管通常具備三種基本的工作狀態(tài):截止狀態(tài)、放大狀態(tài)和飽和狀態(tài)。這三種狀態(tài)不僅決定了晶體管在電路中的行為,也反映了晶體管作為半導體器件的基本特性。本文將詳細闡述晶體管的這
    的頭像 發(fā)表于 05-28 14:53 ?1613次閱讀

    淺析FreeRTOS任務調(diào)度器的三種調(diào)度算法和應用

    FreeRTOS在MCU領域應用非常廣泛,今天就給大家講解一下FreeRTOS調(diào)度器中的三種調(diào)度算法,以及在瑞薩RZ/T2L MPU中的應用。
    的頭像 發(fā)表于 05-10 14:02 ?7693次閱讀
    淺析FreeRTOS<b class='flag-5'>任務</b>調(diào)度器的<b class='flag-5'>三種</b>調(diào)度算法和應用

    進程通信的消息隊列介紹

    消息隊列是一非常常見的進程通信方式。
    的頭像 發(fā)表于 04-08 17:27 ?325次閱讀

    VMware虛擬機的三種網(wǎng)絡模式

    VMware虛擬機的三種網(wǎng)絡模式 VMware是一廣泛使用的虛擬機軟件,可以創(chuàng)建和管理多個虛擬機。在使用VMware虛擬機時,網(wǎng)絡設置非常重要,因為它決定了虛擬機如何與物理網(wǎng)絡或其他虛擬機進行通信
    的頭像 發(fā)表于 02-04 11:17 ?2072次閱讀

    運放的三種應用

    運放在電路中主要存在三種應用,放大器,濾波器,振蕩器。再這三種應用電路中,運放的兩大特點虛短虛斷仍然成立嗎? 在阻尼振蕩器中,工作過程是否按照我描述的這樣,在反相輸入端加一個近似鋸齒波的電流源,正半
    發(fā)表于 01-26 16:18

    運動控制的三種控制方式

    非標項目中有非常多的運動控制,根據(jù)系統(tǒng)配置、電機類型以及精度需求的不同主要有三種控制方式:開環(huán)控制、半閉環(huán)控制、全閉環(huán)控制。
    的頭像 發(fā)表于 01-23 09:48 ?1590次閱讀
    運動控制的<b class='flag-5'>三種</b>控制方式

    嵌入式Linux開發(fā)的三種方式

    嵌入式Linux開發(fā)主要有三種方式:裸機開發(fā)、SDK開發(fā)和驅(qū)動開發(fā)。
    的頭像 發(fā)表于 01-22 14:22 ?1017次閱讀

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

    示波器的觸發(fā)模式有自動模式(Auto)、正常模式(Norm)和單次模式(Single)三種。在測不同信號時,采用不同的觸發(fā)模式,才能準確測量到所需要的波形。下面以我司靜電發(fā)生器TEH-10030
    的頭像 發(fā)表于 01-18 08:12 ?2748次閱讀
    示波器的<b class='flag-5'>三種</b>觸發(fā)模式
    主站蜘蛛池模板: 我不卡影院手机在线观看| 色狠狠一区二区| 免费精品一区二区三区AA片| 日韩精品特黄毛片免费看| 美女脱了内裤张开腿让男人爽| 人人舔人人爱| 中文人妻熟妇精品乱又伧| 鬼灭之刃花街篇免费樱花动漫| 久久久久久久网| 免费成年人在线观看视频| 无码国产精品高潮久久9| a免费视频| 囯产精品一品二区三区| 麻豆AV无码精品一区二区| 迅雷成人论坛| 亚洲综合视频| 国产精品免费一区二区三区四区| 国产又黄又粗又爽又色的视频软件| 免费。色婬网站| 伊人情人网综合| 国自产精品手机在线视频| 他揉捏她两乳不停呻吟口述| japanese from色系| 蜜桃传媒一区二区亚洲AV| 中国女人hd| 两个人在线观看的视频720| 秋霞网在线伦理影片| 99C视频色欲在线| 久久婷五月综合色啪网| 亚洲人成网站在线播放| 国产精品久久久久成人免费| 全彩acg无翼乌火影忍者| AV多人爱爱XXx| 男人叼女人| 99久久久久国产精品免费| 麻豆成人AV久久无码精品| 2019久久视频这里有精品15| 久久这里只有是精品23| 最近中文字幕完整版免费高清| 久久久久琪琪精品色| 2020年国产精品午夜福利在线观看|