一種提高操作系統(tǒng)可靠性的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及操作系統(tǒng)技術(shù)領(lǐng)域,特別是涉及一種提高操作系統(tǒng)可靠性的方法及裝置。
【背景技術(shù)】
[0002]特種計(jì)算機(jī)往往在高溫、低溫、潮濕、震動(dòng)、非法開關(guān)機(jī)、不規(guī)范操作、電磁干擾和電壓不穩(wěn)定等嚴(yán)酷的環(huán)境下工作,這些環(huán)境嚴(yán)重影響特種計(jì)算機(jī)的可靠性。而特種計(jì)算機(jī)要求具備高可靠性,否則會(huì)造成財(cái)產(chǎn)損失甚至人員傷亡,比如地鐵、高鐵、數(shù)控機(jī)床、醫(yī)療器械和電力變電所等設(shè)備,若是出現(xiàn)設(shè)備故障,后果往往是很嚴(yán)重的。特種計(jì)算機(jī)的操作系統(tǒng)可靠性是特種計(jì)算機(jī)的一項(xiàng)重要的指標(biāo)。
[0003]然而,發(fā)明人經(jīng)研究發(fā)現(xiàn),現(xiàn)有技術(shù)中的操作系統(tǒng)啟動(dòng)、加載、運(yùn)行及異常處理的過程至少存在以下問題,以嵌入式Iinux操作系統(tǒng)為例,傳統(tǒng)技術(shù)中使用的Iinux都是在發(fā)行版的Iinux系統(tǒng)(例如fedora, ubuntu、cenos、debian、suse等)的基礎(chǔ)上刪除了部分組件的系統(tǒng)(或稱為精簡版的Iinux系統(tǒng)),而由于嵌入式Iinux系統(tǒng)非常龐大復(fù)雜,所以這種方式往往導(dǎo)致系統(tǒng)定制者對(duì)系統(tǒng)組件的依賴性和組件本身的可靠性無法把握,從而造成定制系統(tǒng)出現(xiàn)概率性的各種異?,F(xiàn)象。而且,傳統(tǒng)的操作系統(tǒng)啟動(dòng)、加載和運(yùn)行方法很容易導(dǎo)致操作系統(tǒng)無法啟動(dòng),以及無法啟動(dòng)時(shí)又沒有機(jī)制可以恢復(fù)系統(tǒng)。因此,傳統(tǒng)技術(shù)中的操作系統(tǒng)的可靠性不高。
【發(fā)明內(nèi)容】
[0004]基于此,有必要提供一種提高操作系統(tǒng)可靠性的方法。
[0005]一種提高操作系統(tǒng)可靠性的方法,包括:
[0006]接收B1S啟動(dòng)引導(dǎo)指令;
[0007]讀取主引導(dǎo)扇區(qū),根據(jù)所述主引導(dǎo)扇區(qū)加載與其對(duì)應(yīng)的操作系統(tǒng)弓I導(dǎo)程序;
[0008]通過所述操作系統(tǒng)引導(dǎo)程序加載操作系統(tǒng)內(nèi)核;
[0009]加載文件系統(tǒng),通過所述文件系統(tǒng)加載預(yù)設(shè)的應(yīng)用程序組件;
[0010]所述操作系統(tǒng)引導(dǎo)程序、操作系統(tǒng)內(nèi)核、文件系統(tǒng)以及應(yīng)用程序組件以鏡像文件的形式存儲(chǔ)在第一存儲(chǔ)區(qū)中,且所述第一存儲(chǔ)區(qū)為只讀存儲(chǔ)區(qū);
[0011]所述應(yīng)用程序組件以及操作系統(tǒng)內(nèi)核運(yùn)行時(shí)的數(shù)據(jù)存儲(chǔ)在第二存儲(chǔ)區(qū)中,所述運(yùn)行數(shù)據(jù)包括生成的文件、日志和數(shù)據(jù)庫記錄中的至少一種,且所述第二存儲(chǔ)區(qū)為可讀寫存儲(chǔ)區(qū)。
[0012]在其中一個(gè)實(shí)施例中,所述加載文件系統(tǒng)的步驟之后還包括:
[0013]以虛擬幀緩存方式加載QT應(yīng)用組件,所述應(yīng)用程序組件基于所述QT應(yīng)用組件。
[0014]在其中一個(gè)實(shí)施例中,所述主引導(dǎo)扇區(qū)包括第一主引導(dǎo)扇區(qū)和第二主引導(dǎo)扇區(qū);
[0015]所述讀取主引導(dǎo)扇區(qū),根據(jù)所述主引導(dǎo)扇區(qū)加載與其對(duì)應(yīng)的操作系統(tǒng)引導(dǎo)程序的步驟包括:
[0016]讀取第一主引導(dǎo)扇區(qū),若讀取成功,則加載與所述第一主引導(dǎo)扇區(qū)對(duì)應(yīng)的操作系統(tǒng)引導(dǎo)程序;讀取失敗,則讀取第二主引導(dǎo)扇區(qū),根據(jù)所述第二主引導(dǎo)扇區(qū)加載與其對(duì)應(yīng)的操作系統(tǒng)引導(dǎo)程序,通過所述與所述第二主引導(dǎo)扇區(qū)對(duì)應(yīng)的操作系統(tǒng)引導(dǎo)程序恢復(fù)所述第一主引導(dǎo)扇區(qū)并重啟。
[0017]在其中一個(gè)實(shí)施例中,所述方法還包括:
[0018]在內(nèi)存中建立虛擬硬盤區(qū),通過所述虛擬硬盤區(qū)存儲(chǔ)讀寫頻率大于閾值的數(shù)據(jù);
[0019]定期將所述虛擬硬盤區(qū)中的數(shù)據(jù)持久化存儲(chǔ)到所述第二存儲(chǔ)區(qū)中。
[0020]在其中一個(gè)實(shí)施例中,所述加載文件系統(tǒng)的步驟為:
[0021]通過操作系統(tǒng)內(nèi)核獲取所述文件系統(tǒng)的鏡像文件的起始地址,根據(jù)所述起始地址讀取文件系統(tǒng)的鏡像文件,將其解壓后加載文件系統(tǒng)。
[0022]此外,還有必要提供一種提高操作系統(tǒng)可靠性的裝置。
[0023]一種提高操作系統(tǒng)可靠性的裝置,包括:
[0024]指令接收模塊,用于接收B1S啟動(dòng)引導(dǎo)指令;
[0025]MBR讀取模塊,用于讀取主引導(dǎo)扇區(qū),根據(jù)所述主引導(dǎo)扇區(qū)加載與其對(duì)應(yīng)的操作系統(tǒng)引導(dǎo)程序;
[0026]內(nèi)核加載模塊,用于通過所述操作系統(tǒng)引導(dǎo)程序加載操作系統(tǒng)內(nèi)核;
[0027]應(yīng)用組件加載模塊,用于加載文件系統(tǒng),通過所述文件系統(tǒng)加載預(yù)設(shè)的應(yīng)用程序組件;
[0028]所述操作系統(tǒng)引導(dǎo)程序、操作系統(tǒng)內(nèi)核、文件系統(tǒng)以及應(yīng)用程序組件以鏡像文件的形式存儲(chǔ)在第一存儲(chǔ)區(qū)中,且所述第一存儲(chǔ)區(qū)為只讀存儲(chǔ)區(qū);
[0029]所述應(yīng)用程序組件以及操作系統(tǒng)內(nèi)核運(yùn)行時(shí)的數(shù)據(jù)存儲(chǔ)在第二存儲(chǔ)區(qū)中,所述運(yùn)行數(shù)據(jù)包括生成的文件、日志和數(shù)據(jù)庫記錄中的至少一種,且所述第二存儲(chǔ)區(qū)為可讀寫存儲(chǔ)區(qū)。
[0030]在其中一個(gè)實(shí)施例中,所述應(yīng)用組件加載模塊還用于以虛擬幀緩存方式加載QT應(yīng)用組件,所述應(yīng)用程序組件基于所述QT應(yīng)用組件。
[0031]在其中一個(gè)實(shí)施例中,所述主引導(dǎo)扇區(qū)包括第一主引導(dǎo)扇區(qū)和第二主引導(dǎo)扇區(qū);
[0032]所述MBR讀取模塊還用于讀取第一主引導(dǎo)扇區(qū),若讀取成功,則加載與所述第一主引導(dǎo)扇區(qū)對(duì)應(yīng)的操作系統(tǒng)引導(dǎo)程序;讀取失敗,則讀取第二主引導(dǎo)扇區(qū),根據(jù)所述第二主引導(dǎo)扇區(qū)加載與其對(duì)應(yīng)的操作系統(tǒng)引導(dǎo)程序,通過所述與所述第二主引導(dǎo)扇區(qū)對(duì)應(yīng)的操作系統(tǒng)引導(dǎo)程序恢復(fù)所述第一主弓I導(dǎo)扇區(qū)并重啟。
[0033]在其中一個(gè)實(shí)施例中,所述裝置還包括虛擬硬盤模塊,用于在內(nèi)存中建立虛擬硬盤區(qū),通過所述虛擬硬盤區(qū)存儲(chǔ)讀寫頻率大于閾值的數(shù)據(jù);
[0034]定期將所述虛擬硬盤區(qū)中的數(shù)據(jù)持久化存儲(chǔ)到所述第二存儲(chǔ)區(qū)中。
[0035]在其中一個(gè)實(shí)施例中,所述應(yīng)用組件加載模塊還用于通過操作系統(tǒng)內(nèi)核獲取所述文件系統(tǒng)的鏡像文件的起始地址,根據(jù)所述起始地址讀取文件系統(tǒng)的鏡像文件,將其解壓后加載文件系統(tǒng)。
[0036]上述提高操作系統(tǒng)可靠性的方法及裝置中,預(yù)先在只讀的第一存儲(chǔ)區(qū)中讀取操作系統(tǒng)引導(dǎo)程序、操作系統(tǒng)內(nèi)核、文件系統(tǒng)以及應(yīng)用程序組件的鏡像文件并加載。傳統(tǒng)技術(shù)中的標(biāo)準(zhǔn)版操作系統(tǒng)上進(jìn)行刪減得到的操作系統(tǒng),由于用戶對(duì)刪減掉的應(yīng)用組件對(duì)其他組件的運(yùn)行是否有影響并未得知,也較難通過測(cè)試得出,因此,操作系統(tǒng)引導(dǎo)程序、操作系統(tǒng)內(nèi)核、文件系統(tǒng)以及應(yīng)用程序組件都是按照特種計(jì)算機(jī)平臺(tái)的接口和功能從零開始一個(gè)個(gè)添力口,所添加的內(nèi)容都是自己知道的,這種方式定制操作系統(tǒng)風(fēng)險(xiǎn)較可控。而且,將操作系統(tǒng)啟動(dòng)、加載和運(yùn)行過程做了鏡像、只讀和異常修復(fù)設(shè)計(jì),可以保證操作系統(tǒng)能穩(wěn)定可靠地啟動(dòng)、加載和運(yùn)行。因此,上述方法及裝置可提高操作系統(tǒng)的可靠性。
【附圖說明】
[0037]圖1為一個(gè)實(shí)施例中提高操作系統(tǒng)可靠性的方法的流程圖;
[0038]圖2為一個(gè)實(shí)施例中計(jì)算機(jī)系統(tǒng)的存儲(chǔ)區(qū)域的邏輯結(jié)構(gòu)圖;
[0039]圖3為一個(gè)實(shí)施例中提高操作系統(tǒng)可靠性的裝置結(jié)構(gòu)示意圖;
[0040]圖4為另一個(gè)實(shí)施例中提高操作系統(tǒng)可靠性的裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0041]如圖1所示,在一個(gè)實(shí)施例中,一種提高操作系統(tǒng)可靠性的方法,該方法的執(zhí)行依賴于計(jì)算機(jī)程序,可運(yùn)行于基于馮洛伊曼體系的計(jì)算機(jī)系統(tǒng)上。
[0042]該方法包括:
[0043]步驟S102,接收B1S啟動(dòng)引導(dǎo)指令。
[0044]步驟S104,讀取主引導(dǎo)扇區(qū),根據(jù)主引導(dǎo)扇區(qū)加載與其對(duì)應(yīng)的操作系統(tǒng)引導(dǎo)程序;
[0045]步驟S106,通過操作系統(tǒng)引導(dǎo)程序加載操作系統(tǒng)內(nèi)核。
[0046]步驟S108,加載文件系統(tǒng),通過文件系統(tǒng)加載預(yù)設(shè)的應(yīng)用程序組件。
[0047]且在本實(shí)施例中,操作系統(tǒng)引導(dǎo)程序、操作系統(tǒng)內(nèi)核、文件系統(tǒng)以及應(yīng)用程序組件以鏡像文件的形式存儲(chǔ)在第一存儲(chǔ)區(qū)中,且第一存儲(chǔ)區(qū)為只讀存儲(chǔ)區(qū)。
[0048]應(yīng)用程序組件以及操作系統(tǒng)內(nèi)核運(yùn)行時(shí)的數(shù)據(jù)存儲(chǔ)在第二存儲(chǔ)區(qū)中,運(yùn)行數(shù)據(jù)包括生成的文件、日志和數(shù)據(jù)庫記錄中的至少一種,且第二存儲(chǔ)區(qū)為可讀寫存儲(chǔ)區(qū)。
[0049]在本實(shí)施例中,如圖2所示,圖2中的MBRl和MBR2即為主引導(dǎo)扇區(qū),MBRl和MBR2中存儲(chǔ)操作系統(tǒng)引導(dǎo)程序Grubl和Grub2在第一存儲(chǔ)區(qū)中的起始地址,可根據(jù)該起始地址在第一存儲(chǔ)區(qū)中找到Grubl和Grub2的鏡像文件。第一存儲(chǔ)區(qū)和第二存儲(chǔ)區(qū)既可以是同一磁盤上的不同區(qū)域,也可以是不同的磁盤。優(yōu)選的,第一存儲(chǔ)區(qū)可以是只讀的固態(tài)存儲(chǔ)卡(CF卡,Compact Flash卡)。操作系統(tǒng)引導(dǎo)程序的鏡像文件存儲(chǔ)在該固態(tài)存儲(chǔ)卡的主引導(dǎo)扇區(qū)中,操作系統(tǒng)內(nèi)核、文件系統(tǒng)以及應(yīng)用程序組件的鏡像文件則存儲(chǔ)在該固態(tài)存儲(chǔ)卡中。第二存儲(chǔ)區(qū)則可為任意可讀寫的存儲(chǔ)介質(zhì),用來存儲(chǔ)應(yīng)用程序組件以及操作系統(tǒng)內(nèi)核運(yùn)行時(shí)的數(shù)據(jù)。