專利名稱:單任務(wù)運(yùn)行環(huán)境下實(shí)現(xiàn)軟件運(yùn)行時間確定的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種氣象數(shù)據(jù)分析處理技術(shù),尤其是一種利用風(fēng)廓線雷達(dá)獲取的數(shù)據(jù) 進(jìn)行一系列處理后獲得準(zhǔn)確率高的三維風(fēng)場的方法,具體地說是一種利用風(fēng)廓線雷達(dá)獲取 三維風(fēng)場的方法。
背景技術(shù):
眾所周知,在大多數(shù)的軟件應(yīng)用領(lǐng)域,是按照軟件的最差運(yùn)行時間指標(biāo)來度量軟 件的運(yùn)行時間的。但在一些有高可靠性高安全性要求的領(lǐng)域,比如航空航天、軌道交通、核 電等領(lǐng)域的控制軟件,更希望軟件在任何正常的運(yùn)行條件下,每次運(yùn)行的時間是一個確定 值。導(dǎo)致軟件運(yùn)行時間不確定性的因素有很多,從軟件角度看主要是運(yùn)行時走不同的分支 程序的影響較大,所以克服分支程序運(yùn)行對軟件按確定的時間運(yùn)行的影響是保證設(shè)備正 常運(yùn)行的關(guān)鍵。
發(fā)明內(nèi)容
本發(fā)明的目的是針對現(xiàn)有的軟件運(yùn)行過程中受到分支程序影響使得設(shè)備難以始 終按確定的時間運(yùn)行的問題,發(fā)明一種通過對分支程序進(jìn)行控制實(shí)現(xiàn)主程序運(yùn)行時間確定 的單任務(wù)運(yùn)行環(huán)境下實(shí)現(xiàn)軟件運(yùn)行時間確定的方法。本發(fā)明的技術(shù)方案是
一種單任務(wù)運(yùn)行環(huán)境下實(shí)現(xiàn)軟件運(yùn)行時間確定的方法,其特征是它包括以下步驟
(1).按照通用的編程方法編寫符合功能要求的函數(shù);
(2).明確劃分函數(shù)的外部輸入、外部輸出(包括對全局變量的改寫)和算法;
(3).為外部輸出(包括可能修改的全局變量)建立局部變量;
(4).找到函數(shù)中所有的分支語句,比如if…else,switch case等;
(5).為所有分支語句的輸出建立局部變量;
(6).剪切所有分支的程序到分支外,但輸出均修改為分支輸出的局部變量;
(7).在分支中添加分支輸出局部變量到分支運(yùn)算結(jié)果輸出的賦值語句、和對全局變量 的賦值語句;
(8).將分支運(yùn)算結(jié)果加入后續(xù)程序運(yùn)算;
(9).程序最后將外部輸出局部變量賦值到外部輸出; (10 ).按(2 )到(9 )的步驟修改程序中調(diào)用到的函數(shù)。本發(fā)明的有益效果
1.本發(fā)明可使修改后的主程序在目標(biāo)機(jī)指令集確定、編譯器確定、不使用編譯優(yōu)化的 情況下,軟件運(yùn)行的指令數(shù)是確定的。2.本發(fā)明方法簡單,易于實(shí)現(xiàn),它可獨(dú)立或結(jié)合其它的編程方法保證軟件運(yùn)行時 間的確定性。3、本發(fā)明將功能代碼作為傳遞確定性的載體,不需增加其它通道將確定的運(yùn)行時間傳遞給目標(biāo)機(jī)。在目標(biāo)機(jī)指令集確定、編譯器確定、不使用編譯優(yōu)化的情況下,軟件運(yùn)行 的指令數(shù)是確定的;在確定目標(biāo)機(jī)MIPS (每秒運(yùn)行的指令數(shù))指標(biāo)后軟件的運(yùn)行時間也是 確定的。
具體實(shí)施例方式下面結(jié)合實(shí)施例對本發(fā)明作進(jìn)一步的說明。一種單任務(wù)運(yùn)行環(huán)境下實(shí)現(xiàn)軟件運(yùn)行時間確定的方法,它包括以下步驟
(1)按照通用的編程方法編寫符合功能要求并需按確定時間運(yùn)行的函數(shù);
(2)明確劃分函數(shù)程序的外部輸入、外部輸出(包括對全局變量的改寫)和算法;
(3)為所有外部輸出(包括可能修改的全局變量)建立對應(yīng)的局部變量;
(4)找到程序中所有的分支語句,比如if…else,switchcase等;
(5)為所有分支語句的輸出建立對應(yīng)的局部變量;
(6)剪切所有分支的程序到分支外,同時將分支程序的輸出均修改為分支程序輸出的
局部變量;
(7)在分支程序中添加分支輸出局部變量到分支運(yùn)算結(jié)果輸出的賦值語句和對全局變 量的賦值語句;
(8)將分支運(yùn)算結(jié)果加入到后續(xù)程序中;
(9)程序最后將外部輸出局部變量賦值到外部輸出;
(10)按(2)到(9)的步驟修改主程序中調(diào)用到的函數(shù)程序。下邊通過一個偽代碼的具體例子對本發(fā)明作進(jìn)一步的描述。首先按照功能要求編寫出偽代碼1,其次確定偽代碼1中的輸入有Inputl和 Input2、輸出有Output和改寫的全局變量GlobalVar ;第三,為Output和GlobalVar建立 局部變量Local_0utput和Local_GlobalVar ;第四,找到函數(shù)中的分支語句if…else…; 第五,為分支語句建立輸出局部變量BranCh_0utputl和BranCh_0utput2 ;第六,剪切所有 分支的程序到分支外并對分支輸出變量賦值;第七,在分支中添加局部變量到分支運(yùn)算結(jié) 果輸出的賦值語句、和對全局變量的賦值語句;第八,在程序最后添加分支運(yùn)算結(jié)果輸出到 外部輸出的賦值語句,最后按照以上步驟修改調(diào)用的函數(shù)ComplicatedOperateO。相對于 偽代碼1在Inputl不同走不同分支時運(yùn)行時間不確定的情況,偽代碼2生成的軟件每次運(yùn) 行的時間是確定的。偽代碼1: int GlobalVar;
void 0perator2(int Inputl, int Input2, int 氺Output)
{
int Iocalvar;
Code;//與輸出無關(guān)也沒有分支的代碼段
if (Inputl == 55)
{
氺Output = Input2; GlobalVar = Input2;}
else {
ComplicatedOperate (Input2,&localvar); 氺Output = localvar;
ι
ι
偽代碼2 int GlobalVar;
void Operator2(int Inputl, int Input2, int 氺Output)
{
int Local_Output; int Local—GlobalVar; int Branch_Outputl; int Branch_0utput2; int localvar;
Code;//與輸出無關(guān)也沒有分支的代碼段 Branch_Outputl = Input2; Local—GlobalVar = Input2; ComplicatedOperate(Input2, &localvar); Branch_0utput2 = localvar;
if (Inputl == 55)
{
Local_Output = Branch_Outputl; GlobalVar = Local—GlobalVar;
ι
else {
Local_Output = Branch_0utput2;
ι
氺Output = Local_Output;
ι
本發(fā)明未涉及部分均與現(xiàn)有技術(shù)相同或可采用現(xiàn)有技術(shù)加以實(shí)現(xiàn)。
權(quán)利要求
一種單任務(wù)運(yùn)行環(huán)境下實(shí)現(xiàn)軟件運(yùn)行時間確定的方法,其特征是它包括以下步驟(1)利用通用的編程方法編寫符合功能要求的函數(shù);(2)明確劃分函數(shù)的外部輸入、外部輸出和算法;(3)為外部輸出建立局部變量;(4)找到函數(shù)中所有的分支語句;(5)為所有分支語句的輸出建立局部變量;(6)剪切所有分支的程序到分支外,將分支語句的輸出均修改為分支輸出的局部變量;(7).在分支中添加分支輸出的局部變量到分支運(yùn)算結(jié)果輸出的賦值語句和對全局變量的賦值語句;(8)將分支運(yùn)算結(jié)果加入后續(xù)程序運(yùn)算;(9)最后將外部輸出局部變量賦值到外部輸出;(10)修改程序中調(diào)用到的函數(shù)即可。
2.根據(jù)權(quán)利要求1所述的方法,其特征是所述的外部輸出包括可能修改的全局變量。
3.根據(jù)權(quán)利要求1所述的方法,其特征是所述的分支語句包括if…else,switchcase。
全文摘要
一種單任務(wù)運(yùn)行環(huán)境下實(shí)現(xiàn)軟件運(yùn)行時間確定的方法,其特征是它包括(1)利用通用的編程方法編寫符合功能要求的函數(shù);(2)明確劃分函數(shù)的外部輸入、外部輸出和算法;(3)為外部輸出建立局部變量;(4)找到函數(shù)中所有的分支語句;(5)為所有分支語句的輸出建立局部變量;(6)剪切所有分支的程序到分支外,將分支語句的輸出均修改為分支輸出的局部變量;(7)在分支中添加分支輸出的局部變量到分支運(yùn)算結(jié)果輸出的賦值語句和對全局變量的賦值語句;(8)將分支運(yùn)算結(jié)果加入后續(xù)程序運(yùn)算;(9)最后將外部輸出局部變量賦值到外部輸出;(10)修改程序中調(diào)用到的函數(shù)即可。本發(fā)明能保證在輸入不同路徑不同的前提下同一個函數(shù)的運(yùn)行時間確定不變。
文檔編號G06F9/30GK101957742SQ20101050028
公開日2011年1月26日 申請日期2010年10月9日 優(yōu)先權(quán)日2010年10月9日
發(fā)明者束元 申請人:南京恩瑞特實(shí)業(yè)有限公司