欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種時(shí)間觸發(fā)的嵌入式任務(wù)調(diào)度裝置與方法與流程

文檔序號(hào):12363143閱讀:429來源:國(guó)知局
一種時(shí)間觸發(fā)的嵌入式任務(wù)調(diào)度裝置與方法與流程
本發(fā)明屬于安全關(guān)鍵計(jì)算機(jī)使用技術(shù),具體涉及一種安全關(guān)鍵領(lǐng)域下基于時(shí)間觸發(fā)的嵌入式任務(wù)調(diào)度方法。
背景技術(shù)
:在航空、航天等安全關(guān)鍵領(lǐng)域,由于其中部分的子系統(tǒng)功能如果失效,有可能造成機(jī)毀人亡的災(zāi)難性事故,因此對(duì)于這一類子系統(tǒng),實(shí)現(xiàn)其功能的軟硬件模塊的確定性,必須滿足非常高的標(biāo)準(zhǔn)。隨著傳感器技術(shù)、自動(dòng)化控制技術(shù)、數(shù)字化技術(shù)的不斷發(fā)展,航空、航天、汽車系統(tǒng)實(shí)現(xiàn)的功能越來越趨向智能化,讓操作者更多的關(guān)注更高層面的控制,從而導(dǎo)致這些領(lǐng)域的安全關(guān)鍵系統(tǒng)也變得越來越復(fù)雜,往往需要多個(gè)計(jì)算機(jī)子系統(tǒng)組成分布式網(wǎng)絡(luò),協(xié)同工作,共同實(shí)現(xiàn)一個(gè)頂層系統(tǒng)級(jí)功能需求。在此要求下,傳統(tǒng)的基于事件響應(yīng)型的計(jì)算機(jī)任務(wù)處理架構(gòu)就不能滿足安全關(guān)鍵系統(tǒng)對(duì)于任務(wù)確定性的要求。傳統(tǒng)的嵌入式系統(tǒng),從追求實(shí)時(shí)響應(yīng)性能出發(fā),以特定事件的發(fā)生作為調(diào)度的觸發(fā)源,其相關(guān)理論和思想已經(jīng)得到廣泛的研究與應(yīng)用。然而,外部事件的不可預(yù)知性,將導(dǎo)致事件型調(diào)度的分析極為復(fù)雜,其應(yīng)用場(chǎng)景的驗(yàn)證完備性很難達(dá)到。即使通過復(fù)雜的保護(hù)性設(shè)計(jì),滿足系統(tǒng)的可靠性要求,但對(duì)于復(fù)雜應(yīng)用的功能改變或升級(jí),其分析、驗(yàn)證和維護(hù)成本,都將隨之上升。因此在安全關(guān)鍵領(lǐng)域提出了時(shí)間觸發(fā)架構(gòu)。時(shí)間觸發(fā)架構(gòu)以時(shí)間觸發(fā)總線作為構(gòu)建分布式系統(tǒng)的基礎(chǔ),各個(gè)分布式節(jié)點(diǎn)的任務(wù)執(zhí)行,以及各節(jié)點(diǎn)之間的通訊都遵循一定的時(shí)間規(guī)劃表,以一種靜態(tài)離線規(guī)劃的方式統(tǒng)籌定義系統(tǒng)功能的完成方式。在時(shí)間觸發(fā)架構(gòu)的要求下,基于事件的傳統(tǒng)嵌入式操作系統(tǒng),已經(jīng)不能滿足時(shí)間觸發(fā)分布式節(jié)點(diǎn)的任務(wù)調(diào)度要求,必須設(shè)計(jì)一種新的任務(wù)調(diào)度方式來滿足安全關(guān)鍵時(shí)間觸發(fā)系統(tǒng)的確定性需求。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是:為解決基于時(shí)間觸發(fā)架構(gòu)的安全關(guān)鍵系統(tǒng),對(duì)于分布式計(jì)算機(jī)節(jié)點(diǎn)中任務(wù)執(zhí)行確定性要求,而設(shè)計(jì)一種嵌入式任務(wù)調(diào)度方法。提供一種基于時(shí)間觸發(fā)的任務(wù)調(diào)度裝置,其特征在于,包括:靜態(tài)時(shí)間規(guī)劃表存儲(chǔ)模塊,用來存儲(chǔ)預(yù)先定義的靜態(tài)時(shí)間規(guī)劃表,任務(wù)的執(zhí)行時(shí)序是按照所述的靜態(tài)時(shí)間規(guī)劃表來運(yùn)行的;分布式總線時(shí)間中斷模塊,用來按小幀周期引發(fā)分布式節(jié)點(diǎn)的同步調(diào)度;計(jì)算機(jī)本地時(shí)鐘中斷模塊,用來管理每一個(gè)任務(wù)本周期允許執(zhí)行的時(shí)間;任務(wù)調(diào)度器模塊,用于觸發(fā)分布式總線時(shí)間中斷、計(jì)算機(jī)本地時(shí)鐘中斷,并根據(jù)靜態(tài)時(shí)間規(guī)劃表選擇當(dāng)前應(yīng)該運(yùn)行的任務(wù),監(jiān)控任務(wù)的運(yùn)行時(shí)間,并根據(jù)任務(wù)允許的執(zhí)行時(shí)間調(diào)整計(jì)算機(jī)本地時(shí)鐘中斷的計(jì)數(shù)值。提供一種基于時(shí)間觸發(fā)的任務(wù)調(diào)度方法,其特征在于,包括以下步驟:步驟一:在計(jì)算機(jī)系統(tǒng)執(zhí)行之前,給出全局總線周期時(shí)間、根據(jù)計(jì)算機(jī)節(jié)點(diǎn)功能劃分出各個(gè)任務(wù)、并得到每個(gè)任務(wù)執(zhí)行周期、每個(gè)任務(wù)最差執(zhí)行時(shí)間,其中全局總線的周期時(shí)間被稱為小幀周期,執(zhí)行每個(gè)任務(wù)的周期都為小幀周期的整數(shù)倍,在計(jì)算機(jī)系統(tǒng)運(yùn)行過程中,由全局總線時(shí)間中斷模塊和計(jì)算機(jī)本地時(shí)鐘中斷模塊作為計(jì)算機(jī)節(jié)點(diǎn)任務(wù)調(diào)度的中斷源;步驟二:根據(jù)每個(gè)任務(wù)的執(zhí)行周期以及每個(gè)任務(wù)的最差執(zhí)行時(shí)間得到靜態(tài)時(shí)間規(guī)劃表,在靜態(tài)時(shí)間規(guī)劃表中,包括每個(gè)任務(wù)調(diào)度時(shí)刻點(diǎn)即將啟動(dòng)的任務(wù)名稱、該任務(wù)本次啟動(dòng)后執(zhí)行的時(shí)間、該任務(wù)調(diào)度時(shí)刻點(diǎn)是否為前一個(gè)任務(wù)死限點(diǎn)、該任務(wù)調(diào)度時(shí)刻點(diǎn)是否為下一個(gè)任務(wù)起始點(diǎn);所有需要執(zhí)行的任務(wù)在時(shí)間規(guī)劃表中按照順序排列步驟三:在系統(tǒng)運(yùn)行開始后,使用全局總線時(shí)間中斷模塊來啟動(dòng)任務(wù)調(diào)度,在全局總線時(shí)間中斷模塊的響應(yīng)函數(shù)中,按照時(shí)間規(guī)劃表的第一個(gè)時(shí)刻點(diǎn)調(diào)度第一個(gè)任務(wù)的執(zhí)行;步驟四:按照靜態(tài)時(shí)間規(guī)劃表中該時(shí)刻點(diǎn)的任務(wù)本次執(zhí)行時(shí)間,設(shè)置計(jì)算機(jī)本地時(shí)鐘中斷的中斷計(jì)時(shí)時(shí)間,啟動(dòng)計(jì)算機(jī)本地時(shí)鐘中斷的計(jì)時(shí)后,調(diào)度任務(wù)的執(zhí)行;步驟五:在計(jì)算機(jī)本地時(shí)鐘中斷或全局總線時(shí)間中斷到來時(shí),判斷被調(diào)度任務(wù)是否已經(jīng)執(zhí)行結(jié)束,若已結(jié)束則判定該任務(wù)未超時(shí),該任務(wù)結(jié)束后調(diào)度器將該任務(wù)置為執(zhí)行就緒狀態(tài),將靜態(tài)時(shí)間規(guī)劃表中下一個(gè)任務(wù)調(diào)度時(shí)刻點(diǎn)變?yōu)楫?dāng)前使用的任務(wù)調(diào)度時(shí)刻點(diǎn)后,進(jìn)入步驟七,若未結(jié)束,則進(jìn)入步驟六;步驟六:將靜態(tài)時(shí)間規(guī)劃表中下一個(gè)任務(wù)調(diào)度時(shí)刻點(diǎn)變?yōu)楫?dāng)前使用的任務(wù)調(diào)度時(shí)刻點(diǎn),檢查該任務(wù)調(diào)度時(shí)刻點(diǎn)是否為前一個(gè)任務(wù)死限點(diǎn),若是則可以判定該任務(wù)超時(shí),進(jìn)行該任務(wù)相應(yīng)的超時(shí)故障處理,以保證系統(tǒng)運(yùn)行的確定性,若不是前一個(gè)任務(wù)死限點(diǎn),將被調(diào)度任務(wù)置被搶占狀態(tài),進(jìn)入步驟七;步驟七:檢查當(dāng)前調(diào)度時(shí)刻點(diǎn)是否為下一個(gè)任務(wù)起始點(diǎn),若是則按照時(shí)間規(guī)劃表的當(dāng)前時(shí)刻點(diǎn)調(diào)度下一個(gè)任務(wù)的執(zhí)行并返回到步驟四,若否進(jìn)入步驟八;步驟八:判斷當(dāng)前任務(wù)的狀態(tài),若是被搶占狀態(tài),則按照時(shí)間規(guī)劃表的當(dāng)前時(shí)刻點(diǎn)調(diào)度下一個(gè)任務(wù)的執(zhí)行并回到步驟四,若是執(zhí)行就緒狀態(tài),則此時(shí)不按照靜態(tài)時(shí)間規(guī)劃表的當(dāng)前時(shí)刻點(diǎn)進(jìn)行下一個(gè)任務(wù)的調(diào)度,而將后臺(tái)空閑任務(wù)作為即將調(diào)度的任務(wù),返回到步驟四。進(jìn)一步的,步驟五中當(dāng)任務(wù)執(zhí)行結(jié)束后,此時(shí)還未到時(shí)間規(guī)劃表中下一個(gè)調(diào)度時(shí)刻,則調(diào)度器將選擇后臺(tái)空閑任務(wù)作為此時(shí)的調(diào)度任務(wù),以保證應(yīng)用任務(wù)確定的按照時(shí)間規(guī)劃表定義的時(shí)刻啟動(dòng)執(zhí)行;進(jìn)一步的,在中斷處理函數(shù)的任務(wù)調(diào)度過程中,若當(dāng)前運(yùn)行任務(wù)狀態(tài)、即將運(yùn)行任務(wù)狀態(tài)以及時(shí)間規(guī)劃表中當(dāng)前調(diào)度任務(wù)時(shí)刻點(diǎn)屬性,出現(xiàn)超出之前描述的狀態(tài)組合時(shí),認(rèn)為當(dāng)前的計(jì)算機(jī)運(yùn)行故障;進(jìn)一步的,步驟四中,判斷按照靜態(tài)時(shí)間規(guī)劃表下一個(gè)任務(wù)執(zhí)行時(shí)間結(jié)束后,是否達(dá)到全局總線時(shí)間中斷模塊的周期,若達(dá)到,則進(jìn)行下一個(gè)任務(wù)調(diào)度時(shí),不需要按照靜態(tài)時(shí)間規(guī)劃表設(shè)置計(jì)算機(jī)本地時(shí)鐘中斷的中斷定時(shí)時(shí)間,不需要啟動(dòng)計(jì)算機(jī)本地時(shí)鐘中斷的計(jì)時(shí),即進(jìn)行下一任務(wù)調(diào)度;通過本調(diào)度方法,可以確定性的預(yù)知系統(tǒng)運(yùn)行中的某一個(gè)時(shí)刻,各分布式節(jié)點(diǎn)內(nèi)部應(yīng)該運(yùn)行的任務(wù),從而保證任務(wù)在運(yùn)行中若出現(xiàn)超時(shí)故障,能夠最快時(shí)間得到上報(bào)并進(jìn)行相應(yīng)處理,從而提高系統(tǒng)的安全可靠性。附圖說明為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本調(diào)度裝置的組成結(jié)構(gòu)圖。圖2為本調(diào)度方法的基本功能流程圖。圖3為使用本調(diào)度方法的靜態(tài)時(shí)間規(guī)劃表,得到的理想的任務(wù)執(zhí)行序列;圖4為本調(diào)度方法處理過程中處理器資源使用的一種時(shí)序圖,要來標(biāo)明任務(wù)按照時(shí)間規(guī)劃表被調(diào)度并及時(shí)結(jié)束的情況;圖5為本調(diào)度方法處理過程中處理器資源使用的一種時(shí)序圖,來標(biāo)明任務(wù)按照時(shí)間規(guī)劃表被搶占,并恢復(fù)運(yùn)行的情況;圖6為本調(diào)度方法處理過程中處理器資源使用的一種時(shí)序圖,來標(biāo)明被搶占任務(wù)提前執(zhí)行結(jié)束,不需要恢復(fù)運(yùn)行的情況;具體實(shí)施方式如圖1所示,提供一種基于時(shí)間觸發(fā)的任務(wù)調(diào)度裝置,其特征在于,包括:靜態(tài)時(shí)間規(guī)劃表存儲(chǔ)模塊,用來存儲(chǔ)預(yù)先定義的靜態(tài)時(shí)間規(guī)劃表,任務(wù)的執(zhí)行時(shí)序是按照所述的靜態(tài)時(shí)間規(guī)劃表來運(yùn)行的;分布式總線時(shí)間中斷模塊,用來按小幀周期引發(fā)分布式節(jié)點(diǎn)的同步調(diào)度,在本實(shí)施例中,可以為ARINC659總線中斷,或者1394B總線中斷;計(jì)算機(jī)本地時(shí)鐘中斷模塊,用來管理每一個(gè)任務(wù)本周期允許執(zhí)行的時(shí)間;任務(wù)調(diào)度器模塊,用于觸發(fā)分布式總線時(shí)間中斷、計(jì)算機(jī)本地時(shí)鐘中斷,并根據(jù)靜態(tài)時(shí)間規(guī)劃表選擇當(dāng)前應(yīng)該運(yùn)行的任務(wù),監(jiān)控任務(wù)的運(yùn)行時(shí)間,并根據(jù)任務(wù)允許的執(zhí)行時(shí)間調(diào)整計(jì)算機(jī)本地時(shí)鐘中斷的計(jì)數(shù)值。如圖2所示,提供一種基于時(shí)間觸發(fā)的任務(wù)調(diào)度方法,其特征在于,包括以下步驟:步驟一:在計(jì)算機(jī)系統(tǒng)執(zhí)行之前,給出全局總線周期時(shí)間、根據(jù)計(jì)算機(jī)節(jié)點(diǎn)功能劃分出各個(gè)任務(wù)、并得到每個(gè)任務(wù)執(zhí)行周期、每個(gè)任務(wù)最差執(zhí)行時(shí)間,其中全局總線的周期時(shí)間被稱為小幀周期,執(zhí)行每個(gè)任務(wù)的周期都為小幀周期的整數(shù)倍,在計(jì)算機(jī)系統(tǒng)運(yùn)行過程中,由全局總線時(shí)間中斷模塊和計(jì)算機(jī)本地時(shí)鐘中斷模塊作為計(jì)算機(jī)節(jié)點(diǎn)任務(wù)調(diào)度的中斷源;步驟二:根據(jù)每個(gè)任務(wù)的執(zhí)行周期以及每個(gè)任務(wù)的最差執(zhí)行時(shí)間得到靜態(tài)時(shí)間規(guī)劃表,在靜態(tài)時(shí)間規(guī)劃表中,包括每個(gè)任務(wù)調(diào)度時(shí)刻點(diǎn)即將啟動(dòng)的任務(wù)名稱、該任務(wù)本次啟動(dòng)后執(zhí)行的時(shí)間、該任務(wù)調(diào)度時(shí)刻點(diǎn)是否為前一個(gè)任務(wù)死限點(diǎn)、該任務(wù)調(diào)度時(shí)刻點(diǎn)是否為下一個(gè)任務(wù)起始點(diǎn);所有需要執(zhí)行的任務(wù)在時(shí)間規(guī)劃表中按照順序排列步驟三:在系統(tǒng)運(yùn)行開始后,使用全局總線時(shí)間中斷模塊來啟動(dòng)任務(wù)調(diào)度,在全局總線時(shí)間中斷模塊的響應(yīng)函數(shù)中,按照時(shí)間規(guī)劃表的第一個(gè)時(shí)刻點(diǎn)調(diào)度第一個(gè)任務(wù)的執(zhí)行;步驟四:按照靜態(tài)時(shí)間規(guī)劃表中該時(shí)刻點(diǎn)的任務(wù)本次執(zhí)行時(shí)間,設(shè)置計(jì)算機(jī)本地時(shí)鐘中斷的中斷計(jì)時(shí)時(shí)間,啟動(dòng)計(jì)算機(jī)本地時(shí)鐘中斷的計(jì)時(shí)后,調(diào)度任務(wù)的執(zhí)行;步驟五:在計(jì)算機(jī)本地時(shí)鐘中斷或全局總線時(shí)間中斷到來時(shí),判斷被調(diào)度任務(wù)是否已經(jīng)執(zhí)行結(jié)束,若已結(jié)束則判定該任務(wù)未超時(shí),該任務(wù)結(jié)束后調(diào)度器將該任務(wù)置為執(zhí)行就緒狀態(tài),將靜態(tài)時(shí)間規(guī)劃表中下一個(gè)任務(wù)調(diào)度時(shí)刻點(diǎn)變?yōu)楫?dāng)前使用的任務(wù)調(diào)度時(shí)刻點(diǎn)后,進(jìn)入步驟七,若未結(jié)束,則進(jìn)入步驟六;步驟六:將靜態(tài)時(shí)間規(guī)劃表中下一個(gè)任務(wù)調(diào)度時(shí)刻點(diǎn)變?yōu)楫?dāng)前使用的任務(wù)調(diào)度時(shí)刻點(diǎn),檢查該任務(wù)調(diào)度時(shí)刻點(diǎn)是否為前一個(gè)任務(wù)死限點(diǎn),若是則可以判定該任務(wù)超時(shí),進(jìn)行該任務(wù)相應(yīng)的超時(shí)故障處理,以保證系統(tǒng)運(yùn)行的確定性,若不是前一個(gè)任務(wù)死限點(diǎn),將被調(diào)度任務(wù)置被搶占狀態(tài),進(jìn)入步驟七;步驟七:檢查當(dāng)前調(diào)度時(shí)刻點(diǎn)是否為下一個(gè)任務(wù)起始點(diǎn),若是則按照時(shí)間規(guī)劃表的當(dāng)前時(shí)刻點(diǎn)調(diào)度下一個(gè)任務(wù)的執(zhí)行并返回到步驟四,若否進(jìn)入步驟八;步驟八:判斷當(dāng)前任務(wù)的狀態(tài),若是被搶占狀態(tài),則按照時(shí)間規(guī)劃表的當(dāng)前時(shí)刻點(diǎn)調(diào)度下一個(gè)任務(wù)的執(zhí)行并回到步驟四,若是執(zhí)行就緒狀態(tài),則此時(shí)不按照靜態(tài)時(shí)間規(guī)劃表的當(dāng)前時(shí)刻點(diǎn)進(jìn)行下一個(gè)任務(wù)的調(diào)度,而將后臺(tái)空閑任務(wù)作為即將調(diào)度的任務(wù),返回到步驟四。進(jìn)一步的,步驟五中當(dāng)任務(wù)執(zhí)行結(jié)束后,此時(shí)還未到時(shí)間規(guī)劃表中下一個(gè)調(diào)度時(shí)刻,則調(diào)度器將選擇后臺(tái)空閑任務(wù)作為此時(shí)的調(diào)度任務(wù),以保證應(yīng)用任務(wù)確定的按照時(shí)間規(guī)劃表定義的時(shí)刻啟動(dòng)執(zhí)行;進(jìn)一步的,在中斷處理函數(shù)的任務(wù)調(diào)度過程中,若當(dāng)前運(yùn)行任務(wù)狀態(tài)、即將運(yùn)行任務(wù)狀態(tài)以及時(shí)間規(guī)劃表中當(dāng)前調(diào)度任務(wù)時(shí)刻點(diǎn)屬性,出現(xiàn)超出之前描述的狀態(tài)組合時(shí),認(rèn)為當(dāng)前的計(jì)算機(jī)運(yùn)行故障;進(jìn)一步的,步驟四中,判斷按照靜態(tài)時(shí)間規(guī)劃表下一個(gè)任務(wù)執(zhí)行時(shí)間結(jié)束后,是否達(dá)到全局總線時(shí)間中斷模塊的周期,若達(dá)到,則進(jìn)行下一個(gè)任務(wù)調(diào)度時(shí),不需要按照靜態(tài)時(shí)間規(guī)劃表設(shè)置計(jì)算機(jī)本地時(shí)鐘中斷的中斷定時(shí)時(shí)間,不需要啟動(dòng)計(jì)算機(jī)本地時(shí)鐘中斷的計(jì)時(shí),即進(jìn)行下一任務(wù)調(diào)度;結(jié)合附圖,以一個(gè)實(shí)例詳細(xì)描述技術(shù)方案如下:一個(gè)系統(tǒng),其分布式總線傳輸周期為10ms。單個(gè)計(jì)算機(jī)節(jié)點(diǎn),根據(jù)功能分配和性能要求,將運(yùn)行其上的任務(wù)分為3個(gè),任務(wù)各自的運(yùn)行周期及最差運(yùn)行時(shí)間如下表:任務(wù)名任務(wù)周期任務(wù)最差執(zhí)行時(shí)間task110ms2task220ms6task350ms9其中可見,小幀周期等于總線傳輸周期10ms,三個(gè)任務(wù)的任務(wù)周期時(shí)間均為小幀周期時(shí)間的整數(shù)倍。調(diào)度周期為三個(gè)任務(wù)周期的最小公倍數(shù),即100ms。三個(gè)任務(wù)的執(zhí)行關(guān)系每100ms重復(fù)一次,因此僅需要完成100ms之內(nèi)的靜態(tài)時(shí)間規(guī)劃。根據(jù)此任務(wù)開銷,進(jìn)行任務(wù)的靜態(tài)時(shí)間規(guī)劃。基于單調(diào)速率的調(diào)度方式,結(jié)合總線通訊時(shí)間,得到的靜態(tài)時(shí)間規(guī)劃表如下:如上表,除了應(yīng)用層的3個(gè)任務(wù)之外,在剩余的時(shí)間規(guī)劃空閑后臺(tái)任務(wù)taskIdle。其中,“當(dāng)前時(shí)刻點(diǎn)是否為前一個(gè)任務(wù)死限點(diǎn)”這一屬性,標(biāo)明當(dāng)前時(shí)刻是否需要調(diào)度器進(jìn)行任務(wù)的超時(shí)檢查,“當(dāng)前時(shí)刻點(diǎn)是否為下一個(gè)任務(wù)起始點(diǎn)”這一屬性,標(biāo)明當(dāng)前時(shí)刻調(diào)度器是否需要按照時(shí)間規(guī)劃表調(diào)度下一個(gè)任務(wù)。三個(gè)任務(wù)周期的最小公倍數(shù)為100ms,因此靜態(tài)時(shí)間規(guī)劃表需描述100ms內(nèi)所有任務(wù)調(diào)度的時(shí)刻點(diǎn),下一個(gè)100ms重復(fù)執(zhí)行此調(diào)度序列。根據(jù)靜態(tài)時(shí)間規(guī)劃得到的任務(wù)執(zhí)行序列如圖3所示。作為本發(fā)明的嵌入式任務(wù)調(diào)度裝置,除包括以上靜態(tài)時(shí)間規(guī)劃表之外,還包括一個(gè)總線時(shí)間中斷A,該中斷周期為10ms;還包括一個(gè)計(jì)算機(jī)內(nèi)部時(shí)鐘中斷B,該時(shí)鐘中斷的精度能夠達(dá)到1us,且可可在不打斷時(shí)鐘計(jì)數(shù)的情況下,隨時(shí)讀取該時(shí)鐘當(dāng)前的計(jì)數(shù)值;還包括一個(gè)任務(wù)調(diào)度模塊,該模塊運(yùn)行在總線時(shí)間中斷A和內(nèi)部時(shí)鐘中斷B的中斷響應(yīng)函數(shù)中,完成任務(wù)調(diào)度。在用戶完成各任務(wù)的創(chuàng)建后,各任務(wù)處于執(zhí)行就緒狀態(tài)。處理調(diào)度器開啟總線時(shí)間中斷A啟動(dòng)調(diào)度。在中斷A的服務(wù)響應(yīng)函數(shù)中,取出時(shí)間規(guī)劃表中的調(diào)度點(diǎn)1,由于首次調(diào)度沒有前一個(gè)任務(wù),因此不進(jìn)行前一個(gè)任務(wù)狀態(tài)的檢查,此時(shí)待調(diào)度任務(wù)task1處于執(zhí)行就緒狀態(tài),滿足任務(wù)起始時(shí)刻點(diǎn)的狀態(tài)要求,因此可以調(diào)度。此時(shí),將內(nèi)部時(shí)鐘中斷B的定時(shí)時(shí)間設(shè)置為task1本次的任務(wù)規(guī)劃執(zhí)行時(shí)間2ms,開啟定時(shí)器B計(jì)數(shù),并調(diào)度task1啟動(dòng)執(zhí)行。此為任務(wù)調(diào)度模塊進(jìn)行一次調(diào)度所需完成的工作。正常情況下,task1在其10ms周期內(nèi),應(yīng)該在小于其最差執(zhí)行時(shí)間,即2ms的時(shí)間內(nèi)執(zhí)行結(jié)束。此時(shí)將task1置為執(zhí)行就緒狀態(tài),轉(zhuǎn)而調(diào)度taskIdle后臺(tái)空閑任務(wù)。若在內(nèi)部時(shí)鐘中斷B的時(shí)間到達(dá)時(shí),task1還沒有執(zhí)行結(jié)束,仍處于運(yùn)行狀態(tài),則此時(shí)調(diào)度器檢查調(diào)度點(diǎn)2的屬性,發(fā)現(xiàn)其為上一個(gè)任務(wù)task1的執(zhí)行截止時(shí)刻,由此判斷task1任務(wù)超時(shí),強(qiáng)制停止該任務(wù)執(zhí)行,并轉(zhuǎn)入該任務(wù)的超時(shí)處理過程中。此后,進(jìn)行下一個(gè)任務(wù)的狀態(tài)檢查,task2任務(wù)處于執(zhí)行就緒狀態(tài),因此可以調(diào)度。此時(shí),將內(nèi)部時(shí)鐘中斷B的定時(shí)時(shí)間設(shè)置為task1本次的任務(wù)規(guī)劃執(zhí)行時(shí)間6ms,開始定時(shí)器B計(jì)數(shù),并調(diào)度task2啟動(dòng)執(zhí)行。之上的調(diào)度過程是對(duì)于不存在任務(wù)搶占情況下的任務(wù)調(diào)度流程,其處理器資源占用時(shí)序如圖4所示。在task2執(zhí)行結(jié)束后,第8ms進(jìn)入內(nèi)部時(shí)鐘中斷B的處理函數(shù),此時(shí)開始進(jìn)行任務(wù)task3的調(diào)度。在任務(wù)task3開始執(zhí)行2ms后,總線時(shí)間中斷A的時(shí)間到,task3的執(zhí)行過程被打斷。在總線時(shí)間A的中斷響應(yīng)函數(shù)中,使用靜態(tài)規(guī)劃表中的調(diào)度點(diǎn)4,發(fā)現(xiàn)雖然此時(shí)task3未執(zhí)行結(jié)束,但此時(shí)刻不是task3的執(zhí)行死限點(diǎn),因此不認(rèn)為任務(wù)task3超時(shí),將task3置為被搶占狀態(tài),繼續(xù)正常的任務(wù)調(diào)度。按照時(shí)間規(guī)劃表,選擇task1作為下一個(gè)執(zhí)行的任務(wù),將內(nèi)部時(shí)鐘中斷B的定時(shí)時(shí)間設(shè)為2ms,啟動(dòng)task1執(zhí)行。在task1執(zhí)行結(jié)束,進(jìn)入內(nèi)部時(shí)鐘中斷B的響應(yīng)函數(shù)后,選擇靜態(tài)規(guī)劃表的調(diào)度點(diǎn)5。其為下一個(gè)任務(wù)task3的任務(wù)恢復(fù)時(shí)刻,而當(dāng)前task3位于被搶占狀態(tài),因此認(rèn)為當(dāng)前應(yīng)該恢復(fù)task3的執(zhí)行。將內(nèi)部時(shí)鐘中斷B的定時(shí)時(shí)間設(shè)為7ms后,恢復(fù)task3執(zhí)行。之上的調(diào)度過程是一次存在任務(wù)搶占的任務(wù)調(diào)度流程,其處理器資源占用時(shí)序如圖5所示。對(duì)于以上的調(diào)度過程,另一種可能發(fā)生的情況,是任務(wù)task3在調(diào)度點(diǎn)3被第一次啟動(dòng)后,執(zhí)行不到2ms即結(jié)束本周期工作,此時(shí)調(diào)度器置task3為執(zhí)行就緒狀態(tài),轉(zhuǎn)入taskIdle任務(wù)的執(zhí)行。則當(dāng)調(diào)度器進(jìn)行調(diào)度點(diǎn)5的調(diào)度時(shí),由于task3已經(jīng)處于執(zhí)行就緒狀態(tài),而未處于被搶占狀態(tài),因此調(diào)度器認(rèn)為task3本周期的工作已經(jīng)完成,不再進(jìn)行task3的調(diào)度,轉(zhuǎn)而進(jìn)行taskIdle任務(wù)的調(diào)度。其處理器資源占用時(shí)序如圖6所示。對(duì)于調(diào)度模塊運(yùn)行過程中的任務(wù)狀態(tài),有比較明確的定義,若某一調(diào)度時(shí)刻為下一個(gè)任務(wù)的啟動(dòng)執(zhí)行時(shí)刻,而該任務(wù)當(dāng)前處于被搶占狀態(tài)或者運(yùn)行狀態(tài),則認(rèn)為運(yùn)行故障;若某一調(diào)度時(shí)刻為下一個(gè)任務(wù)的恢復(fù)執(zhí)行時(shí)刻,而該任務(wù)處于運(yùn)行狀態(tài),則認(rèn)為運(yùn)行故障;若某一調(diào)度時(shí)刻,若前一個(gè)任務(wù)處于被搶占狀態(tài),則認(rèn)為運(yùn)行故障。對(duì)于時(shí)間規(guī)劃表的調(diào)度點(diǎn)4,是由總線時(shí)鐘中斷觸發(fā)進(jìn)行的。由于之前時(shí)鐘中斷B的定時(shí)器計(jì)數(shù)值曾經(jīng)被重置,存在一定的延遲,因此對(duì)于時(shí)間規(guī)劃表的調(diào)度點(diǎn)4,時(shí)鐘中斷B的觸發(fā)時(shí)刻應(yīng)該比總線時(shí)鐘中斷A的觸發(fā)要遲,此時(shí)本地時(shí)鐘中斷B的定時(shí)器仍在計(jì)數(shù)??梢酝ㄟ^檢查本地時(shí)鐘中斷B的定時(shí)器的計(jì)數(shù)值,是否小于一定門限,來判斷總線時(shí)鐘中斷的時(shí)間周期是否準(zhǔn)確合理。以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。當(dāng)前第1頁(yè)1 2 3 
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
苗栗市| 娱乐| 岳西县| 东乌珠穆沁旗| 泌阳县| 前郭尔| 花莲市| 大新县| 土默特右旗| 百色市| 新密市| 浦东新区| 泸定县| 钟山县| 宜春市| 张家界市| 太原市| 富川| 隆德县| 镇雄县| 静宁县| 丰顺县| 彭水| 抚顺市| 潮州市| 富宁县| 梓潼县| 临洮县| 濮阳市| 大理市| 合作市| 蒙城县| 丰镇市| 行唐县| 班戈县| 阿城市| 嘉鱼县| 禄丰县| 衡阳县| 大庆市| 林口县|