軟件可靠性仿真測試平臺實時技術(shù)研究
按照仿真器所處的運行模式,將其任務(wù)劃分為實時任務(wù)和非實時任務(wù)。
本文引用地址:http://www.ex-cimer.com/article/83648.htm實時任務(wù)指在仿真測試過程中,仿真器需要在確定時間內(nèi)完成的任務(wù),包括:
?。羁刂疲òy試開始、工作模式切換、驅(qū)動通信接口、測試結(jié)束等);
?。c被測目標(biāo)軟件之間的實時交聯(lián)數(shù)據(jù)驅(qū)動任務(wù);
?。c主控機分系統(tǒng)之間的實時網(wǎng)絡(luò)通信任務(wù);
?。宦?lián)數(shù)據(jù)實時生成;
?。疁y試數(shù)據(jù)和測試結(jié)果數(shù)據(jù)的記錄和顯示;
?。疁y試結(jié)果數(shù)據(jù)的初步精度分析和狀態(tài)邏輯驗證。
非實時任務(wù)指對于任務(wù)完成的時間沒有嚴格約束的任務(wù),包括:
?。脩敉ㄟ^界面進行的分系統(tǒng)參數(shù)和有關(guān)配置描述;
.分系統(tǒng)初始化及用戶指定分系統(tǒng)自檢和維護;
?。疁y試數(shù)據(jù)的事后回放;
.?dāng)?shù)據(jù)庫操作。
為系統(tǒng)任務(wù)調(diào)度管理的方便,根據(jù)任務(wù)的屬性、等級和處理周期的不同,將實時任務(wù)劃分為動態(tài)任務(wù)和靜態(tài)任務(wù),靜態(tài)任務(wù)又包括長周期任務(wù)和短周期任務(wù)。
動態(tài)任務(wù)指動態(tài)跟蹤系統(tǒng)狀態(tài),根據(jù)實際運行狀況,臨時加入的任務(wù),如實時自檢任務(wù)、系統(tǒng)發(fā)生故障時動態(tài)加入的異常處理任務(wù)等。
長周期任務(wù)指可以在多個時間標(biāo)簽內(nèi)完成的任務(wù),如有必要,這類任務(wù)可在時限還沒有完成就終止。包括顯示任務(wù)、記錄任務(wù)、從數(shù)據(jù)庫或數(shù)據(jù)文件中讀取數(shù)據(jù)到內(nèi)存的任務(wù)。
短周期任務(wù)指對任務(wù)完成的時間有嚴格的限定,必須在一個時間標(biāo)簽內(nèi)完成的任務(wù),即在25 ms周期內(nèi),完成對目標(biāo)軟件的一次驅(qū)動,同時接收目標(biāo)軟件的對外輸出。包括交聯(lián)數(shù)據(jù)的生成、交聯(lián)數(shù)據(jù)的1553B驅(qū)動、從主控機接收和向主控機發(fā)送測試數(shù)據(jù)信息包、仿真器應(yīng)答信息包的網(wǎng)絡(luò)通信任務(wù)等周期性的任務(wù)。
上述各類任務(wù)在其生命周期內(nèi)一般都包括創(chuàng)建、就緒、掛起、運行、取消和結(jié)束六種狀態(tài),其狀態(tài)轉(zhuǎn)換關(guān)系如圖3所示,由總的任務(wù)調(diào)度控制器將各任務(wù)帶入不同的狀態(tài)。
圖3 任務(wù)狀態(tài)轉(zhuǎn)換關(guān)系示意圖
2.2.3 仿真器調(diào)度模塊的設(shè)計
仿真器對于各類任務(wù)采用時間、事件以及數(shù)據(jù)驅(qū)動相結(jié)合的調(diào)度原則進行控制管理。為了提高系統(tǒng)的實時性和適應(yīng)性,采用了動態(tài)和靜態(tài)調(diào)度策略相結(jié)合、任務(wù)發(fā)生的周期和優(yōu)先級相結(jié)合的調(diào)度方式。
在調(diào)度框架中集中不同的調(diào)度策略。在運行模式下:系統(tǒng)測試工作正常,則對于周期性的實時任務(wù)采用靜態(tài)生成的調(diào)度策略;在系統(tǒng)發(fā)生故障時,則采用臨時的動態(tài)調(diào)度策略,它根據(jù)系統(tǒng)的運行狀況,實時加入動態(tài)任務(wù),并根據(jù)動態(tài)任務(wù)的級別,決定該任務(wù)是立即執(zhí)行還是按順序執(zhí)行。隨著故障的排除,取消該任務(wù),系統(tǒng)重新恢復(fù)到先前的調(diào)度策略。
仿真器根據(jù)任務(wù)運行占用時間的不同,以不同速率來調(diào)度不同模塊,滿足實時驅(qū)動的要求。采用優(yōu)先級調(diào)度和分時調(diào)度相結(jié)合的方式:優(yōu)先級調(diào)度方式即調(diào)度模塊對于每一項任務(wù)都賦予了嚴格的優(yōu)先級,按優(yōu)先級的次序從高到低執(zhí)行;分時調(diào)度方式是采用時間片輪轉(zhuǎn)的方式來執(zhí)行各個任務(wù),這種調(diào)度方式多是在終止模式下采用(或在運行模式下,系統(tǒng)已經(jīng)完成短周期的任務(wù),還留有時間余量的情況下)。例如,對于1553B數(shù)據(jù)驅(qū)動和交聯(lián)數(shù)據(jù)生成等短周期任務(wù)在每25 ms定時到時串行化執(zhí)行,被賦予了較高優(yōu)先級,而對于顯示和記錄數(shù)據(jù)等長周期任務(wù)分時執(zhí)行或交叉執(zhí)行,被賦予了較低優(yōu)先級,以保證能正常驅(qū)動MBI卡。
在優(yōu)先級調(diào)度方式中,采用優(yōu)先級浮動的原則:即根據(jù)系統(tǒng)實時處理任務(wù)的不同,按照需要動態(tài)地改變優(yōu)先級。系統(tǒng)在正常運行時,優(yōu)先級不變;當(dāng)系統(tǒng)發(fā)生嚴重故障時,調(diào)度模塊動態(tài)觸發(fā)異常處理任務(wù),并根據(jù)故障類別和故障被維護的狀況,動態(tài)調(diào)整模塊處理級別。對于影響系統(tǒng)測試的重要模塊,調(diào)度模塊啟動相應(yīng)的備份儲備模塊,同時將“暫停測試”的申請通過網(wǎng)絡(luò)發(fā)送到主控機。這樣,系統(tǒng)就具有了故障恢復(fù)能力,實現(xiàn)了關(guān)鍵部分的冗余保護,提高了可靠性。
根據(jù)上述設(shè)計,在實時測試過程中,仿真器的實時調(diào)度層次模型如圖4所示。
圖4 RUN()模式下實時任務(wù)調(diào)度模型示意圖
基于以上的調(diào)度策略,任務(wù)調(diào)度管理模塊采用以下方式對各模塊進行調(diào)度:
?。袛喾绞剑寒?dāng)總的任務(wù)調(diào)度器監(jiān)控到消息隊列中最高消息到來時,立即申請軟件中斷,或者有硬件中斷申請時,系統(tǒng)立即停止當(dāng)前執(zhí)行的任務(wù),執(zhí)行相應(yīng)的中斷處理。
.定時方式:實時測試開始后,定時器每25 ms發(fā)出定時消息,定時將需要發(fā)送的測試用例數(shù)據(jù)送到MBI卡上。
?。⒎绞剑夯赪in98消息傳遞機制,由線程調(diào)度方式實現(xiàn)。
?。盘柫考叭肿兞糠绞剑嚎偟娜蝿?wù)調(diào)度器監(jiān)控到任務(wù)啟動的信號量或狀態(tài)量改變后,按任務(wù)的等級運行任務(wù)。
根據(jù)系統(tǒng)任務(wù)調(diào)度管理的方式,將任務(wù)消息的處理級別分為三個優(yōu)先級:
?、僮罡呒壪ⅲ涸擃愊⒁笙到y(tǒng)立即響應(yīng),具有此類優(yōu)先級的模塊在系統(tǒng)實時仿真中處于核心地位。該消息不放到Windows的系統(tǒng)消息隊列中排隊,而是直接送到相應(yīng)的應(yīng)用消息隊列中,供應(yīng)用程序處理。這樣可以避免無節(jié)制的消息循環(huán),保證了消息處理的及時性。
評論