專利名稱:計算機系統(tǒng)及其軟件故障恢復(fù)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及具有由檢查點重新運行方式所產(chǎn)生的故障恢復(fù)功能的計處機系統(tǒng),該方式是通過在系統(tǒng)中產(chǎn)生故障時對來自故障發(fā)生前的狀態(tài)的數(shù)據(jù)進行再處理來實現(xiàn)耐故障性的,尤其涉及具有關(guān)于軟件故障的故障恢復(fù)功能的計算機系統(tǒng)。
關(guān)于計算機系統(tǒng),從確??煽啃苑矫鎭碇v,已開發(fā)并實施了各種故障恢復(fù)方法。特別是近幾年來,隨著計算機系統(tǒng)的普及對與故障對應(yīng)等的可靠性的要求也變得逐年嚴格起來。
作為確保該耐故障性的計算機系統(tǒng)的構(gòu)成方法之一有檢查點重新運行方式。
作為實現(xiàn)該檢查點重新運行方式的計算機系統(tǒng)的方法,確實在例如USP-4740969專利號的“METHOD AND APPARATUS FORRECOVERING FROM HAQDWARE FAULTS(用于修復(fù)硬件故障的方法和裝置)或由Sequoia發(fā)表在1988年二月IEEE Computer期刊中題為“A FAULT-Tolerant Tightly coupled Multiprocessor forTransaction Processing(一種用于事務(wù)處理的緊耦合的容錯多處理機)”中已被明確指出。
它們(指方法)是如何實現(xiàn)檢查點重新運行方式呢,將參照圖9說明其概要。另外,圖中的實線表示時間幀。
這些技術(shù)配備在來自構(gòu)成計算機系統(tǒng)的硬件的間斷故障的系統(tǒng)的恢復(fù)中,并在系統(tǒng)中運行的過程或線程(thread)的重新運行后的再執(zhí)于中定期保存必要的信息。
將保存該信息的時間點稱做檢查點,將保存該信息這一事實稱做檢查點的采集(參照圖9的(1)、(2))。
由于構(gòu)成計算機系統(tǒng)的硬件產(chǎn)生間斷故障(參照圖9(3)),而中斷程序的執(zhí)行時,該被中斷的過程或線程的狀態(tài)被重算到故障發(fā)生前的檢查點(參照圖9的(4)),程序從該檢查點被再執(zhí)行(參照圖9的(5))。
此處在檢查點采集處理時所保存的信息中有處理器的內(nèi)部狀態(tài)、超高速緩沖存儲器,主存儲器等。
由于在計算機系統(tǒng)中具備這種故障修復(fù)方式,因此,即使在發(fā)生了硬件的間斷故障時,也能夠使系統(tǒng)的運轉(zhuǎn)不停止而繼續(xù)運行。
通常,系統(tǒng)中的故障既有上述那樣的硬件中的原因,也有軟件中的原因。
在上述以往技術(shù)中,作為恢復(fù)對象的故障是硬件的間斷故障,其次列舉的有所謂軟件故障引起的各種故障(以下歸納這些故障叫做“軟件故障”)。
一種故障是,恢復(fù)是困難的系統(tǒng)失效,另一種是,雖然不到所謂處理程序無限循環(huán)狀態(tài)的系統(tǒng)失效,但在發(fā)生阻礙正常的系統(tǒng)運動的不合適的狀況時,是不能使系統(tǒng)繼續(xù)運行的軟件故障,以往,作為避免由軟件故障引起的計處機的系統(tǒng)失靈的方法主要有用特別準備的軟件庫的作用提高具有多個應(yīng)用處理程序的計算機系統(tǒng)的耐故障性的方式。
該軟件庫定期地將應(yīng)用處理程序的狀態(tài)保存在非易失性存儲器中(將該動作叫做檢查點化),通過將發(fā)送消息登錄在發(fā)送裝置記錄文件中,將接收的消息登錄在接收裝置記錄文件中就能從故障發(fā)生時的檢查點起再執(zhí)行。
而且,將再執(zhí)行成功與否與登錄在發(fā)送裝置記錄文件中的消息進行比較,在不成功時,逐漸擴散重算范圍,以此作為特征。
再者,關(guān)于發(fā)生了軟件故障的處理程序,是通過在保持改變登錄在接收裝置記錄文件中的消息的序號等消息的收發(fā)整體的匹配性的范圍內(nèi)變化,避免依賴于定時的軟件故障的方法。
以往這樣的方法是通過使用應(yīng)用處理程序的軟件庫來實現(xiàn)耐故障性。作為避免軟件故障的主要方法在從檢查點處的再執(zhí)行中,通過在保持匹配性的范圍內(nèi)改變應(yīng)用處理程序之間接收發(fā)送的消息的序號來避免依賴定時的軟件故障。
為此,在操作系統(tǒng)的核心(程序)發(fā)生軟件故障時,由于計算機系統(tǒng)本身已產(chǎn)生了系統(tǒng)失靈,沒有能力修復(fù)應(yīng)用處理程序級的故障。
鑒于上述實際情況,本發(fā)明提供了在操作系統(tǒng)的核心發(fā)生軟件故障時,防止計算機系統(tǒng)自身產(chǎn)生系統(tǒng)失靈的技術(shù)。
本發(fā)明特征在于,識別由于軟件故障的原因所發(fā)生的系統(tǒng)失效或雖未到達處理程序無限循環(huán)狀態(tài)的系統(tǒng)失效但變成阻礙正常系統(tǒng)運轉(zhuǎn)的狀態(tài)的所謂軟件故障的發(fā)生,該識別該軟件故障發(fā)生時,通過有效地應(yīng)用有關(guān)識別時間點的狀態(tài)信息及采集、推斷軟件故障發(fā)生的主要原因,或者使用讓系統(tǒng)環(huán)境變化等方法,在重新運行到檢查點之后,對系統(tǒng)再執(zhí)行,來避免由于上述軟件故障的原因而發(fā)生的軟件故障。
即,第一發(fā)明的特征在于,在具有計算機系統(tǒng)發(fā)生了故障時,通過從故障發(fā)生前的狀態(tài)的再次執(zhí)行數(shù)據(jù)處理,實現(xiàn)耐故障性的檢查點重新運行方式進行的故障修復(fù)機構(gòu)的計算機系統(tǒng)中,在由硬件故障的原因引起的硬件故障或者由軟件錯誤引起的系統(tǒng)失效或雖未到達處理程序無限循環(huán)狀態(tài)那樣的系統(tǒng)失效但變成阻礙正常系統(tǒng)運轉(zhuǎn)的狀態(tài)的所謂軟件故障發(fā)生時,由于具備了區(qū)分所述硬件故障和所述軟件故障的故障識別的軟件模塊,在發(fā)生所述軟件故障時記錄故障發(fā)生時的系統(tǒng)狀態(tài)的系統(tǒng)狀態(tài)記錄軟件模塊、推斷有關(guān)所述軟件故障發(fā)生的主要原因的軟件故障發(fā)生主要原因推斷軟件模塊、推斷有關(guān)由所述軟件故障發(fā)生的主要原因推斷模塊推斷了的軟件故障發(fā)生主要原因的避免方法的軟件避免方法推斷軟件模塊、在重標(biāo)直到檢查點時間點之后,實施有關(guān)由所述軟件故障避免方法推斷模塊所推斷了的所述軟件故障發(fā)生的主要原因的避免方法的軟件故障避免方法實施模塊,并對系統(tǒng)再執(zhí)行,避免由于所述軟件錯誤而發(fā)生的軟件故障。
這樣,由于具備了伴隨軟件故障的發(fā)生的故障主要原因的解析模塊、基于該解析的故障避免作用的推斷模塊、通過重新運行回到故障發(fā)生前的狀態(tài)并實施這些故障避免作用的模塊等,并在積極地去掉軟件故障以后,附加再執(zhí)行系統(tǒng)的功能,使得不僅以基于檢查點重新運行方法的硬件的間斷的故障故障對象的故障修復(fù),而且由軟件故障引起的故障、修復(fù)也成為可能,提高計算機系統(tǒng)的可靠性。
第二發(fā)明的特征在于,在具有當(dāng)計算機系統(tǒng)中發(fā)生故障時,通過對來自故障發(fā)生前的狀態(tài)的數(shù)據(jù)處理的再執(zhí)行,實現(xiàn)耐故障性的檢查點重新運行方式進行的故障修復(fù)機構(gòu)的計算機系統(tǒng)中,在由硬件故障引起的硬件故障或由軟件錯誤引起的軟件故障發(fā)生時,由于具備了區(qū)分所述硬件故障和所述軟件故障的故障識別模塊,在發(fā)生所述軟件故障時記錄故障發(fā)生時的系統(tǒng)狀態(tài)的系統(tǒng)狀態(tài)記錄模塊,以及重新運行直到檢查點的時間點之后,從關(guān)于所述軟件故障的軟件故障發(fā)生時使?fàn)顟B(tài)的程序執(zhí)行環(huán)境發(fā)生變化的軟件執(zhí)行環(huán)境操作模塊,通過對系統(tǒng)再執(zhí)行,就能避免由所述軟件錯誤引起的軟件故障。
這樣,通過形成檢測軟件故障的發(fā)生,伴隨軟件故障的發(fā)生,通過重新運行回到故障發(fā)生前的狀態(tài)、使造成故障發(fā)生的軟件執(zhí)行環(huán)境改變之后,再執(zhí)行系統(tǒng)的方法的結(jié)構(gòu),使得不僅以基于以往檢查重新運行方式的硬件間斷故障作為對象的故障修復(fù),而且由軟件故障引起的故障,修復(fù)也成為可能,可以提高計算機系統(tǒng)的性能。
第3發(fā)明的特征是,它是這樣的計算機系統(tǒng),該系統(tǒng)具有在系統(tǒng)中發(fā)生了故障時,通過從故障發(fā)生前的狀態(tài)再執(zhí)行數(shù)據(jù)處理,實現(xiàn)耐故障性的檢查點重新運行方式進行的故障修復(fù)的機構(gòu),該系統(tǒng)具備當(dāng)系統(tǒng)中發(fā)生故障時,識別該故障是由軟件錯誤引起的軟件故障的故障識別模塊,用所述故障識別模塊識別軟件故障的發(fā)生時記錄故障發(fā)生時的系統(tǒng)的狀況的系統(tǒng)狀況記錄模塊、在由所述系統(tǒng)狀況記錄模塊所記錄的信息基礎(chǔ)上推斷有關(guān)軟件故障發(fā)生的主要原因的軟件故障發(fā)生主要原因推斷模塊、推斷由所述軟件故障發(fā)生主要原因推斷模塊所推斷的、有關(guān)軟件故障發(fā)生的主要原因的避免方法的軟件故障避免方法推斷模塊、在重新運行后實施有關(guān)由所述軟件故障避免方法推斷模塊所推斷的所述軟件故障發(fā)生的主要原因的避免方法的軟件故障避免方法實施模塊,以及根據(jù)由所述系統(tǒng)狀況記錄模塊所記錄的信息、改變在重新運行后的再執(zhí)行時的程序執(zhí)行環(huán)境的軟件執(zhí)行環(huán)境操作模塊,并在軟件故障發(fā)生時,在由有關(guān)所述軟件故障發(fā)生的主要原因的推斷所進行的避免方法的推斷有困難的情況下,在由所述軟件執(zhí)行環(huán)境操作模塊操作了軟件執(zhí)行的環(huán)境之后再執(zhí)行系統(tǒng),就避免由軟件錯誤引起的軟件故障。
這樣,通過組合由實施有關(guān)由軟件故障避免方法推斷模塊所推斷的軟件故障發(fā)生原因的避免方法的軟件故障避免方法實施模塊所實現(xiàn)的、從積極去掉軟件故障之后的檢查點再起動系統(tǒng)的功能和從軟件故障發(fā)生時的狀況起改變程序執(zhí)行環(huán)境的、由軟件執(zhí)行環(huán)境操作方法實現(xiàn)的、在改變了軟件執(zhí)行環(huán)境之后、從檢查點開始再起動系統(tǒng)的功能,就能提高有關(guān)軟件故障的故障避免率、進一步提高計算機系統(tǒng)的可靠性。
第4發(fā)明的特征是,在規(guī)定的次數(shù)內(nèi),返復(fù)實施根據(jù)至少由所述軟件故障避免方法實施模塊所實施的有關(guān)軟件故障發(fā)生原因的避免方法,或者所述軟件執(zhí)行環(huán)境操作模塊所實施的多個軟件執(zhí)行環(huán)境操作的方法所進行的處理,直到軟件故障被避免。
這樣,關(guān)于一個軟件故障,在規(guī)定的次數(shù)內(nèi)通過返復(fù)實施有關(guān)由軟件故障避免方法實施模塊所實施的軟件故障發(fā)生原因的避免方法,以及由軟件執(zhí)行環(huán)境操作模塊所實施的多個軟件執(zhí)行環(huán)境操作的方法,直到該軟件故障被避免,就能提高有關(guān)軟件故障的避免率。
第5發(fā)明的特征是,在實施所述軟件故障避免方法實施模塊、或?qū)嵤┧鲕浖?zhí)行環(huán)境操作模塊,再執(zhí)行系統(tǒng)之后,重新出現(xiàn)了軟件故障時,通過使具有故障原因的軟件模塊與系統(tǒng)分開之后,再執(zhí)行系統(tǒng),就能避免由所述軟件故障錯誤引起的軟件故障。
這樣,通過使相關(guān)的模塊分開的防止不正常狀況發(fā)生于未然,就能避免最終的軟件故障。
第6發(fā)明的特征是,在實施所述軟件故障避免方法實施模塊,或所述軟件執(zhí)行環(huán)境操作模塊、再執(zhí)行了系統(tǒng)之后,又一次出現(xiàn)了軟件故障時,從系統(tǒng)中抹去引起軟件故障的進程式線程之后再執(zhí)行系統(tǒng)。
通過附加這樣的功能,抹去引起軟件故障的進程或線程,就能使不正常狀況的發(fā)生防患于未然,避免最終的軟件故障。
第7發(fā)明的特征是,在所述第5發(fā)明中,動態(tài)地而且同時不使系統(tǒng)停止地從具有故障原因的軟件模塊變換到去掉了故障原因的軟件模塊中。
附加這樣的功以,對于被分開的模塊來說,在修正不正常狀況之后,通過像硬件部件的部件交換那樣能夠替換,就能提高系統(tǒng)的可靠性。
第8發(fā)明的特征是,在規(guī)定的次數(shù)內(nèi)在返復(fù)實施了由至少所述軟件故障避免方法實施模塊或所述軟件執(zhí)行環(huán)境操作模塊所進行的動作直到軟件故障被避免之后,當(dāng)再次出現(xiàn)了軟件故障時,就實施系統(tǒng)的再恢復(fù)。
根據(jù)附加這樣的功能,通過有限次實施各種軟件故障避免策略,就能避免避免策略的無限次使用。
第9發(fā)明的特征是,所述系統(tǒng)狀況記錄模塊將軟件故障發(fā)生時的系統(tǒng)狀況記錄在末重新運行的存儲區(qū)域或非易失性的存儲裝置中作為用于分析軟件故障發(fā)生原因的提供信息。
這樣,通過將有關(guān)軟件故障的信息記錄在未重新運行的存儲區(qū)域非易失性的存儲裝置中,就能提高可以分析有關(guān)故障原因的系統(tǒng)的維修性。
第10發(fā)明的特征是,所述軟件故障發(fā)生原因推斷模塊將所推斷了的故障發(fā)生原因記錄在未重新運行的存儲器或非易性失性的存儲裝置中,用為用于分析故障發(fā)生原因的提供信息。
這樣,通過將軟件故障避免中所實施的發(fā)生原因記錄在未重新運行的存儲器或非易失性的存儲裝置中,就能提高故障發(fā)生后的系統(tǒng)的維修性。
第11發(fā)明的特征是,所述軟件故障避免方法推斷模塊將有關(guān)被推斷的軟件故障發(fā)生原固的避免方法記錄在未重新運行的存儲器非易失性的存儲裝置中作為用于實施故障避免方法的提供信息。
這樣,通過將軟件故障避免中所實施的發(fā)生原因記錄在未重新運行的存儲器或非易失性的存儲裝置中,就能提高故障發(fā)生后的系統(tǒng)的維修性。
第12發(fā)明的特征是,所述系統(tǒng)狀況記錄模塊將有關(guān)軟件故障發(fā)生時的系統(tǒng)的存儲器、各種裝置的數(shù)據(jù)等的轉(zhuǎn)出根據(jù)用戶的要求開始寫到外部存儲裝置中,作為用于分析軟件故障發(fā)生原因的信息來提供。
通過附加這樣的功能,記錄有關(guān)軟件故障的系統(tǒng)的轉(zhuǎn)出信息,就能分析有關(guān)故障的原因、提高系統(tǒng)的維修性。
第13發(fā)明的特征是,所述軟件執(zhí)行環(huán)境操作模塊包含把運行的處理程序數(shù)作為軟件執(zhí)行環(huán)境操作之一進行變更的模塊。
通過配置這樣的功能、改變運行的處理程序數(shù),防止不正常狀況發(fā)生于未然,就能夠避免軟件故障。
第14發(fā)明的特征是,所述軟件執(zhí)行環(huán)境操作步驟包含把在有關(guān)引起軟件故障的進程(process)或線程(thread)的堆棧方面的自動變量區(qū)域作為軟件執(zhí)行環(huán)境操作之一進行清除的裝置。
這樣,作為忘記自動變量初始化的對策,通過積極地清除它,使不正常狀況的發(fā)生防止于未然,就能避免軟件故障。
第15發(fā)明的特征是,所述軟件執(zhí)行環(huán)境操作模塊包含作為軟件執(zhí)行環(huán)境操作之一的、動態(tài)地補充在系統(tǒng)中使用的資源的裝置。
通過配備這樣的模塊,防止因資源不足而發(fā)生不正常狀況于未然,就能避免軟件故障。
第16發(fā)生的特征是,所述軟件執(zhí)行環(huán)境操作模塊包含作為軟件執(zhí)行環(huán)境操作之一的,調(diào)整輸入輸出要求的發(fā)送定時的方法。
通過配置這樣的方法,改變有關(guān)輸入輸出要求的發(fā)送定時、防止不正常狀況發(fā)生于未然,就能避免軟件故障。
第17發(fā)明的特征是,在所述軟件故障避免方法實施模塊中,軟件故障發(fā)生原因如果是由軟件故障發(fā)生原因推斷方法推斷為對未裝入到物理存儲器上的虛擬存儲器的存取,則在軟件故障避免方法推斷模塊中,作為有關(guān)該軟件故障發(fā)生原因的避免方法,當(dāng)推斷為確保有關(guān)虛擬存儲器的物理存儲器時,就實施所述被推斷的避免方法。
通過配備這樣的方法,防止不能分頁狀況發(fā)生于未然、就能避免軟件故障。
第18發(fā)明的特征是,在所述軟件故障避免方法實施模塊中,軟件故障發(fā)生原因如果由軟件故障發(fā)生原因推斷方法推斷是有關(guān)在多處理程序環(huán)境中的互斥控制的死鎖,則在軟件故障避免方法推斷模塊中,作為有關(guān)該軟件故障發(fā)生原因的避免方法,在推斷為改變運行的處理器數(shù)以及實施互斥控制的代碼時,就實施所述的避免方法。
通過配備這樣的方法,防止死鎖狀況發(fā)生于未然,就能避免軟件故障。
第19發(fā)明的特征是,實施有關(guān)在所述多處理程序環(huán)境中的互斥控制的死鎖的避免方法,并在系統(tǒng)再執(zhí)行后,進行了軟件故障避免時,使用隨后的檢查點采集方法的一環(huán),使實施運行的處理器數(shù)以及互斥控制的代碼回到原來狀態(tài),使系統(tǒng)變成軟件故障發(fā)生前的系統(tǒng)的運行狀態(tài)。
通過配備這樣的方法,在故障避免后,解除(還原)對作為故障避免方法而實施的系統(tǒng)的變更(縮小在系統(tǒng)運行中的規(guī)格)狀態(tài),在故障排除后,能夠使系統(tǒng)回到正常狀態(tài),使系統(tǒng)能運行良好,第20發(fā)明的特征是,所述未重新運行的存儲器或非易失性的存儲裝置中所記載的信息,在軟件故障避免后,作為檢查點采集方法的一環(huán),通過計算機系統(tǒng)具有的系統(tǒng)運行記錄(記錄)機構(gòu)被存儲。
通過在故障修復(fù)后的檢查點的時間點熱起動系統(tǒng)的運行記錄(記錄),由于配備這樣的方法,將在軟件故障避免中實施的狀況保存在系統(tǒng)的記錄中,因而能提高故障發(fā)生后的系統(tǒng)的維修性。
圖1表示涉及本發(fā)明的實施形態(tài)的計算機系統(tǒng)整體結(jié)構(gòu)的框圖。
圖2是為說明涉及本發(fā)明第1實施形態(tài)的計算機系統(tǒng)的動作過程的流程圖。
圖3是為說明涉及本發(fā)明的第2實施例的計算機系統(tǒng)的動作過程的流程圖。
圖4是舉例表示在本發(fā)明的實施形態(tài)中的第1具體的軟件故障的動作概念圖。
圖5是舉例表示在本發(fā)明的實施形態(tài)中的第2具體的軟件故障的動作概念圖。
圖6是舉例表示在本發(fā)明的實施形態(tài)中第3具體的軟件故障的動作概念圖。
圖7是舉例表示在本發(fā)明的實施形態(tài)中第4具體的軟件故障的動作概念圖。
圖8是表示檢查點重新運行方式的概念圖。
下面參照設(shè)計圖說明本發(fā)明的實施形態(tài)。
圖1是表示涉及本發(fā)明的一個實施形態(tài)的計算機系統(tǒng)整體結(jié)構(gòu)的框圖。
在圖1中,10是擔(dān)任系統(tǒng)控制的處理器,20是經(jīng)由總線40連接處理器10形成主存儲的存儲器、30是同樣地經(jīng)由總線被連接的非易失性的存儲器、這里,軟件故障發(fā)生時的系統(tǒng)的狀況、軟件故障發(fā)生原因、軟件故障避免方法等信息至少被存儲器在存儲器20的未重新運行的存儲區(qū)、或者非易失性的存儲器30的任何一個中。
100至108分別是形成為實現(xiàn)處理器10所具有的故障修復(fù)機構(gòu)的操作系統(tǒng)的構(gòu)成固素,100是采集系統(tǒng)的檢查點的檢查點采集模塊、101是在故障發(fā)生時向檢查點進行重新運行的檢查點重新運行模塊、102是再起動系統(tǒng)的系統(tǒng)再執(zhí)行模塊。
103是在由硬件故障引起的硬件故障或由軟件錯誤而引起的軟件故障發(fā)生時區(qū)分硬件故障或軟件故障的故障識別模塊。
104是在由所述故障識別模塊103判斷為該故障為軟件故障時記錄故障發(fā)生時的系統(tǒng)的狀況(處理器的寄存器、堆棧內(nèi)容等)的系統(tǒng)狀況記錄模塊。
105是當(dāng)軟件故障發(fā)生時推斷有關(guān)該軟件故障的發(fā)生原因的軟件故障發(fā)生原因推斷模塊、106是推斷避免該軟件故障的方法的軟件故障避免方法推斷模塊。
107是在由所述系統(tǒng)再執(zhí)行模塊102所進行的系統(tǒng)再執(zhí)行前由所述軟件故障避免方法推斷模塊106所推斷的、實施該軟件故障避免方法的軟件故障避免方法實施模塊。
108是在由所述軟件故障發(fā)生原因推斷模塊105推斷有關(guān)該軟件故障的發(fā)生原因有困難時,在重新運行之后被實施的軟件執(zhí)行環(huán)境操作模塊。
在存儲器20中設(shè)置了在通過故障識別模塊103判斷了故障是軟件故障時,該軟件故障發(fā)生時的系統(tǒng)狀況(處理器的寄存器、堆棧內(nèi)容等)由所述系統(tǒng)狀況記錄模塊104所記錄的軟件故障發(fā)生狀況記錄區(qū)200、有關(guān)由軟件故障發(fā)生原因推斷模塊105所推斷的該軟件故障的發(fā)生原因記錄的軟件故障發(fā)生原因記錄201、以及關(guān)于該軟件故障的、由軟件故障避免方法推斷模塊106所推斷的該軟件故障避免方法被記錄的軟件故障避免記錄區(qū)202等。
在非易失性的存儲器30中設(shè)置了記錄了與上述軟件故障發(fā)生狀況記錄區(qū)200具有同樣的內(nèi)容的軟件故障發(fā)生狀況記錄區(qū)300、記錄了與上述軟件故障發(fā)生原因記錄201有同樣的內(nèi)容的軟件故障發(fā)生原因記錄301、以及記錄與上述軟件故障避免方法記錄區(qū)202有同樣的內(nèi)容的軟件故障避免方法記錄區(qū)302等。
上述存儲器20和非易失性存儲器30在計算機系統(tǒng)中能夠有選擇地具備其雙方或任何一個。但是,在具備存儲器20時,需要是未通過檢查點重新運行重新運行的存儲器。
在參照圖2中所示的流程圖的同時說明涉及伴隨故障發(fā)生的本發(fā)明第1實施形態(tài)的計算機系統(tǒng)的動作流程。
在系統(tǒng)中如果發(fā)生故障,則故障識別模塊103對所發(fā)生的故障是硬件故障(則硬件故障引起的故障)還是軟件故障(由軟件錯誤而引起的故障)進行區(qū)分(圖2中步驟S1)。
通常,硬件故障的檢測,由硬件機構(gòu)實施通過故障中斷通知軟件。
另一方面,軟件故障的檢測通過基于軟件邏輯一貫性檢查(斷言和應(yīng)急例程等)、或異常方法等進行。
所述故障識別模塊103是通過這些檢測機構(gòu)實施,并進行故障識別。
在這里,如果故障原因被判斷為是硬件故障時,通過檢查點重新運行模塊101實施系統(tǒng)的重新運行(圖2步驟S1,S8)。
在該實施形態(tài)中,關(guān)于有關(guān)硬件故障的對應(yīng),由于與通常的檢查點重新運行方式的計算機相同,其詳細說明省略。
如果判斷故障原因是軟件故障時,通過系統(tǒng)狀況記錄方法104將故障發(fā)生時的系統(tǒng)狀況(處理器的寄存器、堆棧內(nèi)容等)記錄在軟件故障發(fā)生狀況記錄區(qū)200、300中(圖2步驟S3)。另外,通過操作,在該時間點,將有關(guān)不正常狀況發(fā)生時的系統(tǒng)的存儲器、各種裝置的數(shù)據(jù)等轉(zhuǎn)出寫到外部存儲裝置中以便日后進行故障分析。
軟件故障發(fā)生原因推斷模塊105判斷是否能推斷該軟件故障發(fā)生原因,在不可能推斷時,由檢查點重新運行模塊101實施系統(tǒng)的重新運行(圖2步驟S4)。
另外,在能夠推斷該軟件故障發(fā)生原因時,將有關(guān)由軟件故障發(fā)生原因推斷模塊105所推斷的該軟件故障發(fā)生原因記錄在軟件故障發(fā)生原因記錄201、301中(圖2步驟S5)。
接著,軟件故障避免方法推斷模塊106推斷避免該軟件故障的方法(圖2步驟S6),并將該軟件故障避免方法記錄在軟件故障避免方法記錄區(qū)202、302中(圖2步驟S7)、通過檢查點重新運行裝置101實施系統(tǒng)的重新運行(圖2步驟S8)。
在檢查點重新運行之后,判斷所發(fā)生的故障是軟件錯誤還是硬件故障,在判斷是硬件故障時,實施由系統(tǒng)再執(zhí)行模塊102所進行的再執(zhí)行處理(圖2步驟S9,S14)。
在軟件故障的情況下,判斷是否是初次實施有關(guān)該軟件故障-序列恢復(fù)處理(圖2步驟S11),在初次實施的情況下,由軟件故障避免方法記錄區(qū)202,302判斷是否正在推斷由軟件故障避免方法推斷模塊106所推斷的該軟件故障避免方法(圖2步驟S12),在正在推斷時,從所述軟件故障避免方法記錄區(qū)202,302的信息中,由軟件故障避免方法實施模塊107實施了該軟件故障避免方法后(圖2步驟S13),實施系統(tǒng)再執(zhí)行模塊102(圖2步驟S14)。
在軟件故障避免方法推斷模塊106沒有推斷該軟件故障避免方法時,在實施軟件執(zhí)行環(huán)境操作方法108之后(圖2步驟S15),實施系統(tǒng)再執(zhí)行模塊102(圖2步驟S14)。
在第2次實施有關(guān)該軟件故障的一序列恢復(fù)處理時(第一次實施的軟件故障避免方法無效又發(fā)生軟件故障時)(圖2步驟S16),將具有故障原因的軟件模塊分離或者把認為引起故障原因的進程(或線程)從系統(tǒng)中抹去(圖2步驟S17)。
當(dāng)?shù)?次實施有關(guān)該軟件故障的一序列恢復(fù)處理時(第2次實施的處理無效,又發(fā)生了軟件故障時),實施系統(tǒng)的再恢復(fù)(圖2步驟S18)。
下面以具體的軟件故障為例說明本發(fā)明的實施形態(tài)。
首先,以第1具體的軟件故障為例說明本發(fā)明的實施形態(tài)。
在該實施形態(tài)中,涉及到使用有關(guān)虛擬存儲器存取發(fā)生異常的情況。
通常,具有虛擬存儲方式的操作系統(tǒng)中不存在于物理存儲器表面,關(guān)于向虛擬存儲器的存取,是通過把來自處理器(processon)的頁面出錯的異常作為觸發(fā)脈沖(trigger),從外部存儲裝置等加載該頁(調(diào)頁)來實現(xiàn)請求調(diào)頁。
這時,在作為調(diào)頁對象的虛擬存儲頁中,在可能的狀況下必須存取調(diào)頁輸入輸出處理。即,作為操作系統(tǒng)的中斷處理器等中斷延長的程序被執(zhí)行部分通常不作為調(diào)頁的對象,而是在形成軟件模塊時,經(jīng)常有必要考慮常駐在物理存儲器表面。
通常,疏忽了向上述中斷處理器的物理頁的常駐處理的考慮時,操作系統(tǒng)判斷向該虛擬存儲器的調(diào)頁的常駐處理的考慮時,操作系統(tǒng)判斷向該虛擬存儲器的調(diào)頁為不可能,并使系統(tǒng)失效。
圖4是表示在上述故障發(fā)生時,根據(jù)本發(fā)明怎樣實施修復(fù)處理的概念圖。另外,圖中的實線表示時間幀。
在檢查點采集后(圖4的(1)),在上述那樣狀態(tài)下,通過對原來被常駐的、在有關(guān)該虛擬頁存取的時間點(圖4的(2))不應(yīng)發(fā)生頁面出錯的頁的存取,頁面出錯異常將由處理器(程序)通知操作系統(tǒng)(圖4的(3))。
通常,在操作系統(tǒng)中,由于發(fā)生了所述頁面出錯異常,因此實施頁面出錯處理程序,實施是否能夠進行由該頁面出錯異常產(chǎn)生的調(diào)頁處理(圖4的(4))。
當(dāng)頁面出錯發(fā)生時,在符合“虛擬頁是中斷處理器(程序)”、“中斷屏蔽比調(diào)頁輸入輸出中所使用的中斷的優(yōu)先權(quán)高”等條件的情況下,該檢查判斷不可能調(diào)頁。
在通常的操作系統(tǒng)中,之后,采集系統(tǒng)的存儲器轉(zhuǎn)出等,失效后,再引導(dǎo)。
在本發(fā)明的實施形態(tài)中,判斷所述調(diào)頁為不可能以后,將在該時刻的系統(tǒng)狀況(處理器的寄存器、操作系統(tǒng)的堆棧信息等)記錄在未重新運行的存儲器或非易失性的存儲裝置中(圖4的(5)),提供用于分析故障原因的信息。
從所述被記錄的記錄信息中,經(jīng)由所述軟件故障發(fā)生原因推斷方法(圖1的符號105),推斷該軟件故障發(fā)生原因,作為所述軟件故障避免方法推斷模塊(圖1的符號106)的一環(huán),推斷作為恢復(fù)處理應(yīng)實施的動作,并將該動作記錄在未重新運行的存儲器或非易失性的記錄裝置中(圖4的(6))。
之后,進行重新運行直到檢查點時間點(時刻)(圖4的(7))。
重新運行之后,作為所述的恢復(fù)處理被推斷,并記錄在未重新運行的存儲器或非易失性的記錄裝置中的動作作為所述軟件故障避免方法實施模塊(圖1的符號107)的一環(huán)而實施(圖4的(8))。
在該實施形態(tài)的情況下,該軟件故障避免方法實施模塊(圖1的符號107)就對先前頁面出錯異常所發(fā)生的虛頁進行調(diào)頁。
之后,由系統(tǒng)再執(zhí)行模塊(圖1的符號102)從檢查點時間點起再次起動系統(tǒng)(圖4的(9))。
通過實施這些處理,在再次發(fā)生有關(guān)由再執(zhí)行發(fā)生了頁面出錯的該虛頁的存取時(圖4中的(10)),通過抑制頁面出錯的發(fā)生,避免系統(tǒng)失效,就能使系統(tǒng)運行良好。
其次,將說明關(guān)于第二類的軟件故障及與其對應(yīng)的避免方法。在多處理器(程序)情況下,使用了為排除由多處理程序引起的資源操作的爭執(zhí)的鎖定機構(gòu)。
通常,在多處理程序中的鎖定機構(gòu)通過處理程序改寫在原子(區(qū))來實現(xiàn)叫做鎖定變量的主存儲器上取得的區(qū)域。例如,作為軟件出錯,假定在某處理程序?qū)㈡i定變量A改寫在原子區(qū)之后,若同樣的處理程序要再將鎖定變量A改寫在原子區(qū),則由于鎖定變量A已經(jīng)成為鎖定狀態(tài),因此不會進行以上的處理。
下面,以第2具體的軟件故障為例說明本發(fā)明的實施形態(tài)。
在該實施形態(tài)中,涉及到由使用多處理程序環(huán)境中的互斥控制處理雙重確保同一自旋鎖定的死鎖。
圖5是表示根據(jù)本發(fā)明如何實施修復(fù)處理的概念圖。另外,圖中的實線表示時間幀。
在檢查點采集后(圖5中的(1)),發(fā)生由雙重確保同一自旋鎖定引起的死鎖(圖5中的(2)),由于設(shè)置了預(yù)先在自旋鎖定處理規(guī)定的自旋鎖定計數(shù)器,通過該計數(shù)器的溢出,檢測死鎖。由于具備死鎖故障檢測處理,當(dāng)死鎖發(fā)生時,將故障發(fā)生通知給操作系統(tǒng)(圖5的(3))。
這時,將發(fā)生了死鎖這一事實、發(fā)生了死鎖的鎖定種類、達到死鎖發(fā)生的操作系統(tǒng)中的函數(shù)調(diào)用狀況等記錄在所述未重新運行的存儲器或非易失性的存儲裝置中,提供用于分析故障原因的信息。
通過所述軟件故障發(fā)生原因推斷方法(裝置)從所述被記錄的記錄信息中推斷該軟件故障發(fā)生原因,作為所述軟件故障避免方法推斷方法的一環(huán),推斷作為恢復(fù)處理應(yīng)實施的動作,并將該動作記錄在未重新運行的存儲器或非易失性的記錄裝置中(圖5中的(4))。
之后,進行重新運行直到檢查點時刻(圖5之(5))。
重新運行之后,作為所述恢復(fù)處理被推斷,并將記錄在未重新運行的存儲器或非易失性的記錄裝置中的動作作為所述軟件故障避免方法實施方法(圖1的符號107)的一環(huán)而實施(圖5之(6))。
在該第2類軟件故障的情況下,該軟件故障避免方法實施方法(圖1,圖2的記號107)將實施把系統(tǒng)轉(zhuǎn)移到單處理程序方式中等的處理(例如將單處理器中全部線程變更為不操作連接、鎖定處理原始函數(shù)、鎖定變量的中斷屏蔽處理函數(shù))。之后,由系統(tǒng)再執(zhí)行方法(圖1的記號102)從檢查點的時間點起再起動系統(tǒng)(圖5之(7))、由于實施這些處理,通過再執(zhí)行,在又一次發(fā)生了雙重確保同一鎖定的場合(圖5之(8)),由于抑制了死鎖的發(fā)生、避免了雖不至于到處理程序無限循環(huán)狀態(tài)那樣的系統(tǒng)失效但阻礙正常系統(tǒng)運轉(zhuǎn)的軟件故障,從而使系統(tǒng)運行良好。
另外,經(jīng)過某一時間,在所述軟件故障避免之后,又從單處理程序方式回到多處理程序方式,使計算機系統(tǒng)回到正常狀態(tài)(圖5之(9))。
下面將以第3種軟件故障為例說明本發(fā)明的實施形態(tài)。
在該實施形態(tài)中,涉及由軟件故障模塊中的邏輯故障引起的數(shù)據(jù)破壞等軟件故障發(fā)生。
圖6是表示在上述故障發(fā)生時根據(jù)本發(fā)明怎樣實施修復(fù)處理的概念圖。另外,圖中的實線表示時間幀。
在檢查點采集后(圖6之(1)),由于某軟件模塊中的邏輯故障,發(fā)生數(shù)據(jù)破壞(圖6之(2)),以此作為原因,檢測出因向不正確地地址存取而發(fā)生異常,或由軟件的邏輯一貫性檢查例程(斷信和應(yīng)急例程等)檢測出軟件故障(圖6之(3)),并通知操作系統(tǒng)(圖6之(4))。
在通常的操作系統(tǒng)中,之后,采集系統(tǒng)的存儲器轉(zhuǎn)出等,失效后再引導(dǎo)。
在本發(fā)明的實施形態(tài)中,將該時間點的系統(tǒng)狀況(處理器的寄存器、操作系統(tǒng)的堆棧信息等)記錄在未重新運行的存貯器或非易失性的存儲裝置中(圖6之(5)),提供用于分析故障原因的信息。
通過所述軟件故障發(fā)生原因推斷方法(圖1、圖2的記號105),試從所述記錄的記錄信息中推斷該軟件故障發(fā)生原因。
通常關(guān)于由存在于該實施形態(tài)中那樣的、軟件模塊的邏輯引起的數(shù)據(jù)破壞,推斷存在于所述第1及第2實施形態(tài)中那樣的典型的故障原因是困難的。
因此,在推斷這種故障發(fā)生原因有困難的狀況下,在重新運行了直到檢查點時間點(圖7之(6))之后,使用所述軟件執(zhí)行環(huán)境操作方法,通過改變軟件故障發(fā)生的定時,實施了“轉(zhuǎn)移到單處理程序方式(將全部線程、資源結(jié)合到單個處理程序中)”、“清除運行了的線程的堆線上的自動變量區(qū)域(避免忘記自動變量的初始化)”、“補充在系統(tǒng)中使用的資源(避免因資源枯竭引起的失效)”、“調(diào)整輸入輸出要求發(fā)行的定時(避免由伴隨輸入輸出要求的發(fā)行定時、中斷定時的變更而引起的故障發(fā)生情況)”等避免所述軟件故障發(fā)生原因的可能性的某一連串的軟件故障避免方法(圖6之(7))之后,使用系統(tǒng)再執(zhí)行模塊(圖1的記號102),經(jīng)過從檢查點時間點再起動系統(tǒng)(圖6之(8))的過程,通過操作軟件執(zhí)行環(huán)境,避免軟件故障發(fā)生。
實施以上一連串的處理后,認為也有再次由軟件故障引起的故障發(fā)生的情況。
關(guān)于在這樣狀況中的處理方法,將實施以下面示出的第4類軟件故障為例的本發(fā)明實施形態(tài)中的故障避免處理。
在該實施形態(tài)中,涉及適用了以所述第3具體軟件故障為例的實施形態(tài)引起的軟件故障避免方法之后再次發(fā)生軟件故障而避免軟件故障有困難的狀況中的情況。
圖7是表示上述故障發(fā)生時根據(jù)本發(fā)明怎樣實施修復(fù)處理的概念圖。另外,圖中的實線表示時間幀。
由實施以所述第3種軟件故障為例的實施形態(tài)的軟件故障避免處理之后,再一次發(fā)生軟件故障(圖7(2)),檢測出向以此為原因的不正確地存址取而產(chǎn)生的異常情況發(fā)生或由軟件的邏輯一貫性檢查例程(斷言和應(yīng)急例程等)檢測出軟件故障(圖7之(3)),并通知操作系統(tǒng)(圖7之(4))。
之后,在通常的操作系統(tǒng)中,采集系統(tǒng)的存儲器轉(zhuǎn)出等,失效后,再引導(dǎo)。
在本發(fā)明的實施形態(tài)中,將該時間點的系統(tǒng)狀態(tài)(處理器的寄存器、操作系統(tǒng)的堆線信息等)記錄在未重新運行的存儲器或非易失性的存儲裝置中(圖7之(5)),提供用于分析故障原因的信息。
重新運行直到檢查點時刻(圖7之(6))以后,在該時刻,如果判斷出這次發(fā)生的軟件故障是已經(jīng)實施一連串避免方法之后,又發(fā)生軟件故障(已經(jīng)實施了一連串避免方法由標(biāo)志等來管理)(圖7之(7)),在實施“將發(fā)生了不正常情況的軟件故障模塊與系統(tǒng)分開”、“將認為引起不正常情況(故障)的進程(或線程)從系統(tǒng)中抹去?!钡忍幚?圖7之(8))之后,通過由系統(tǒng)再執(zhí)行方法(圖1的記號102)從檢查點時刻起再起動系統(tǒng)(圖7之(9)),避免軟件的故障發(fā)生。
另外,由上述“使發(fā)生故障的軟件模塊與系統(tǒng)分開。”的方法從系統(tǒng)中分開的軟件模塊,從所述系統(tǒng)狀況(記錄在未重新運行的存儲器或非易失性的存儲裝置中)搞清楚有關(guān)軟件故障的原因,實施軟件故障的修正之后,可以動態(tài)地而且不使系統(tǒng)停止替換到已修正的軟件模塊。
例如,在UNIX操作系統(tǒng)中,有關(guān)每個設(shè)備驅(qū)動器的輸入輸出接口具有叫做設(shè)備開關(guān)表的共同結(jié)構(gòu),通過實施改變該表面的該設(shè)備驅(qū)動器入口、釋放設(shè)備驅(qū)動口使用的資源等處理,就能與系統(tǒng)分開。
另外,即使實施了這些處理,在再次發(fā)生軟件故障時,通過實施系統(tǒng)的再起動,就可避免無限地實施一連串的軟件故障修復(fù)處理。
下面一邊參照圖3所示的流程圖一邊說明有關(guān)伴隨故障發(fā)生的本發(fā)明第2實施形態(tài)的計算機系統(tǒng)動作的流程。
若在系統(tǒng)中發(fā)生故障,故障識別模塊103將實施區(qū)分所發(fā)生的故障是硬件故障還是軟件故障(圖3步驟F1)。
若判斷了故障原因是硬件故障時,則由檢查點重新運行模塊101實施系統(tǒng)的重新運行(圖3步驟F1、F8)。
若判斷了故障原因是軟件故障時,則由系統(tǒng)狀態(tài)記錄模塊104,將故障發(fā)生時的系統(tǒng)狀況(處理器的寄存器、堆棧內(nèi)容等)記錄在軟件故障發(fā)生狀況記錄區(qū)200、300中(圖3步驟F3)。
軟件故障發(fā)生原因推斷模塊105判斷該軟件故障發(fā)生原因是否能推斷,不能推斷時,由檢測點重新運行模塊101實施系統(tǒng)的重新運行(圖3步驟F4)。
另外,該軟件故障發(fā)生原因可以推斷時,將由軟件故障發(fā)生原因推斷模塊105推斷的有關(guān)該軟件故障發(fā)生原因記錄在軟件故障發(fā)生原因20、301(圖4步驟F5)。
接著,軟件故障避免方法推斷模塊106推斷該軟件故障的方法(圖3步驟F6)、并將該軟件故障避免方法記錄在軟件故障的避免方法記錄區(qū)202、302中(圖3步驟F7),由檢查點重新運行模塊101實施系統(tǒng)的重新運行(圖3步驟F8)。
檢查點重新運行后,判斷故障原因是由軟件故障引起的還是由硬件故障引起的(圖3步驟F9),當(dāng)判斷為是由硬件故障引起時,則實施系統(tǒng)再執(zhí)行模塊102(圖3步驟F9、F14)。
當(dāng)故障原因由軟件故障引起時,判斷是否在規(guī)定的次數(shù)“N”以內(nèi)實施該軟件故障的一連串的恢復(fù)處理(圖3步驟F11)。在規(guī)定次數(shù)“N”以內(nèi)實施的情況下,由軟件故障的避免方法記錄202,302的信息判斷(圖3步驟F12)是否由軟件故障的避免方法推斷模塊106正在推斷該軟件故障的避免方法,正在推斷時,根據(jù)所述軟件故障的方法記錄區(qū)202、302中的信息由軟件故障的避免方法實施模塊107實施該軟件故障的避免方法之后(圖3步驟13)實施系統(tǒng)再執(zhí)行模塊102(圖3步驟F14)。
由軟件故障的避免方法推斷模塊106不能推斷該軟件故障的避免方法時,在實施軟件執(zhí)行環(huán)境操作模塊108之后(圖3步驟F15),實施系統(tǒng)再執(zhí)行模塊102(圖3步驟F14)。
當(dāng)在規(guī)定次數(shù)“N”以內(nèi)設(shè)有實施該軟件故障的一連串的恢復(fù)處理時,實施系統(tǒng)的起動(圖3步驟F16)。
關(guān)于一個軟件故障發(fā)生,在達到由系統(tǒng)避免之間,以規(guī)定次數(shù)“N”次為上限返復(fù)實施上述步驟F1至步驟F14的處理。
通常,在關(guān)于第2個軟件故障發(fā)生,實施第1個故障的避免方法,再執(zhí)行系統(tǒng)之后,發(fā)生第1個軟件故障時,其發(fā)生原因,或者與第1個軟件故障發(fā)生時的發(fā)生原因相同或不同。以后關(guān)于在規(guī)定次數(shù)“N”以內(nèi)的一連串的處理,其特征是,分析每個故障發(fā)生原因,并一個個地實施響應(yīng)于各種故障原因的處理。
如上所詳述,若根據(jù)本發(fā)明,在具有通過在系統(tǒng)中發(fā)生了故障時從故障發(fā)生前的狀態(tài)再執(zhí)行數(shù)據(jù)處理實現(xiàn)耐故障性的檢查點重新運行方式的故障修復(fù)機構(gòu)的計算機系統(tǒng)中,識別由軟件錯誤引起的系統(tǒng)失效或雖然沒有到處理程序無限循環(huán)狀態(tài)那樣的系統(tǒng)失效的程度但卻成為阻礙正常系統(tǒng)運轉(zhuǎn)的狀態(tài)的所謂軟件故障的發(fā)生,在認識到了該軟件故障的發(fā)生時,有效地應(yīng)用該識別時刻的狀態(tài)信息及采集并推斷軟件故障的發(fā)生原因,或者使用使系統(tǒng)環(huán)境變化等方法,重新運行直到檢查點時刻之后,通過使系統(tǒng)再執(zhí)行,避免由所述軟件錯誤引起的軟件故障,由此不僅能修復(fù)由硬件的間斷故障引起的故障,而且即使在發(fā)生了軟件故障時也能繼續(xù)使計算機系統(tǒng)運行,大幅度地提高系統(tǒng)的可用性。
即,若根據(jù)第1發(fā)明,在發(fā)生了由硬件故障引起的硬件故障、或者由軟件錯誤引發(fā)的系統(tǒng)失效或雖未到處理程序無限循環(huán)狀態(tài)那樣的系統(tǒng)失效但卻變成阻礙正常系統(tǒng)運轉(zhuǎn)的所謂軟件故障時,由于該系統(tǒng)具備將所述硬件故障和所述軟件故障區(qū)別開來的故障識別方法、在發(fā)生了所述軟件故障時記錄故障發(fā)生時的系統(tǒng)狀況的系統(tǒng)狀況記錄方法、推斷有關(guān)所述軟件故障的發(fā)生原因的軟件故障發(fā)生原因推斷方法、推斷有關(guān)由所述軟件故障發(fā)生原因推斷方法所推斷的、軟件故障發(fā)生原因的避免方法的軟件故障避免方法推斷方法,以及在重新運行到檢查點時刻之后實施有關(guān)由所述軟件故障的避免方法推斷方法所推斷的所述軟件故障發(fā)生原因的避免方法的軟件故障的方法實施方法,通過再執(zhí)行系統(tǒng),構(gòu)成了避免由所述軟件錯引發(fā)的軟件故障的結(jié)構(gòu),由此不僅使以基于檢查點重新運行方式的硬件間斷故障作為對象的故障修復(fù),而且使由軟件故障引發(fā)的故障修復(fù)成為可能,可以提設(shè)計算機系統(tǒng)的可用性。
另外,若根據(jù)第2發(fā)明,在發(fā)生了由硬件故障引發(fā)的硬件故障或由軟件錯誤引發(fā)的軟件故障時,由于具備將所述硬件故障和所述軟件故障區(qū)分開來的故障識別方法、在發(fā)生了所述軟件故障時記錄故障發(fā)生時的系統(tǒng)狀況的系統(tǒng)狀況記錄方法,以及在重新運行到檢查點時刻之后,從關(guān)于所述軟件故障的軟件故障發(fā)生時的狀況起改變程序執(zhí)行環(huán)境的軟件執(zhí)行環(huán)境操作方法,并再執(zhí)行系統(tǒng),通過采用避免由所述軟件故障錯誤引發(fā)的軟件故障的結(jié)構(gòu),不僅使以基于以往的檢查點重新運行方式的硬件間斷故障作為對象的故障修復(fù),而且使由軟件故障引起的故障修復(fù)成為可能,可以提高計算機系統(tǒng)的可用性。
另外,若根據(jù)第3發(fā)明,當(dāng)系統(tǒng)中發(fā)生了故障時,由于具備識別該故障是由軟件錯誤引發(fā)的軟件故障的故障識別方法、在用所述故障識別方法認識了軟件故障的發(fā)生時記錄故障發(fā)生的系統(tǒng)狀況的系統(tǒng)狀況記錄方法、根據(jù)由所述系統(tǒng)狀況記錄方法記錄的信息推斷有關(guān)軟件故障的發(fā)生原因的軟件故障發(fā)生原因推斷方法、推斷有關(guān)由所述軟件故障發(fā)生原因推斷方法所推斷的軟件故障發(fā)生原因的避免方法的軟件故障避免方法推斷方法、在重新運行后實施有關(guān)由所述軟件故障避免方法推斷方法所推斷的所述軟件故障發(fā)生原因的避免方法的軟件故障避免方法實施方法,以及根據(jù)由所述系統(tǒng)狀況記錄方法所記錄的信息,改變在重新運行后的再執(zhí)行時的程序執(zhí)行環(huán)境的軟件執(zhí)行環(huán)境操作方法,通過構(gòu)成為在軟件故障發(fā)生時,在由有關(guān)所述軟件故障發(fā)生原因的推斷所產(chǎn)生的避免方法的推斷有困難時,在由所述軟件執(zhí)行環(huán)境操作方法操作了軟件執(zhí)行環(huán)境之后再執(zhí)行系統(tǒng),避免由軟件錯誤引發(fā)的軟件故障,因而能夠提高有關(guān)軟件故障的避免率,更加提高計算機系統(tǒng)的可用性。
另外,若根據(jù)第4發(fā)明,通過采用了這樣的結(jié)構(gòu),即在規(guī)定的次數(shù)內(nèi),返復(fù)實施有關(guān)至少由所述軟件故障避免方法實施方法所實施的軟件故障發(fā)生原因的避免方法的處理或由所述軟件執(zhí)行環(huán)境操作方法實施的多個軟件執(zhí)行環(huán)境操作方法的處理,直到軟件故障被避免,就能夠提高有關(guān)軟件故障的避免率。
另外,若根據(jù)第5發(fā)明,通過構(gòu)成為在實施所述軟件故障避免方法實施方法,或所述軟件執(zhí)行環(huán)境操作方法,并在再執(zhí)行了系統(tǒng)之后,又一次出現(xiàn)了軟件故障時,通過將具有故障原因的軟件模塊從系統(tǒng)中分開之后,再執(zhí)行系統(tǒng),避免由所述軟件錯誤引發(fā)的軟件故障,使有關(guān)聯(lián)的模塊分開就可能防止故障發(fā)生于未然、避免最終的軟件故障。
另外,若根據(jù)第6發(fā)明,在實施所述軟件故障避免方法實施方法、或所述軟件執(zhí)行環(huán)境操作方法、并再執(zhí)行系統(tǒng)之后,又出現(xiàn)了軟件故障時,通過附加從系統(tǒng)中抹去了引起軟件故障的進程或線程之后,再執(zhí)行系統(tǒng)的功能,就可能預(yù)先防止伴隨軟件故障的不正常狀況的發(fā)生,避免最終的軟件故障。
另外,若根據(jù)第7發(fā)明,則在所述第5發(fā)明中,通過附加動態(tài)的而且同時不使系統(tǒng)停止地從具有故障原因的軟件模塊切換為除去了故障原因的軟件模塊的功能,使得在對于被分離的模塊的故障修復(fù)之后,可能像硬件部件的部件互換那樣切換,因此能夠提高系統(tǒng)的可用性。
另外,若根據(jù)第8發(fā)明,通過附加在規(guī)定次數(shù)內(nèi)返復(fù)實施了至少由所述軟件故障避免方法實施方法或所述軟件執(zhí)行環(huán)境操作方法產(chǎn)生的動作直到軟件故障被避免之后,以出現(xiàn)了軟件故障時,實施系統(tǒng)的再起動功能,有限次地實施各種軟件故障避免對策,因而能避免無限次的避免對策的適用。
另外,若根據(jù)第9發(fā)明,通過所述系統(tǒng)狀況記錄方法將軟件故障發(fā)生時的系統(tǒng)狀況記錄在未重新運行的存儲器或非易失性的存儲裝置中作為提供用于分析軟件故障發(fā)生原因的信息,就可以提高能分析有關(guān)故障原因的系統(tǒng)的維修性。
另外,若根據(jù)第10發(fā)明,通過所述軟件故障發(fā)生原因推斷方法將推斷了的故障發(fā)生原因記錄在未重新運行的存儲器或非易失性的存儲裝置中作為提供用于分析故障發(fā)生原因的信息,就有可能提高故障發(fā)生后的系統(tǒng)的維修性。
另外,若根據(jù)第11發(fā)明,通過所述軟件故障避免方法推斷方法將有關(guān)推斷了的軟件故障發(fā)生原因的避免方法記錄在未重新運行的存儲器或非易失性的存儲裝置中作為提供用于實施故障避免方法的信息,就可能提高故障發(fā)生后的系統(tǒng)的維修性。
另外,若根據(jù)第12發(fā)明,通過所述系統(tǒng)狀況記錄方法將有關(guān)軟件故障發(fā)生時的系統(tǒng)的存儲器、各種裝置的數(shù)據(jù)等轉(zhuǎn)出根據(jù)用戶的要求寫到外部存儲裝置中,作為提供用于分析軟件故障發(fā)生原因的信息,就有可能分析有關(guān)故障的原因,提高系統(tǒng)的維修性。
另外,若根據(jù)第13發(fā)明,由于所述軟件執(zhí)行環(huán)境操作方法包含改變運轉(zhuǎn)的處理器個數(shù)作為軟件執(zhí)行環(huán)境操作這一的方法,因而能夠預(yù)先防止改變了運行處理器個數(shù)時的故障發(fā)生,避免軟件故障。
另外,若根據(jù)第14發(fā)明,由于所述軟件執(zhí)行環(huán)境操作方法包含清除有關(guān)引發(fā)軟件故障的進程或線程的堆棧上的自動變量區(qū)作為軟件執(zhí)行環(huán)境操作之一的方法,因此,就有可能將它作為忘記(疏忽)自動變量初始化的對策而積極地清除它,預(yù)防不正常狀況發(fā)生,避免軟件故障。
另外,若根據(jù)第15發(fā)明,由于所述軟件執(zhí)行環(huán)境操作方法包含動態(tài)地補充在系統(tǒng)中使用的資源作為軟件執(zhí)行環(huán)境操作之一的方法,因此,有可能預(yù)防因資源不足引起的故障發(fā)生,避免軟件故障。
另外,若根據(jù)第16發(fā)明,由于所述軟件執(zhí)行環(huán)境操作方法包含調(diào)整輸入輸出要求的發(fā)行定時作為軟件執(zhí)行環(huán)境操作之一的方法,就有可能預(yù)防在改變了有關(guān)輸入輸出要求的發(fā)行定時時的不合適狀況的發(fā)生,避免軟件故障。
另外,若根據(jù)17發(fā)明,在對于所述軟件故障避免方法實施方法,如果軟件故障發(fā)生原因由軟件故障發(fā)生原因推斷方法推斷是對沒有加載在物理存儲器上的虛擬存儲器的存取,并且在軟件故障避免方法推斷方法中,推斷為確保有關(guān)虛擬存儲器的物理存儲器作為有關(guān)軟件故障發(fā)生原因的避免方法時,通過實施所述被推斷的避免方法,就有可能預(yù)防不能調(diào)頁的狀況發(fā)生,避免軟件故障。
另外,若根據(jù)第18發(fā)明,在對于所述軟件故障避免方法實施方法,軟件故障發(fā)生原因如果由軟件故障發(fā)生原因推斷方法推斷是有關(guān)在多處理器環(huán)境中的互斥控制的死鎖,并且在軟件故障避免方法推斷方法,推斷為改變實施運行的處理器個數(shù)的變更,以及互斥控制的代碼作為有關(guān)該軟件故障發(fā)生原因的避免方法時,通過實施所述被推斷的避免方法,有可能預(yù)防死鎖狀況的發(fā)生,避免軟件故障。
另外,若根據(jù)第19發(fā)明,在實施有關(guān)所述多處理器環(huán)境中的有關(guān)互斥控制的死鎖的避免方法,系統(tǒng)再執(zhí)行以后,軟件故障被完成避免時,作為其后的檢查點采集方法的一環(huán),通過將運轉(zhuǎn)的處理器個數(shù)以及實施互斥控制的代碼返回到原始的狀態(tài),使系統(tǒng)處于軟件故障發(fā)生前的系統(tǒng)的運行狀態(tài),由此在故障避免后解除(返回到原始狀態(tài))了作為故障避免于段而實施了的,對系統(tǒng)的變更(縮小系統(tǒng)正在運行中的規(guī)格)狀態(tài),因此,故障排除后,能夠使系統(tǒng)返回到正常狀態(tài),有可能使系統(tǒng)運行良好。
另外,若根據(jù)第20發(fā)明,在所述未重新運行的存儲器或非易失性的存儲裝置中所記載的信息在軟件故障避免后,通過計算機系統(tǒng)具有的系統(tǒng)記錄被存儲作為檢查點采集方法的一環(huán),由此在故障修復(fù)后的檢查點時間點熱起動系統(tǒng)記錄機構(gòu),并將軟件故障避免中所實施的狀況保存在系統(tǒng)記錄中,故有可能提高故障發(fā)生后的系統(tǒng)的維修性。
權(quán)利要求
1.一種計算機系統(tǒng),在具有當(dāng)在系統(tǒng)中發(fā)生了故障時通過從故障發(fā)生前的狀態(tài)再執(zhí)行數(shù)據(jù)處理來實現(xiàn)耐故障性的檢查點座標(biāo)方式的故障修復(fù)機構(gòu)的計算機系統(tǒng)中特征在于,具有在系統(tǒng)中發(fā)生了故障時,識別該故障是由軟件錯誤引發(fā)的軟件故障的故障識別步驟;在用所述故障識別步驟識別了軟件故障的發(fā)生時記錄故障發(fā)生時的系統(tǒng)狀況的系統(tǒng)狀況記錄步驟;根據(jù)由所述系統(tǒng)狀況記錄步驟所記錄的信息推斷關(guān)于軟件故障的發(fā)生原因的軟件故障發(fā)生原因推斷步驟;推斷由所述軟件故障發(fā)生原因推斷步驟所推斷的、有關(guān)軟件故障發(fā)生原因的避免方法的軟件故障避免方法推斷步驟,以及在重新運行按照有關(guān)由所述軟故障避免方法推斷步驟所推斷的所述軟件故障發(fā)生原因的避免方法的故障避免動作之后實施的軟件故障避免方法實施步驟。
2.一種計算機系統(tǒng),在具有當(dāng)系統(tǒng)中發(fā)生了故障時從故障發(fā)生前的狀態(tài)再執(zhí)行數(shù)據(jù)處理實現(xiàn)耐故障性的檢查點重新運行方式的故障修復(fù)機構(gòu)的該計算機系統(tǒng)中,特征是,它具有在發(fā)生了由軟件錯誤引發(fā)的軟件故障時識別該軟件故障的故障識別步驟;在所述故障識別步驟識別了軟件故障發(fā)生時記錄故障發(fā)生時的系統(tǒng)狀況的系統(tǒng)狀況記錄步驟;以及根據(jù)由所述系統(tǒng)狀況記錄步驟所記錄的信息,改變重新運行后的再執(zhí)行時的程序執(zhí)行環(huán)境的軟件執(zhí)行環(huán)境操作步驟;并具有在系統(tǒng)中發(fā)生了故障時再執(zhí)行系統(tǒng)、避免由軟件錯誤等引發(fā)的軟件故障的故障修復(fù)機能。
3.一種計算機系統(tǒng),在具有當(dāng)系統(tǒng)中發(fā)生了故障時通過從故障發(fā)生前的狀態(tài)再執(zhí)行數(shù)據(jù)處理實現(xiàn)耐故障性的檢查點重新運行方式的故障修復(fù)機構(gòu)的計算機系統(tǒng)中,特征是,它具有當(dāng)系統(tǒng)中發(fā)生了故障時識別該故障是由軟件錯誤引發(fā)的軟件故障的故障識別步驟;當(dāng)在所述故障識別步驟中識別出軟件故障的發(fā)生時記錄故障發(fā)生時的系統(tǒng)狀況的系統(tǒng)狀況記錄步驟;根據(jù)由所述系統(tǒng)狀況記錄步驟所記錄的信息推斷有關(guān)軟件故障的發(fā)生原因的軟件故障發(fā)生原因推斷步驟;推斷有關(guān)由所述軟件故障發(fā)生原因推斷步驟所推斷的軟件故障發(fā)生原因的避免方法的軟件故障避免方法推斷步驟;在重新運行有關(guān)由所述軟件故障避免方法推斷步驟所推斷的關(guān)于所述軟件故障發(fā)生原因的避免方法之后實施的軟件故障避免方法實施步驟;以及根據(jù)由所述系統(tǒng)狀況記錄步驟所記錄的信息,改變重新運行后的再執(zhí)行時的程序執(zhí)行環(huán)境的軟件執(zhí)行環(huán)境操作步驟,在軟件故障發(fā)生時,當(dāng)基于由有關(guān)所述軟件故障發(fā)生原因的推斷的避免方法的推斷有困難時,由所述軟件執(zhí)行環(huán)境操作步驟操作了軟件執(zhí)行環(huán)境之后,再執(zhí)行系統(tǒng),從而避免由軟件錯誤引發(fā)的軟件故障。
4.權(quán)利要求1或2或3中記載的計算機系統(tǒng),在規(guī)定次數(shù)內(nèi)返復(fù)實施至少由軟件故障避免方法實施步驟或軟件執(zhí)行環(huán)境操作步驟所產(chǎn)生的動作直到軟件故障被避免。
5.權(quán)利要求1,或2,或3,或4中記載的計算機系統(tǒng),在實施軟件故障避免方法實施步驟或軟件執(zhí)行環(huán)境操作步驟、并再執(zhí)行了系統(tǒng)之后,又出現(xiàn)了軟件故障時,在把具有故障原因的軟件模塊從系統(tǒng)中分離了以后再執(zhí)行系統(tǒng)。
6.權(quán)利要求1,或2,或3,或4中記載的計算機系統(tǒng),在實施軟件故障避免方法實施步驟或軟件執(zhí)行環(huán)境操作步驟、并再執(zhí)行了系統(tǒng)后,又出現(xiàn)了軟件故障時,把引發(fā)軟件故障的進程或線程從系統(tǒng)中抹去之后再執(zhí)行系統(tǒng)。
7.權(quán)利要求5中記載的計算機系統(tǒng),在系統(tǒng)運轉(zhuǎn)狀態(tài)中,與系統(tǒng)分開的軟件模塊能動態(tài)地而且同時不使系統(tǒng)不停止地從具有故障原因的軟件模塊調(diào)換到去掉故障原因的軟件模塊。
8.權(quán)利要求1,或2,或3,或4中記載的計算機系統(tǒng),在規(guī)定次數(shù)內(nèi),在返復(fù)實施了至少由軟件故障避免方法實施方法或軟件執(zhí)行環(huán)境操作方法所產(chǎn)生的動作直到軟件故障被避免之后,又出現(xiàn)了軟件故障時,實施系統(tǒng)的再起動。
9.權(quán)利要求1,或2,或3中記載的計算機系統(tǒng)中,系統(tǒng)狀況記錄步驟將軟件故障發(fā)生時的系統(tǒng)狀況記錄在末重新運行的存儲器或非易失性的存儲裝置中作為提供用于分析軟件故障發(fā)生原因的信息。
10.權(quán)利要求1,或2,或3中記載的計算機系統(tǒng)中,軟件故障發(fā)生原因推斷步驟將所推斷了的故障發(fā)生原因記錄在未重新運行的存儲器或非易失性的存儲裝置中作為提供用于分析故障發(fā)生原因的信息。
11.權(quán)利要求1或3記載的計算機系統(tǒng)中,軟件故障避免方法推斷步驟將有關(guān)推斷了的軟件故障發(fā)生原因的避免方法記錄在未重新運行的存儲器或非易失性的存儲裝置中作為提供用于實施故障避免方法的信息。
12.權(quán)利要求1、或2,或3記載的計算機系統(tǒng)中,系統(tǒng)狀況記錄方法將有關(guān)軟件故障發(fā)發(fā)生時的系統(tǒng)的存儲器,各種裝置的數(shù)據(jù)等轉(zhuǎn)出根據(jù)用戶要求寫到外部存儲裝置中作為提供用于分析軟件故障發(fā)生原因的信息。
13.權(quán)利要求2,或3記載的計算機系統(tǒng)中,軟件執(zhí)行環(huán)境操作步驟將變更運轉(zhuǎn)的處理器個數(shù)作為軟件執(zhí)行環(huán)境操作的一環(huán)。
14.權(quán)利要求2,或3記載的計算機系統(tǒng)中,軟件執(zhí)行環(huán)境操作將清除有關(guān)引發(fā)軟件故障進程或線程的堆棧上的自動變量區(qū)域作為軟件執(zhí)行環(huán)境操作之一。
15.權(quán)利要求2,或3記載的計算機系統(tǒng)中,軟件執(zhí)行環(huán)境操作步驟動態(tài)地補充系統(tǒng)中使用的資源作為軟件執(zhí)行環(huán)境操作之一。
16.權(quán)利要求2,或3記載的計算機系統(tǒng)中,軟件執(zhí)行環(huán)境操作步驟將調(diào)整輸入輸出要求的發(fā)行定時,作為軟件執(zhí)行環(huán)境操作之一。
17.權(quán)利要求1,或3記載的計算機系統(tǒng)中,如果軟件故障發(fā)生原因由軟件故障發(fā)生原因推斷步驟推斷是對在物理存儲上沒有加載的虛擬存儲器的存取,并且作為有關(guān)該軟件故障發(fā)生原因的避免方法由軟件故障避免方法推斷步驟推斷為確保有關(guān)虛擬存儲器的物理存儲器時,軟件故障避免方法實施步驟將實施所述被推斷的避免方法。
18.權(quán)利要求1,或3記載的計算機系統(tǒng)中,如果軟件故障發(fā)生原因由軟件故障發(fā)生原因推斷步驟推斷是有關(guān)多處理器環(huán)境中的互斥控制的死鎖,作為有關(guān)該軟件故障發(fā)生原因的避免方法,當(dāng)由軟件故障避免方法推斷步驟推斷為改變實施運轉(zhuǎn)的處理器個數(shù)的變更,以及互斥控制的代碼時,軟件故障避免方法實施步驟將實施所述被推斷的避免方法。
19.權(quán)利要求18記載的計算機系統(tǒng),在實施有關(guān)在多處理器環(huán)境中的有關(guān)互斥控制的死鎖的避免方法,再執(zhí)行系統(tǒng)以后,軟件故障被完成避免時,作為其后檢查點采集方法的一環(huán),將運轉(zhuǎn)的處理器個數(shù)以及實施互斥控制的代碼返回到原始的狀態(tài),并使系統(tǒng)處于軟件故障發(fā)生前的系統(tǒng)的運行狀態(tài)。
20.權(quán)利要求9,或10,或11記載的計算機系統(tǒng)中,記載在未重新運行的存儲器或非易失性的存儲裝置中的信息通過計算機系統(tǒng)具有的系統(tǒng)記錄被存儲來作為軟件故障避免后檢查點采集方法的一環(huán)。
全文摘要
本發(fā)明在識別軟件故障的發(fā)生時,有效應(yīng)用該識別時間的狀態(tài)信息采集、推斷軟件故障的發(fā)生原因,或使用改變系統(tǒng)環(huán)境等方法,在重新運行到檢查點時間點后,再執(zhí)行系統(tǒng),避免軟件故障,解決方法的特征是在由故障識別方法判斷為該故障是軟件故障時,具備記錄故障發(fā)生時的系統(tǒng)狀況的系統(tǒng)狀況記錄方法;推斷有關(guān)該軟件故障的發(fā)生原因的軟件故障發(fā)生原因推斷方法;推斷避免該軟件故障方法的軟件故障避免方法推斷方法。
文檔編號G06F11/00GK1164708SQ9710451
公開日1997年11月12日 申請日期1997年3月18日 優(yōu)先權(quán)日1996年3月19日
發(fā)明者島田智文, 平山秀昭, 野崎正治 申請人:株式會社東芝