本發(fā)明涉及一種基于嵌入式操作系統(tǒng)的故障恢復(fù)方法,屬于操作系統(tǒng)故障處理。
背景技術(shù):
1、計(jì)算機(jī)系統(tǒng)已經(jīng)被廣泛應(yīng)用于航天等安全攸關(guān)領(lǐng)域,這類系統(tǒng)一旦發(fā)生錯(cuò)誤將會(huì)造成嚴(yán)重后果,建立高可信的計(jì)算機(jī)系統(tǒng)在安全攸關(guān)領(lǐng)域是極其重要的。操作系統(tǒng)作為計(jì)算機(jī)系統(tǒng)中最基礎(chǔ)的底層軟件,是構(gòu)建高可信度計(jì)算機(jī)系統(tǒng)的關(guān)鍵。
2、在實(shí)現(xiàn)過(guò)程中存在著如下應(yīng)用問(wèn)題需要解決:(1)針對(duì)嵌入式操作系統(tǒng)的檢查點(diǎn)主要使用狀態(tài)文件進(jìn)行記錄,對(duì)其進(jìn)行檢索的系統(tǒng)開(kāi)銷大,效率不高;(2)針對(duì)嵌入式操作系統(tǒng)的故障恢復(fù),主要使用對(duì)所有進(jìn)程直接回滾的方法,系統(tǒng)開(kāi)銷比較大。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明解決的技術(shù)問(wèn)題是:克服現(xiàn)有技術(shù)的不足,提出了一種基于嵌入式操作系統(tǒng)的故障恢復(fù)方法,通過(guò)使用檢查點(diǎn)文件結(jié)構(gòu)及僅回卷對(duì)存儲(chǔ)修改狀態(tài)進(jìn)行置位標(biāo)記的進(jìn)程的方法,實(shí)現(xiàn)嵌入式操作系統(tǒng)故障恢復(fù),解決了現(xiàn)有技術(shù)進(jìn)行故障恢復(fù)時(shí),需要回卷所有進(jìn)程造成的效率低、開(kāi)銷大等問(wèn)題。
2、本發(fā)明的技術(shù)解決方案是:
3、一種基于嵌入式操作系統(tǒng)的故障恢復(fù)方法,包括:
4、步驟1,根據(jù)嵌入式操作系統(tǒng)之上運(yùn)行的多個(gè)進(jìn)程,構(gòu)建包含任務(wù)信息和存儲(chǔ)信息的目標(biāo)進(jìn)程結(jié)構(gòu);
5、步驟2,使用檢查點(diǎn)文件對(duì)關(guān)于檢查點(diǎn)的各文件進(jìn)行索引和存儲(chǔ);其中,檢查點(diǎn)文件保存恢復(fù)進(jìn)程運(yùn)行所需的所有信息;
6、檢查點(diǎn)文件由文件起始數(shù)據(jù)、結(jié)束標(biāo)志以及若干個(gè)進(jìn)程數(shù)據(jù)組成;文件起始數(shù)據(jù)包括文件起始的頭標(biāo)志、程序版本、內(nèi)核版本、進(jìn)程數(shù)量、進(jìn)程信息存儲(chǔ)結(jié)構(gòu);
7、進(jìn)程數(shù)據(jù)包括進(jìn)程id、存儲(chǔ)修改標(biāo)志、關(guān)聯(lián)進(jìn)程存儲(chǔ)修改標(biāo)志、進(jìn)程關(guān)系結(jié)構(gòu)、進(jìn)程文件系統(tǒng)信息、進(jìn)程回寫(xiě)文件和進(jìn)程其他數(shù)據(jù);
8、結(jié)束標(biāo)志表示檢查點(diǎn)文件的結(jié)束;
9、步驟3,按照設(shè)定的時(shí)間間隔設(shè)置多任務(wù)協(xié)同檢查點(diǎn),保存檢查點(diǎn)時(shí)間間隔;
10、步驟4,系統(tǒng)運(yùn)行過(guò)程中,按照檢查點(diǎn)時(shí)間間隔,更新檢查點(diǎn)文件中數(shù)據(jù);
11、步驟5,當(dāng)系統(tǒng)收到檢查點(diǎn)設(shè)置請(qǐng)求時(shí),按檢查點(diǎn)文件中的進(jìn)程關(guān)系結(jié)構(gòu),進(jìn)行全局一致性的檢查點(diǎn)設(shè)置,對(duì)進(jìn)程數(shù)據(jù)的存儲(chǔ)修改標(biāo)志、關(guān)聯(lián)進(jìn)程存儲(chǔ)修改標(biāo)志進(jìn)行設(shè)置;
12、步驟6,當(dāng)系統(tǒng)收到檢查點(diǎn)恢復(fù)命令時(shí),根據(jù)檢查點(diǎn)文件中的進(jìn)程關(guān)系結(jié)構(gòu)、檢查點(diǎn)文件記錄的當(dāng)前進(jìn)程存儲(chǔ)修改標(biāo)志、關(guān)聯(lián)進(jìn)程存儲(chǔ)修改標(biāo)志,對(duì)相應(yīng)進(jìn)程進(jìn)行回卷,恢復(fù)各進(jìn)程的所有數(shù)據(jù),恢復(fù)各進(jìn)程。
13、進(jìn)一步地,當(dāng)系統(tǒng)收到檢查點(diǎn)設(shè)置請(qǐng)求時(shí),按進(jìn)程關(guān)系結(jié)構(gòu),進(jìn)行全局一致性的檢查點(diǎn)設(shè)置,具體方法為:
14、收到檢查點(diǎn)設(shè)置之后,等待用戶中斷保存請(qǐng)求;回調(diào)工作進(jìn)程按進(jìn)程關(guān)系結(jié)構(gòu)發(fā)中斷保存信號(hào),檢查點(diǎn)設(shè)置的目標(biāo)進(jìn)程收到中斷保存信號(hào);
15、更新保存目標(biāo)進(jìn)程的進(jìn)程關(guān)系結(jié)構(gòu),保存所有進(jìn)程數(shù)據(jù),設(shè)置本進(jìn)程檢查點(diǎn)結(jié)束標(biāo)志;
16、若全局一致性檢查點(diǎn)設(shè)置沒(méi)有完成,則按進(jìn)程關(guān)系結(jié)構(gòu)進(jìn)行其它進(jìn)程檢查點(diǎn)設(shè)置,否則全局一致性檢查點(diǎn)處理結(jié)束。
17、進(jìn)一步地,當(dāng)系統(tǒng)收到檢查點(diǎn)恢復(fù)命令時(shí),對(duì)在系統(tǒng)運(yùn)行的進(jìn)程進(jìn)行恢復(fù)的方法為:
18、確定下一個(gè)需要恢復(fù)的進(jìn)程之后,根據(jù)進(jìn)程關(guān)系結(jié)構(gòu)阻塞對(duì)應(yīng)的進(jìn)程;
19、喚醒主進(jìn)程,按照進(jìn)程結(jié)構(gòu)檢查相關(guān)進(jìn)程存儲(chǔ)修改狀態(tài):若進(jìn)程數(shù)據(jù)的存儲(chǔ)修改標(biāo)志表示進(jìn)程自身進(jìn)行了存儲(chǔ)修改,則對(duì)該進(jìn)程進(jìn)行回卷;若關(guān)聯(lián)進(jìn)程存儲(chǔ)修改標(biāo)志表示相關(guān)進(jìn)程進(jìn)行了存儲(chǔ)修改,則對(duì)相關(guān)進(jìn)程進(jìn)行回卷;
20、恢復(fù)進(jìn)程的所有數(shù)據(jù),恢復(fù)進(jìn)程;
21、按照存儲(chǔ)的進(jìn)程關(guān)系查找和存儲(chǔ)修改進(jìn)程存在依賴關(guān)系的下一個(gè)進(jìn)程,直到所有進(jìn)程恢復(fù)完畢。
22、進(jìn)一步地,系統(tǒng)運(yùn)行過(guò)程中,對(duì)檢查點(diǎn)文件中的數(shù)據(jù)進(jìn)行更新的方法為:
23、記錄檢查點(diǎn)文件的文件起始數(shù)據(jù)。記錄程序版本,記錄內(nèi)核版本,記錄進(jìn)程數(shù)量,把每個(gè)進(jìn)程在文件中的對(duì)應(yīng)位置記錄在進(jìn)程信息存儲(chǔ)結(jié)構(gòu)中。
24、記錄所有的進(jìn)程數(shù)據(jù)。對(duì)每個(gè)進(jìn)程按照進(jìn)程信息存儲(chǔ)結(jié)構(gòu)的順序記錄對(duì)應(yīng)的進(jìn)程id,若運(yùn)行過(guò)程進(jìn)行了讀寫(xiě)操作則將本進(jìn)程存儲(chǔ)修改標(biāo)志置位否則清零,若相關(guān)聯(lián)的進(jìn)程進(jìn)行了讀寫(xiě)則將關(guān)聯(lián)進(jìn)程存儲(chǔ)修改標(biāo)志置位否則清零。
25、進(jìn)一步地,檢查點(diǎn)時(shí)間間隔為:
26、
27、式中,tchek為系統(tǒng)進(jìn)行檢查點(diǎn)設(shè)置的間隔時(shí)間,tbds是系統(tǒng)發(fā)生故障的平均間隔時(shí)間,tsp是運(yùn)行檢查點(diǎn)操作消耗的時(shí)間;參數(shù)σ取值范圍是0<σ≤100。
28、進(jìn)一步地,存儲(chǔ)修改標(biāo)志記錄進(jìn)程是否進(jìn)行內(nèi)存、寄存器存儲(chǔ)修改;關(guān)聯(lián)進(jìn)程存儲(chǔ)修改標(biāo)志記錄與進(jìn)程相關(guān)的其他進(jìn)程是否進(jìn)行了存儲(chǔ)修改。
29、進(jìn)一步地,目標(biāo)進(jìn)程結(jié)構(gòu)記錄進(jìn)程的關(guān)系信息,包括進(jìn)程之間創(chuàng)建、進(jìn)程間層次關(guān)系信息。
30、進(jìn)一步地,文件起始數(shù)據(jù)中進(jìn)程信息存儲(chǔ)結(jié)構(gòu)記錄所有進(jìn)程id對(duì)應(yīng)在檢查點(diǎn)文件的位置。
31、本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于:
32、(1)本發(fā)明采用的檢查點(diǎn)文件,文件頭采用了進(jìn)程信息存儲(chǔ)結(jié)構(gòu)記錄了所有進(jìn)程在檢查點(diǎn)文件中的位置,便于對(duì)檢查點(diǎn)文件進(jìn)行搜索,具有創(chuàng)造性。
33、(2)本發(fā)明采用的檢查點(diǎn)文件對(duì)進(jìn)程間的約束依賴關(guān)系進(jìn)行描述,采用本進(jìn)程存儲(chǔ)修改標(biāo)志表示進(jìn)程自身進(jìn)行了存儲(chǔ)修改,關(guān)聯(lián)進(jìn)程存儲(chǔ)修改狀態(tài)字記錄相關(guān)進(jìn)程的存儲(chǔ)修改狀態(tài)。
34、(3)本發(fā)明采用僅回卷對(duì)存儲(chǔ)修改狀態(tài)進(jìn)行置位標(biāo)記的進(jìn)程的方法,結(jié)合使用進(jìn)程關(guān)系信息文件確保所有和存儲(chǔ)修改進(jìn)程具有依賴關(guān)系的進(jìn)程都進(jìn)行了回卷,保障了故障恢復(fù)正確執(zhí)行。
1.一種基于嵌入式操作系統(tǒng)的故障恢復(fù)方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的一種基于嵌入式操作系統(tǒng)的故障恢復(fù)方法,其特征在于,當(dāng)系統(tǒng)收到檢查點(diǎn)設(shè)置請(qǐng)求時(shí),按進(jìn)程關(guān)系結(jié)構(gòu),進(jìn)行全局一致性的檢查點(diǎn)設(shè)置,具體方法為:
3.根據(jù)權(quán)利要求1所述的一種基于嵌入式操作系統(tǒng)的故障恢復(fù)方法,其特征在于,當(dāng)系統(tǒng)收到檢查點(diǎn)恢復(fù)命令時(shí),對(duì)在系統(tǒng)運(yùn)行的進(jìn)程進(jìn)行恢復(fù)的方法為:
4.根據(jù)權(quán)利要求1所述的一種基于嵌入式操作系統(tǒng)的故障恢復(fù)方法,其特征在于,系統(tǒng)運(yùn)行過(guò)程中,對(duì)檢查點(diǎn)文件中的數(shù)據(jù)進(jìn)行更新的方法為:
5.根據(jù)權(quán)利要求1所述的一種基于嵌入式操作系統(tǒng)的故障恢復(fù)方法,其特征在于,檢查點(diǎn)時(shí)間間隔為:
6.根據(jù)權(quán)利要求1所述的一種基于嵌入式操作系統(tǒng)的故障恢復(fù)方法,其特征在于,存儲(chǔ)修改標(biāo)志記錄進(jìn)程是否進(jìn)行內(nèi)存、寄存器存儲(chǔ)修改;關(guān)聯(lián)進(jìn)程存儲(chǔ)修改標(biāo)志記錄與進(jìn)程相關(guān)的其他進(jìn)程是否進(jìn)行了存儲(chǔ)修改。
7.根據(jù)權(quán)利要求1所述的一種基于嵌入式操作系統(tǒng)的故障恢復(fù)方法,其特征在于,目標(biāo)進(jìn)程結(jié)構(gòu)記錄進(jìn)程的關(guān)系信息,包括進(jìn)程之間創(chuàng)建、進(jìn)程間層次關(guān)系信息。
8.根據(jù)權(quán)利要求1所述的一種基于嵌入式操作系統(tǒng)的故障恢復(fù)方法,其特征在于,文件起始數(shù)據(jù)中進(jìn)程信息存儲(chǔ)結(jié)構(gòu)記錄所有進(jìn)程id對(duì)應(yīng)在檢查點(diǎn)文件的位置。