www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號精選 > strongerHuang
[導(dǎo)讀]不知道你發(fā)現(xiàn)沒有,平時我們討論嵌入式軟件開發(fā)時總繞不開與實時性(Real Time)相關(guān)的話題。相信不少朋友和我一樣是通過實時性操作系統(tǒng)(Real Time Operating System, RTOS)第一次接觸到實時性概念的——我記得那還是大學(xué)時代、參加機器人競賽的時候。工作以后自信地以為加深了不少對實時性的本質(zhì)認(rèn)識——現(xiàn)在看來其實還未摸到門道。

關(guān)注+星標(biāo)公眾,不錯過精彩內(nèi)容

作者 |?傻孩子

轉(zhuǎn)自?|?裸機思維

下面分享一篇王工(網(wǎng)名:傻孩子)整理的文章:


【序】


不知道你發(fā)現(xiàn)沒有,平時我們討論嵌入式軟件開發(fā)時總繞不開與實時性(Real Time)相關(guān)的話題。相信不少朋友和我一樣是通過實時性操作系統(tǒng)(Real Time Operating System,?RTOS)第一次接觸到實時性概念的——我記得那還是大學(xué)時代、參加機器人競賽的時候。工作以后自信地以為加深了不少對實時性的本質(zhì)認(rèn)識——現(xiàn)在看來其實還未摸到門道。就這樣渾渾噩噩一直到畢業(yè)后的第八年,因為工作變動的原因,我被迫要在一周內(nèi)要做一個實時性原理相關(guān)的研究報告,也就在那時,我體會到了瘋狂練功走火入魔的感覺:走路在思考、吃飯在看資料、頭一直發(fā)燒一樣的微微發(fā)熱、甚至連睡覺都在夢中推演模型——頭發(fā)一把一把的掉,幸好有截稿時間,否則真的要禿了。



也就是經(jīng)過那一次,我突然發(fā)現(xiàn)自己之前對實時性的認(rèn)知可謂徒有其表,甚至從未做對實時性模型本身的定量分析——所幸,那次研究報告如期交付,工作變動也如愿以償。然而,3年后我發(fā)現(xiàn)“我又雙天真了”——那是有一次,我正跟人討論嵌入式基本范式,就突然一個瞬間,腦海中原本毫不相關(guān)的一些模型猛地被聯(lián)系到了一起(音效請腦補):


我甚至本能的立即意識到:之前自己在某篇文章中“言之鑿鑿”的推論過程其實存在巨大漏洞——當(dāng)然,那本書從未出版過,而且會閑到對我進行深究的人估計也沒有幾個。
今天,即便我非常確信——在前方至少還有幾道數(shù)學(xué)的深谷阻礙著我觸碰“實時性”的圣杯——然而我并不是計算機科學(xué)家,現(xiàn)有結(jié)論對我來說已經(jīng)足夠裝逼 回頭看來,根據(jù)我的經(jīng)驗以及與朋友討論的結(jié)果,大致認(rèn)為大部分人對實時性的認(rèn)知過程通常會分以下幾個階段:

  • Lv1:“實時性” = “越快越好”,認(rèn)為用好中斷是保證實時性的關(guān)鍵;這類朋友通常最擅長的是裸機下的“前后臺系統(tǒng)”;
  • Lv2:“實時性” = RTOS,認(rèn)為選一個好的RTOS,或者會用RTOS就可以保證實時性;這一階段的朋友對RTOS充滿了好奇,以編寫自己的RTOS為“?終(zhong)極(er)目標(biāo)”;
  • Lv3:“實時性” = 任務(wù)拆分,這一階段已經(jīng)能正確的理解實時性窗口的概念,意識到實時性并不意味著越快越好,但也認(rèn)為“在可能的情況下”“快一點響應(yīng)事件沒啥壞處”;這一階段的朋友可能已經(jīng)可以在裸機和RTOS之間自由的反復(fù)橫跳,無論是裸機下的狀態(tài)機還是RTOS下的線程都已了如指掌、任務(wù)間通信更是游刃有余;
  • Lv4:這一階段開始思考實時性模型的特點,并逐漸意識到模型本身其實隱含了足以顛覆過往所有關(guān)于實時性認(rèn)知的秘密;到達這一階段的朋友通常覺得沒必要、也沒心思繼續(xù)思考實時性更本質(zhì)的數(shù)學(xué)意義——因為此時獲得的結(jié)論已經(jīng)足夠了應(yīng)付幾乎所有的工程開發(fā)了。順便說一下,我就在這里 。
  • Lv5:到了這個階段,不僅腦洞大開、戰(zhàn)斗力驚人、估計打針也沒法阻止你抓破脖子了吧 ——以上只是暴露年齡的玩笑,但肯定 可以水幾篇SCI論文了……



在理解了實時性的模型以后,(本能的排除了自己比較笨這個可能性,然后)意識到:其實這一過程完全沒必要如此漫長和曲折——很多結(jié)論和道理是如此簡單——不僅書本上有,而且解釋和學(xué)習(xí)起來都不費什么力氣。可能這就是“撓破頭”想通某個道理之后,回頭再看時忍不住要“苦笑”時的感受吧。


按照約定,為了將經(jīng)驗和知識分享給大家,從本文開始,我將以幾篇文章的篇幅:從基礎(chǔ)模型開始,由淺入深、由理論到實踐,推演關(guān)于實時性的幾個重要結(jié)論——從而直接跳躍到Lv4的認(rèn)知階段。如果你看了這個系列后有什么話想說的、想問的,還請在評論區(qū)寫下您的留言。求評論、求轉(zhuǎn)發(fā)、求收藏。


【擊碎?“唯快不破” 的神話】
圖1展示了一個標(biāo)準(zhǔn)的實時性模型:
  • 基于物理世界客觀法則的限制,很多應(yīng)用在制定需求說明的時候,從某一個事件發(fā)生的時刻計算,會規(guī)定一個死線(Dead Line),即:一旦事件發(fā)生了,如果不在這個死線之前完成整個對事件的處理,就視作失敗;
  • 這里,從事件發(fā)生到死線這段時間長度,習(xí)慣上稱為實時性窗口。當(dāng)事件發(fā)生時,只有在死線內(nèi)任意時刻完成了對事件的處理,才能稱為實時性得到了滿足;
  • 容易注意到,處理事件的過程也需要消耗時間——一般稱為事件處理時間;


圖1?實時性基本模型

考慮一個有趣的問題:對一個實時性任務(wù)來說,實時性窗口內(nèi)的時間,其價值是一樣的么?換句話說,橫豎處理事件消耗的時間是不變的,早點做遲點做都是做,有什么區(qū)別么?


圖2 實時性窗口內(nèi)不同時間段完成事件響應(yīng)

對比圖2所示的三種情況,可以很清楚的得出結(jié)論:理論上,從滿足實時性的角度出發(fā),在時間窗口內(nèi)任意時段完成對事件的處理都滿足實時性要求;早做沒有任何額外的好處,“踩著上課鈴到校”也沒有任何懲罰——簡單說就是早做遲做無所謂。


你說“我不管,我不管”,既然什么時候做都一樣為什么不能“盡早做”?你也說了盡早做沒啥不好”,“中斷來了,服務(wù)程序執(zhí)行了,我想讓它遲點執(zhí)行也做不到???



為了回答這個問題,我們不講大道理,先看一個常見的例子:


  • 超級循環(huán)里有三個任務(wù)A、B和C;
void main(void){ ...????while(1) {?? task_a();?? task_b();????????task_c();????}}


  • 每個任務(wù)都使用輪詢的方式在等待一個來自芯片外界的事件發(fā)生(先不考慮存在中斷的情況);
  • 當(dāng)一個任務(wù)函數(shù)被執(zhí)行時會檢查對應(yīng)的事件是否已經(jīng)發(fā)生,如果確實已經(jīng)發(fā)生,則執(zhí)行后續(xù)的處理;反之則立即退出任務(wù)函數(shù)——釋放處理器;
  • A、B、C三個事件的實時性窗口分別為10ms,?6ms4ms;處理三個事件的處理程序分別需要4ms、3ms0.4ms。如圖3所示:


圖3?三個事件的實時性窗口和事件處理時間示意圖

  • 需要強調(diào)的是,task_a()、task_b()task_c()三個函數(shù)的策略本質(zhì)上都是一樣的——“一旦檢測到事件立即處理,絕不遲延”!

基于上述事實,容易發(fā)現(xiàn):假如某一時刻,A、B、C三個函數(shù)都處于觸發(fā)狀態(tài)(等待處理的狀態(tài)),而超級循環(huán)恰巧進入task_a()執(zhí)行——這種情況其實比想象中容易發(fā)生,比如從task_a()退出到task_c()執(zhí)行完成期間,事件A觸發(fā)了;從task_b()退出到task_c()執(zhí)行完成期間,事件B觸發(fā)了;在task_c退出()之后恰巧事件C又觸發(fā)了……此時,任務(wù)A會立即響應(yīng),消耗4ms的時間來完成事件處理;當(dāng)從task_a()函數(shù)退出時,剩余給task_b()的時間窗口只有2ms6ms-4ms),而事件B的處理函數(shù)需要3ms——顯然事件B的實時性是無法得到保證的——當(dāng)然事件C已經(jīng)死得透透了……


圖 4?“越快處理越好” 導(dǎo)致其它任務(wù)無法滿足實時性要求

通過上面的例子,我們知道“越快處理越好”是值得反思的——至少會存在情況導(dǎo)致系統(tǒng)在某些時刻無法滿足實時性要求;那么從模型上來說,如何理解這一現(xiàn)象呢?

讓我們重新來看圖1所示的模型:

實際上,如果單純從一個實時性任務(wù)自身出發(fā)來看,的確在實時性窗口內(nèi),任意時間完成事件的處理都是一樣的;然而,通過前面的舉例我們其實可以發(fā)現(xiàn),當(dāng)一個系統(tǒng)中存在多個實時性任務(wù)時,雖然一個實時性窗口內(nèi)的任意時間對任務(wù)自己都是等價的,但越靠前的時間對“別人”來說是越寶貴的:


  • 當(dāng)你使用“越快越好”策略時,你不會有額外的收益,而實際上是走了別人的路,讓人無路可走——典型的損人不利己;
  • 當(dāng)你在別人需要的時候,在自己實時性得到保證的前提下,盡可能讓出對你沒有額外價值的靠前的時間,實際上是一種“利他主義”;
  • 當(dāng)所有的任務(wù)都采用這種利他策略時,就變成了“人人為我,我為人人”的合作策略——這種情況下,如果數(shù)學(xué)證明整個系統(tǒng)一定存在一個方案來滿足所有任務(wù)的實時性需求,那么利他策略一定能找到這樣的解決方案。

圖 5 一種可能的解決方案(不是唯一)


作為一個系統(tǒng)開發(fā)者,我們顯然是需要從全局考慮的,因此完全沒有必要從單個實時性任務(wù)的自私視角來看問題,因此結(jié)論就變得更為直接:實時性窗口內(nèi)越靠前的時間價值越高,從總體上來看“單純”越快越好的策略對實時性是有害的

既然單純的“越快越好”不可取,且“實時性窗口內(nèi)”越靠前的時間越有價值,是否意味著,其實“越靠后越好呢”?


為了驗證另外一個極端“越慢越好(越靠后越好)”是否是正確的,我們不妨以同樣的例子來推演一下,僅僅更新task_a()task_b()task_c()的執(zhí)行策略:從“越快越好”變?yōu)椤霸铰胶谩薄@實際上意味著:


  • 每一個事件處理任務(wù)都清楚的知道“距離事件發(fā)生已經(jīng)過去了多長時間”;
  • 為了做到“卡著上課鈴進教室”,不到最后時刻,絕對不執(zhí)行任務(wù)處理。

根據(jù)這一算法,我們推演得到以下的尷尬情形:


圖 6?過于謙讓的后果……

不妨分析下過程:首先,task_a()執(zhí)行,在了解到距離自己的最后時刻還有6ms的實時后毅然的決定把寶貴的時間留給他人;于是,CPU來到了下一個任務(wù)函數(shù),基于類似的原因,task_b()也擺擺手……最終第一輪三個任務(wù)都決定再等一等……



如此謙讓(浪費)了3ms以后,任務(wù)B終于決定下場——在執(zhí)行了3ms任務(wù)處理后,成功的將隨后的任務(wù)C逼上了絕路……隨著A的淪陷,大型翻車現(xiàn)場成就達成……



從結(jié)論上看,另外一個極端“越慢越好”也是走不通的。那么究竟如何才能從模型分析的角度出發(fā)得出一個令人信服的、容易理解的、滿足所有任務(wù)實時性需求的方法呢?關(guān)于這一點,我們下次再聊。


【小結(jié)】


從系統(tǒng)全局來看,實時性窗口內(nèi)的時間越靠前越有價值,應(yīng)該盡可能留給別的更緊急的任務(wù)來使用。事件發(fā)生時“越快處理越好”的策略直接占用了它人的“生命線”——當(dāng)所有的任務(wù)都試圖“損人不利己”時,那么整個系統(tǒng)沒有一個任務(wù)是可以保證自己的實時性不被它人破壞的。從結(jié)論上看簡單的“越快越好”策略在實時性系統(tǒng)中是不允許的。

------------?END?------------


推薦閱讀:

精選匯總 | 專欄 | 目錄 | 搜索

精選匯總 | ARM、Cortex-M

精選匯總?| ST工具、下載編程工具


關(guān)注 微信公眾號『嵌入式專欄』,底部菜單查看更多內(nèi)容,回復(fù)“加群”按規(guī)則加入技術(shù)交流群。


點擊“閱讀原文”查看更多分享,歡迎點分享、收藏、點贊、在看。

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉