亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種基于FreeRTOS實時系統(tǒng)改進(jìn)的時間片延遲調(diào)度算法的設(shè)計

        2019-11-05 07:45:15汪千松
        科技視界 2019年28期

        汪千松

        【摘 要】通過對FreeRTOS同優(yōu)先級任務(wù)的最后幾次執(zhí)行時間片進(jìn)行優(yōu)化,提出了改進(jìn)的時間片延遲調(diào)度算法,使任務(wù)在最后幾次執(zhí)行時不進(jìn)行時間片切換而繼續(xù)運行。改進(jìn)的調(diào)度算法在保證實時性的同時也大大提高了任務(wù)的執(zhí)行效率,增大了系統(tǒng)吞吐率。

        【關(guān)鍵詞】FreeRTOS;同優(yōu)先級;時間片

        中圖分類號: TP23 文獻(xiàn)標(biāo)識碼: A 文章編號: 2095-2457(2019)28-0043-002

        DOI:10.19694/j.cnki.issn2095-2457.2019.28.015

        0 引言

        FreeRTOS可采用搶占式和時間片輪轉(zhuǎn)混合的調(diào)度機制[1],其原先的基于時間片輪轉(zhuǎn)調(diào)度存在某些不足,當(dāng)同優(yōu)先級任務(wù)快速增多時,任務(wù)的頻繁切換會加大系統(tǒng)的業(yè)務(wù)和能量開銷,使任務(wù)具體結(jié)束時間延長。改進(jìn)的時間片延遲調(diào)度算法通過直接讓任務(wù)在最后幾次執(zhí)行時不進(jìn)行時間片切換而繼續(xù)運行結(jié)束,提前時間點讓出CPU給其他任務(wù)運行,減少任務(wù)頻繁切換的次數(shù)。當(dāng)高優(yōu)先級任務(wù)到來時仍然能及時響應(yīng)執(zhí)行,在保證實時性的同時也提高了整體任務(wù)的執(zhí)行效率,增大了系統(tǒng)吞吐率。

        1 算法原理

        1.1 FreeRTOS默認(rèn)時間片調(diào)度算法

        FreeRTOS操作系統(tǒng)此前的同優(yōu)先級的任務(wù)時間片輪轉(zhuǎn)調(diào)度算法將任務(wù)的處理時間劃分為一個固定的時間片大小,時間片用完將進(jìn)行切換,而且時間片的值則固定設(shè)置為一個系統(tǒng)時鐘節(jié)拍。同優(yōu)先級的任務(wù)就緒列表中各個任務(wù)按排列的順序輪流占用固定時間的CPU資源[2]。當(dāng)某個任務(wù)的時間片用完時,而本身的任務(wù)沒有結(jié)束時,其必須讓出CPU的使用權(quán),使自身進(jìn)入同優(yōu)先級就緒列表的尾部中,等待下次輪轉(zhuǎn)的再次調(diào)度。同時調(diào)度器運用調(diào)度算法又會去選擇同優(yōu)先級就緒列表中處于頭部的就緒任務(wù),分配一個時間片,讓其占用CPU資源而運行。也就是說一個任務(wù)到了時間點即使沒有運行完成也必須讓出CPU的使用權(quán)切換出去,給就緒的其他任務(wù)繼續(xù)運行的機會。

        1.2 改進(jìn)的時間片延遲調(diào)度算法

        改進(jìn)后的算法其原理為在時間片輪轉(zhuǎn)調(diào)度的情況下,對任務(wù)的最后幾次執(zhí)行時間片(數(shù)值可調(diào)整)進(jìn)行優(yōu)化。也就是當(dāng)任務(wù)是按照時間片輪轉(zhuǎn)調(diào)度算法進(jìn)行時,當(dāng)任務(wù)的最后幾次運行時間少于時間片數(shù)值的1.5倍(數(shù)值可調(diào)整)時,該時間片調(diào)度算法不發(fā)生任務(wù)的切換操作,使任務(wù)繼續(xù)占用CPU的資源,從而使任務(wù)提前結(jié)束完成,讓其他的任務(wù)有更多執(zhí)行的機會。

        2 算法設(shè)計實現(xiàn)

        2.1 任務(wù)運行時間設(shè)計

        FreeRTOS中在任務(wù)創(chuàng)建的過程中并沒有指定任務(wù)運行的時間大小,只是根據(jù)自己需要而進(jìn)行任務(wù)的停止刪除,其主要原因是任務(wù)的數(shù)據(jù)結(jié)構(gòu)中并沒有記錄任務(wù)執(zhí)行時間的變量?;诖瞬蛔?,我們必須在任務(wù)的數(shù)據(jù)結(jié)構(gòu)中添加相應(yīng)的變量來記錄任務(wù)執(zhí)行時間,現(xiàn)有如下的改進(jìn)方案。

        在任務(wù)控制塊里添加相應(yīng)的時間相關(guān)變量。我們知道任務(wù)控制塊是記錄著一個任務(wù)一些屬性,將任務(wù)執(zhí)行時間相關(guān)的變量加入到任務(wù)控制塊中可使代碼看起來更直觀,增強可讀性。至此,我們在任務(wù)控制塊中添加了三個與任務(wù)時間相關(guān)變量。分別為剩余執(zhí)行時間變量ulRemainTimeSlice、初始化執(zhí)行時間ulReloadTimeSlice、任務(wù)不切換連續(xù)執(zhí)行時間片ulThresholdTimeSlice。當(dāng)ulThresholdTimeSlice值為0時代表該改進(jìn)算法無效,與之前的調(diào)度算法功能相同。在添加變量的同時再添加相對應(yīng)的函數(shù)來設(shè)置和獲取對應(yīng)變量的值。在任務(wù)執(zhí)行過程時,還添加了任務(wù)剩余時間遞減函數(shù),具體執(zhí)行的操作為使任務(wù)執(zhí)行時間片遞減。

        2.2 任務(wù)切換設(shè)計

        在任務(wù)的調(diào)度過程中FreeRTOS的任務(wù)切換的觸發(fā)場合有執(zhí)行一個系統(tǒng)調(diào)用和系統(tǒng)滴答定時器中斷兩種方式。而在時間片輪轉(zhuǎn)調(diào)度的正常情況下一般是發(fā)生系統(tǒng)滴答定時器中斷而發(fā)生任務(wù)切換。之前的時間片輪轉(zhuǎn)調(diào)度是只要時間到了就會發(fā)生任務(wù)的切換操作,基于該切換的不足,我們改進(jìn)的算法必須使調(diào)度器滿足必要的條件后不發(fā)生切換繼而繼續(xù)運行?,F(xiàn)有的改進(jìn)方案如下。

        在滴答定時器中斷服務(wù)函數(shù)SysTic_Handler()中,其會調(diào)用FreeRTOS的API函數(shù)xPortSysTickHandler(),其在文件port.c中,在xPortSysTickHandler()函數(shù)中會發(fā)生任務(wù)的切換調(diào)度操作。而這個任務(wù)切換調(diào)度操作是有條件的,其需要滿足xTaskIncrementTick()!= pdFAlSE,而函數(shù)xTaskIncrementTick()一般用于檢測當(dāng)前任務(wù)所對應(yīng)的任務(wù)優(yōu)先級下是否還有其他任務(wù),有的話就返回pdTRUE。基于此,我們在創(chuàng)建同優(yōu)先級任務(wù)的時候一般要多于2個,這樣方便測試對比。在該條件成立的情況下,我們就可以在內(nèi)部進(jìn)行適當(dāng)?shù)奶幚?,使任?wù)滿足指定的條件需求后才進(jìn)行任務(wù)的切換操作。修改后的void xPortSysTickHandler()函數(shù)部分代碼如下所示:

        xTaskDecreaseRemainTimeSlice();

        if( 0 != xTaskGetThresholdTimeSlice() ) {

        if(xTaskGetRemainTimeSlice()>xTaskGetThreshold TimeS lice() ) {

        /* A context switch is required.Context switching is performed in

        the PendSV interrupt.Pend the PendSV interru pt.*/

        portNVIC_INT_CTRL_REG=portNVIC_PENDSVSE T_ BIT;

        } else if ( 0 == xTaskGetRemainTimeSlice() ){

        /* ... */

        }

        } else {

        portNVIC_INT_CTRL_REG=portNVIC_PENDSVSE T_BIT;

        }

        由上可以看出,當(dāng)函數(shù)xTaskIncrementTick()成立時,我們首先調(diào)用xTaskDecreaseRemainTimeSlice()函數(shù)對當(dāng)前任務(wù)的時間片大小進(jìn)行遞減操作,同時接下來調(diào)用xTaskGetThresholdTimeSlice()函數(shù)來判斷設(shè)置的需要延遲的時間片大小,如果為零的話,將和往常一樣進(jìn)行任務(wù)的切換操作。而如果不為零的話,則繼續(xù)進(jìn)行相對應(yīng)的處理,其首先是判斷剩余的執(zhí)行時間片大小是否大于設(shè)置的需要延遲的時間片的大小,如果大于的話,說明任務(wù)不需要繼續(xù)延遲,進(jìn)而發(fā)生切換操作。而如果不大于的話,說明到了需要進(jìn)行延遲的時間點,任務(wù)不發(fā)生切換,繼續(xù)占用CPU資源執(zhí)行代碼。當(dāng)任務(wù)的剩余時間片大小等于零的時候,說明任務(wù)需要執(zhí)行的時間片已經(jīng)全部用完,繼而可以刪除任務(wù)將其停止,讓出CPU資源給其他任務(wù)運行。

        3 算法性能分析

        下面對FreeRTOS改進(jìn)的時間片延遲調(diào)度算法做基本的性能分析。假設(shè)有三個同優(yōu)先級的任務(wù)T1,T2,T3。其所需的執(zhí)行時間分別為100,50,60,單位為一個時間片大小。其中為了顯示的效果明顯,將時間片周期設(shè)置為了50ms。則改進(jìn)的時間片延遲調(diào)度算法在以下各種情況中行結(jié)果如表1所示。

        表中A為改進(jìn)后當(dāng)任務(wù)都延遲3個時間片運行得到的結(jié)果;B為改進(jìn)后當(dāng)T1,T2,T3分別延遲1,2,3個時間片時運行得到的結(jié)果;C為改進(jìn)后當(dāng)T1,T2,T3分別延遲3,2,1個時間片時運行得到的結(jié)果。

        由表中的數(shù)據(jù)結(jié)果分析可得當(dāng)任務(wù)最后幾次執(zhí)行時間(數(shù)值可根據(jù)實際情況調(diào)整)不發(fā)生任務(wù)切換而繼續(xù)運行時,任務(wù)能比原先提前時間完成。即改進(jìn)后時間片輪轉(zhuǎn)調(diào)度優(yōu)化算法能夠減少任務(wù)的調(diào)度次數(shù),縮短CPU周轉(zhuǎn)時間,故而可以降低任務(wù)實際完成時間,同時減少了系統(tǒng)業(yè)務(wù)開銷和能量開銷,提升系統(tǒng)運行效率,使系統(tǒng)的性能得到了一定的提高。

        4 結(jié)論

        改進(jìn)的時間片輪轉(zhuǎn)調(diào)度算法在任務(wù)最后幾次執(zhí)行時可以減少切換次數(shù),縮短CPU周轉(zhuǎn)時間,提高系統(tǒng)效率,不管是用在通用操作系統(tǒng)還是在實時操作系統(tǒng)上,都具有實際的應(yīng)用價值[4],但其仍存在不足,當(dāng)任務(wù)的個數(shù)較少且延時時間片比較長時,勢必會影響其他任務(wù)的運行,雖然執(zhí)行的任務(wù)可以提前結(jié)束,但其他同優(yōu)先級任務(wù)某些時候可能也需要適當(dāng)?shù)膶崟r性要求,這樣由于任務(wù)得不到適當(dāng)?shù)捻憫?yīng)而使系統(tǒng)表現(xiàn)得整體性能看起來而有所降低。所以進(jìn)一步動態(tài)分析選取任務(wù)的延時時間片大小是一個值得深入研究的問題,當(dāng)任務(wù)的延遲時間選取合適時,將對系統(tǒng)的效率帶來大大的提升。

        【參考文獻(xiàn)】

        [1]Guan F,Peng L,Perneel L,et al.Open source FreeRTOS as a case study in real-time operating system evolution[J].Journal of Systems and Software,2016.

        [2]朱迪.FreeRTOS實時操作系統(tǒng)任務(wù)調(diào)度優(yōu)化的研究與實現(xiàn)[D].南京郵電大學(xué),2015.

        [3]左中凱.FreeRTOS源碼詳解與應(yīng)用開發(fā)---基于STM32.北京:北京航空航天大學(xué)出版社,2017.

        [4]肖建明,張向利.一種改進(jìn)的時間片輪轉(zhuǎn)調(diào)度算法[J].計算機應(yīng)用,2005.

        日本在线观看一二三区| 波多野结衣有码| 音影先锋色天堂av电影妓女久久| 国内精品女同一区二区三区| 日韩少妇人妻中文字幕| 国产顶级熟妇高潮xxxxx| 性导航app精品视频| 日韩色久悠悠婷婷综合| 亚洲乱码中文字幕在线| 女人被狂c躁到高潮视频| 日韩AV无码免费二三区| 国产成人久久综合第一区| 亚洲一区二区三区特色视频| 久久精品噜噜噜成人| 亚洲AV无码成人品爱| 中文字幕人妻在线少妇完整版| 麻豆精品导航| 末发育娇小性色xxxxx视频| 少妇的诱惑免费在线观看| 日本免费一区二区久久久| 国产精品人人做人人爽| 六月丁香婷婷色狠狠久久| 少妇av免费在线播放| 日韩久久久黄色一级av| 熟女高潮av一区二区| 色狠狠色狠狠综合天天| 少妇高潮惨叫久久久久久| 男人的天堂av一二三区| 国产午夜亚洲精品国产成人av| 国产精品久久久久久久久岛| 国产激情视频在线观看首页| av中文字幕性女高清在线| 永久亚洲成a人片777777| 国产精品亚洲日韩欧美色窝窝色欲| 亚洲女同一区二区久久| 一个人午夜观看在线中文字幕| 丰满少妇人妻久久久久久| 国产美女遭强高潮网站| 亚洲乱码中文字幕综合| 日韩亚洲精品中文字幕在线观看| 好大好深好猛好爽视频免费|