當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]多任務(wù)的時間片調(diào)度在嵌入式領(lǐng)域有實用價值。一方面是很多嵌入式軟件系統(tǒng)升級有這種需求,舊的軟件模塊基于Endless?。蹋铮铮饘崿F(xiàn),升級到μC/OS-II后,若要最大限度地復(fù)用舊的軟件模塊,時間片調(diào)度算法是實現(xiàn)舊的設(shè)計模式到新架構(gòu)之間最簡單的橋梁。另一方面,對于控制領(lǐng)域,存在大量的耗時任務(wù)無法自動釋放控制權(quán),時間片調(diào)度降低了任務(wù)

引言


筆者曾在本刊2008年12期上發(fā)表過一篇文章——《基于μC/OS-11的時間片調(diào)度法設(shè)計》,近期在網(wǎng)絡(luò)上看到有很多感興趣的技術(shù)同行作了大量引用和轉(zhuǎn)載。根據(jù)在實際項目中的應(yīng)用經(jīng)驗,有必要對其再議,主要原因如下:①多任務(wù)的時間片調(diào)度在嵌入式領(lǐng)域有實用價值。一方面是很多嵌入式軟件系統(tǒng)升級有這種需求,舊的軟件模塊基于Endless Loop實現(xiàn),升級到μC/OS-II后,若要最大限度地復(fù)用舊的軟件模塊,時間片調(diào)度算法是實現(xiàn)舊的設(shè)計模式到新架構(gòu)之間最簡單的橋梁。另一方面,對于控制領(lǐng)域,存在大量的耗時任務(wù)無法自動釋放控制權(quán),時間片調(diào)度降低了任務(wù)設(shè)計的復(fù)雜度。剛剛發(fā)布不久的μC/OS-II,推出的重大改進(jìn)之一就是增加了對Round Robin的支持,更是表明μC/OS-II的使用者們對該功能的實際需求是切實存在的。②不更改μC/OS-II內(nèi)核代碼實現(xiàn)時間片調(diào)度。《基于μC/OS-II的時間片調(diào)度法設(shè)計》對OS內(nèi)核代碼作了修改,雖然很少但增加了系統(tǒng)耦合度,對日后的項目維護(hù)和第三方升級都是不利的。如果存在完全不用更改內(nèi)核而僅基于OS服務(wù)的正常調(diào)用的實現(xiàn)方案,對系統(tǒng)的可靠性和移植性都是有益的。③相對μC/OS-III,μC/OS-II仍然有廣泛的應(yīng)用領(lǐng)域。μC/OS-III作出了重大的改進(jìn),增加了時間片調(diào)度,擴(kuò)展了任務(wù)數(shù)的限制,允許了同等優(yōu)先級任務(wù)的存在,更多新特性的引入帶來了內(nèi)核結(jié)構(gòu)的重整以及運行時開銷的增加。雖然可以通過配置優(yōu)化系統(tǒng),但就大部分的應(yīng)用而言,μC/OS-II完全能夠勝任,至少不需要僅僅為了時間片調(diào)度功能而選用μC/OS-III.1調(diào)度原理

該調(diào)度算法對系統(tǒng)的要求有兩點:首先要建立一個額外的調(diào)度任務(wù)用于管理待調(diào)度的用戶任務(wù)時間片計時及其切換,我們將其命名為TaskRB_Scheduler;其次是保證其任務(wù)優(yōu)先級高于所有的待調(diào)度時間片任務(wù),保證調(diào)度任務(wù)能搶占所有被調(diào)度任務(wù)的控制權(quán)。我們假設(shè)系統(tǒng)中有3個任務(wù)需要分享時間片,分別為TaskRB_1、TaskRB_2、TaskRB_3.為了實現(xiàn)時間片的調(diào)度功能,還需要額外的調(diào)度任務(wù)TaskRB Scheduler,于是系統(tǒng)中的將會有4個任務(wù)。其中,TaskRB Scheduler由初始化代碼創(chuàng)建,而待調(diào)度的3個用戶任務(wù)的創(chuàng)建和管理完全由TaskRB Scheduler任務(wù)來完成。TaskRB_Scheduler的運行分為兩個階段:首先是初始化階段,負(fù)責(zé)所有時間片任務(wù)的創(chuàng)立并確保其處于Suspend狀態(tài);然后是調(diào)度運行階段,如圖1所示。下面對照圖1對調(diào)度運行階段的各個步驟進(jìn)行描述。①TaskRB_Scheduler通過調(diào)用OSTaskResume使TaskRB_1處于Ready狀態(tài)(其他任務(wù)處于Suspend態(tài))。②TaskRB_Scheduler調(diào)用OSTimeDly釋放控制權(quán)進(jìn)入延時等待狀態(tài),延時參數(shù)即為TaskRB_1任務(wù)運行的時間片長度,此時唯一處于Ready態(tài)的用戶任務(wù)TaskRB_1獲得控制權(quán)進(jìn)入Running狀態(tài)。③OSTimeDly超時發(fā)生,TaskRB_Schedulcr處于Rcady態(tài)并且由于任務(wù)優(yōu)先級高于TaskRB_1搶占其控制權(quán),于是TaskRB_Scheduler進(jìn)入運行狀態(tài),TaskRB_1返回Ready態(tài)。④TaskRB_Scheduler調(diào)用OSTaskSuspend讓處于Ready態(tài)的TaskRB_1進(jìn)入Suspend狀態(tài),避免其競爭下一個時間片。⑤~⑧重復(fù)①~④步驟,對TaskRB_2分配運行時間片。⑨~重復(fù)①~④步驟,對TaskRB_3分配運行時間片。簡而言之,調(diào)度任務(wù)因為具有最高優(yōu)先級,可以根據(jù)時間片分配表啟動并打斷待調(diào)度的時間片任務(wù),雖然時間片任務(wù)優(yōu)先級各不相同,但通過確保僅有一個時間片任務(wù)處于Readsr態(tài)的方法,避免了不同時間片任務(wù)之間的競爭沖突。為簡化示意圖,并沒有標(biāo)注中斷ISR行為的影響,事實上ISR只能影響到任務(wù)時間片的長度而不會影響到任務(wù)片調(diào)度的流程;而對于時間片調(diào)度系統(tǒng)而言,通常都采用類似于前后臺系統(tǒng)的信號同步策略處理中斷數(shù)據(jù),這已經(jīng)不是本文討論的重點。2實現(xiàn)代碼

原理比較簡單,僅僅給出TaskRB_Scheduler部分代碼:
3應(yīng)用擴(kuò)展

有項目經(jīng)驗的人都深知Demo和產(chǎn)品有著天壤之別,這句話同樣適用于此時間片調(diào)度方案。在實際應(yīng)用中,我們還須關(guān)注到以下幾個方面。(1)如何與非時間片調(diào)度任務(wù)協(xié)同工作對于混合系統(tǒng)而言,作為時間片調(diào)度的任務(wù)通常都對實時性要求比較低,因此通常的做法是設(shè)置優(yōu)先級:實時任務(wù)優(yōu)先級>TaskRB_Sche duler>時間片任務(wù)>IDLE,時間片精度會會因為實時任務(wù)的搶占受到影響。(2)如何處理時間片任務(wù)中的critical_section critical section的處理很重要,我們一般不希望一個時間片任務(wù)在發(fā)送UART數(shù)據(jù)包的過程中被TaskRB_Scheduler暫時掐斷,但TaskRB_ Scheduler又的確無法預(yù)知時間片用戶的狀態(tài)。有兩種解決辦法:一是通過調(diào)度器上鎖,二是通過時間片任務(wù)和調(diào)度任務(wù)共享互斥量。顯然,調(diào)度器上鎖不是個好主意,會封鎖正常的任務(wù)切換,在上述的混合系統(tǒng)中簡直是不可想象的,但在純粹的時間片調(diào)度系統(tǒng)中不會帶來太多的麻煩。共享互斥量增加了系統(tǒng)資源的消耗,在混合系統(tǒng)中的運行時效率更高。(3)運行時配置TaskRB_Scheduler一方面是時間片的調(diào)度器,另一方面也是一個普通的μC/OS-II任務(wù),在實際項目中可以通過創(chuàng)建任務(wù)鏈表的方式維護(hù)管理納入時間片調(diào)度的用戶任務(wù),在運行時靈活地添加刪除任務(wù)列表以及調(diào)整時間片寬度。鑒于原理都很簡單,實現(xiàn)代碼不再贅述。

本站聲明: 本文章由作者或相關(guān)機(jī)構(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 手機(jī) 衛(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ā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

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

北京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ù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

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