日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

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

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

作者 |?傻孩子

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

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


【序】


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



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


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

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



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


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


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


圖1?實(shí)時(shí)性基本模型

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


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

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


你說(shuō)“我不管,我不管”,既然什么時(shí)候做都一樣為什么不能“盡早做”?你也說(shuō)了盡早做沒(méi)啥不好”,“中斷來(lái)了,服務(wù)程序執(zhí)行了,我想讓它遲點(diǎn)執(zhí)行也做不到?。?/span>



為了回答這個(gè)問(wèn)題,我們不講大道理,先看一個(gè)常見(jiàn)的例子:


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


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


圖3?三個(gè)事件的實(shí)時(shí)性窗口和事件處理時(shí)間示意圖

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

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


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

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

讓我們重新來(lái)看圖1所示的模型:

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


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

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


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

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


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


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

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


圖 6?過(guò)于謙讓的后果……

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



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



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


【小結(jié)】


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

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


推薦閱讀:

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

精選匯總 | ARM、Cortex-M

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


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


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

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

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

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉