【IoT美學】《物聯(lián)網(wǎng)操作系統(tǒng)原理(LiteOS)》——任務同步

      網(wǎng)友投稿 1220 2025-04-02

      今天,我們分享的內(nèi)容主要是物聯(lián)網(wǎng)操作系統(tǒng)中的任務同步。

      在正式閱讀博文之前,按慣例,我們需要思考幾個問題:

      什么是任務同步?

      什么是任務互斥?

      同步和互斥的聯(lián)系是什么?

      如果你認真的思考了上面的問題,那么請你閱讀下面的分享,也希望你能Get到屬于自己的盲點知識!

      一、任務同步背景

      1.存在的問題

      a.全局資源的共享存在潛在風險

      b.操作系統(tǒng)很難對任務進行最優(yōu)化分配

      c.操作系統(tǒng)為多任務的同步和互斥提供了多種機制

      互斥鎖

      讀寫鎖

      自旋鎖

      事件標識

      信號量

      2.任務同步

      系統(tǒng)中某任務需要在時間上相互合作,共同完成一項應用

      3.任務互斥

      A任務在L臨界區(qū)訪問共享資源時,其他任務不能進入L臨界區(qū)訪問任何共享資源

      4.同步與互斥的聯(lián)系

      同步是一種更為復雜的互斥

      互斥是一種特殊的同步

      二、臨界區(qū)問題

      1.臨界資源

      共享資源中,具有無法同時被多個任務訪問的特性,且一次只允許一個任務調(diào)用的資源

      2.臨界區(qū)

      訪問臨界資源的代碼段

      3.同步機制準則

      空閑讓進:臨界區(qū)空閑時,可以允許一個請求進入臨界區(qū)的進程立即進入臨界區(qū)

      【IoT美學】《物聯(lián)網(wǎng)操作系統(tǒng)原理(LiteOS)》——任務同步

      忙則等待:當已有進程進入臨界區(qū)時,其他試圖進入臨界區(qū)的進程必須等待

      有限等待:對請求訪問的進程,因保證其在有限時間內(nèi)進入臨界區(qū)

      讓權(quán)等待:當進程不能進入臨界區(qū)時,應立即釋放處理器,防止進程忙等待

      三、同步方案

      1.軟件同步方案

      a.在代碼邏輯中控制對臨界區(qū)的訪問

      b.實現(xiàn)方法

      1).單標志法

      缺陷:違背“空閑讓進”原則,造成資源利用的不充分

      2).雙標志先檢查法

      優(yōu)點:滿足“空閑讓進”原則

      缺陷:違背“忙則等待”原則

      3).雙標志后檢查法

      優(yōu)點:滿足“忙則等待”原則

      缺陷:違背“空閑讓進”、“有限等待”原則

      4).Peterson算法

      優(yōu)點:遵循“空閑讓進“、”忙則等待“、”有限等待“原則

      缺陷:違背”讓權(quán)等待“原則

      2.硬件同步方案

      a.借用計算機提供的特殊硬件指令

      b.實現(xiàn)方法

      1).中斷屏蔽法

      缺陷:限制中斷,使CPU失去交替執(zhí)行任務的能力,嚴重降低CPU執(zhí)行程序的效率

      2).TestAndSet指令

      可以將指定標志設(shè)置為真值

      3).Swap指令

      可以交換兩個標志的內(nèi)容

      什么是信號量?

      物聯(lián)網(wǎng)操作系統(tǒng)中為什么要用到信號量?

      互斥鎖和信號量有關(guān)系嗎?

      四、信號量

      1.機械信號機制

      2.實例:鐵路系統(tǒng),鐵軌被多輛列車共用時,需要特殊裝置提供互斥機制。當軌道被使用時,該裝置通過關(guān)閉特殊裝置來阻止列車進入該軌道。反之,軌道未被使用時,則打開特殊裝置讓等待的列車繼續(xù)????????????????前進。

      對比物聯(lián)網(wǎng)操作系統(tǒng)

      列車——任務

      列車沿軌道行駛的過程——任務執(zhí)行的過程

      共用的鐵軌——臨界資源

      3.荷蘭? 計算機科學家E.W.Dijkstra??1959年提出信號量在軟件上實現(xiàn)互斥

      4.分類

      a.二進制信號量

      Binary Semaphores

      只能取0和1

      b.計數(shù)型信號量

      Counting Semaphores

      取值由其制約機制的位數(shù)決定

      5.信號量實現(xiàn)原理

      通過計數(shù)機制實現(xiàn)任務之間的同步或臨界資源的互斥訪問

      6.Huawei LiteOS中信號量的運作原理

      usSemStat????????????????? /**是否使用標志位**/

      uwSemCount???????????? /**信號量索引號**/

      usMaxSemCount?????? /**信號量最大數(shù)**/

      usSemID??????????????????? /**信號量當前計數(shù)**/

      stSemList?????????????????? /**任務鏈表**/

      注意:中斷申請信號量必須使用無阻塞模式

      7.互斥鎖實現(xiàn)原理

      a.互斥鎖又稱互斥信號量

      b.一種特殊的二進制信號量,用于實現(xiàn)對共享資源的獨占式處理

      c.互斥鎖狀態(tài)

      開鎖(任務釋放互斥鎖)

      閉鎖(任務持有互斥鎖)

      d.當一個任務持有互斥鎖時,其他任務將不能再對該互斥鎖進行開鎖或持有

      8.Huawei LiteOS中互斥鎖的運作原理

      Huawei LiteOS互斥鎖申請模式

      a.無阻塞模式

      b.永久阻塞模式

      c.定時阻塞模式

      物聯(lián)網(wǎng)操作系統(tǒng)需要保證任務調(diào)度的實時性,盡量避免任務的長時間阻塞,在獲得互斥鎖后應盡快釋放互斥鎖

      注意:互斥鎖不能在中斷服務程序中使用

      9.優(yōu)先級翻轉(zhuǎn)問題

      當使用信號量控制共享資源的訪問時,可能會出現(xiàn)信號量被低優(yōu)先級占有的情況,造成高優(yōu)先級任務被低優(yōu)先級任務阻塞,難以保證實時性

      10.優(yōu)先級繼承

      為了解決優(yōu)先級翻轉(zhuǎn)問題,而提出的優(yōu)化機制

      低優(yōu)先級任務獲取共享資源時,臨時提升其優(yōu)先級,使其能更快的執(zhí)行并釋放資源,在釋放后恢復任務原先的優(yōu)先級

      優(yōu)先級的提升幅度取決于等待該共享資源的最高優(yōu)先級任務的優(yōu)先級

      基于你現(xiàn)有的知識定義事件和死鎖?

      死鎖是否可以避免?如果可以避免,它的避免策略有哪些?

      什么是物聯(lián)網(wǎng)操作系統(tǒng)的原子操作?

      五、事件

      1.一種實現(xiàn)任務間通信的機制

      2.事件通信只能是事件類型的通信,無數(shù)據(jù)傳輸

      3.常用于實現(xiàn)任務之間的同步

      4.事件內(nèi)部結(jié)構(gòu)

      a.以Huawei LiteOS為例的事件,僅用于任務之間的同步,不能提供數(shù)據(jù)傳輸功能

      b.多次向任務發(fā)送同一事件類型時,等效于只發(fā)送一次

      c.Huawei LiteOS的事件集合與任務不相關(guān)聯(lián),任務可以通過創(chuàng)建事件控制塊來實現(xiàn)對事件的觸發(fā)和等待操作

      5.事件讀取模式

      所有事件(LOS_WAITMODE_AND)

      任一事件(LOS_WAITMODE_OR)

      清除事件(LOS_WAITMODE_CLR)

      6.事件喚醒任務

      a.邏輯或:只要等待中的任意事件發(fā)生,任務即會被喚醒并執(zhí)行

      b.邏輯與:只有當所有等待的特定事件都發(fā)生后,任務才會被喚醒并繼續(xù)執(zhí)行

      c.等待事件通過讀事件函數(shù)實現(xiàn),事件發(fā)生通過寫事件函數(shù)實現(xiàn)

      六、死鎖

      1.多任務環(huán)境中,錯誤處理任務同步可能會導致死鎖

      2.死鎖原理

      a.定義:一組相互競爭系統(tǒng)資源或進行通信間”永久“阻塞

      b.產(chǎn)生死鎖的4個必要條件

      互斥條件:一次只有一個任務可以使用一個資源,其他任務不能訪問已分配的資源

      請求和保持條件:當一個任務繼續(xù)等待其他任務時,繼續(xù)占有已經(jīng)分配的資源

      不可搶占條件:不能強行搶占任務已占有的資源

      循環(huán)等待條件:存在一個封閉的任務鏈,使得每個任務都在等待任務鏈中的其他任務

      3.死鎖預防

      a.設(shè)計一種系統(tǒng)來排除發(fā)生死鎖的可能性

      b.分類

      間接的死鎖預防:防止前面列出的前3個必要條件中任何一個的發(fā)生

      直接的死鎖預防:防止循環(huán)等待的發(fā)生

      c.破壞互斥條件

      d.破壞請求和保持條件

      e.破壞不可搶占條件

      f.破壞循壞等待條件

      4.死鎖避免

      在資源動態(tài)分配的過程中,防止系統(tǒng)進入不安全的狀態(tài),以避免發(fā)生死鎖

      安全狀態(tài):指系統(tǒng)能按某種任務推進順序為每個任務分配其所需資源

      銀行家算法(最著名的死鎖避免算法)

      5.死鎖檢測

      a.優(yōu)勢

      盡早的檢測死鎖情況

      算法相對比較簡單

      b.死鎖解除的主要方法

      資源剝奪法:掛起某些死鎖任務,并搶占它的資源

      撤銷任務法:強制撤銷部分甚至全部死鎖任務并剝奪這些任務的資源

      任務回退法:讓一個或多個任務回退到足以回避死鎖的地步,任務回退時自愿釋放資源而不是被剝奪

      七、原子操作

      1.原子操作能確保對同一組數(shù)據(jù)的的”讀取—修改—寫入“操作在執(zhí)行期間不被打斷

      2.物聯(lián)網(wǎng)操作系統(tǒng)可以通過對ARMv6架構(gòu)中的LDREX和STREX指令進行封裝實現(xiàn)原子操作接口

      輕量級操作系統(tǒng) LiteOS IoT

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:如何根據(jù)列中的單元格值復制行?
      下一篇:集成技術(shù)如何幫助您在2020年克服這5個經(jīng)濟挑戰(zhàn)
      相關(guān)文章
      亚洲日韩AV无码一区二区三区人| 伊人久久大香线蕉亚洲| 国产亚洲精品资源在线26u| 亚洲精品国产成人影院| 亚洲av成本人无码网站| 亚洲熟女综合一区二区三区| 最新国产成人亚洲精品影院| 亚洲乱码在线视频| 亚洲人成日本在线观看| 亚洲国产精品乱码在线观看97| 亚洲视频免费一区| 亚洲日韩国产精品无码av| 亚洲精品免费视频| 亚洲精品天堂在线观看| 亚洲一区在线观看视频| 亚洲精品亚洲人成在线播放| 亚洲一级毛片中文字幕| 亚洲免费福利在线视频| 亚洲色偷偷色噜噜狠狠99 | 亚洲中文字幕乱码熟女在线| 456亚洲人成在线播放网站| 亚洲综合国产成人丁香五月激情| 亚洲日韩精品无码专区加勒比| 亚洲日韩精品无码专区加勒比 | 亚洲欧洲国产综合AV无码久久| 亚洲精品国产av成拍色拍| 亚洲s码欧洲m码吹潮| 国产产在线精品亚洲AAVV| 五月天婷亚洲天综合网精品偷| 亚洲精品国产福利一二区| 亚洲综合色婷婷七月丁香| 亚洲AV无码一区二区三区系列 | 亚洲小视频在线观看| 亚洲免费人成在线视频观看| 亚洲国产成人高清在线观看| 亚洲福利视频一区二区三区| 亚洲www在线观看| 亚洲AV无码一区二区三区牲色| 亚洲综合久久夜AV | 亚洲阿v天堂在线| 亚洲欧洲日本国产|