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