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