專利名稱:作為計(jì)算機(jī)單元重新啟動(dòng)一部分的故障數(shù)據(jù)收集的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)的故障數(shù)據(jù)收集。更精確地說,本發(fā)明涉及一種解決下述問題的方法這些問題導(dǎo)致控制某個(gè)進(jìn)程(process),例如呼叫的傳輸?shù)挠?jì)算機(jī)重新啟動(dòng)。
計(jì)算機(jī)及其軟件的用戶通常會(huì)碰到下述惱人的故障情況計(jì)算機(jī)切換到初始狀態(tài),即它的表現(xiàn)好似電源剛剛打開。在這種情況下,計(jì)算機(jī)存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)通常會(huì)丟失。操作系統(tǒng)可以給出一個(gè)簡(jiǎn)短的出錯(cuò)消息,例如“一般保護(hù)故障”。這樣一個(gè)出錯(cuò)消息幾乎沒有給用戶或技術(shù)支持人員任何有關(guān)故障原因的信息,或者如何處理以使該情況不會(huì)再出現(xiàn)的建議。另一個(gè)極端由下述方式代表其中特定局域網(wǎng)(NovellNetware)的軟件報(bào)告故障情況。如果網(wǎng)絡(luò)服務(wù)器軟件在執(zhí)行過程中出現(xiàn)差錯(cuò),則允許技術(shù)支持人員將服務(wù)器的整個(gè)存儲(chǔ)器存儲(chǔ)在磁盤上,可能需要數(shù)十張磁盤。如果數(shù)據(jù)太多,顯然不易發(fā)現(xiàn)出錯(cuò)原因。并且,已知方法的問題在于,這些方法都是在計(jì)算機(jī)重新啟動(dòng)之前向用戶報(bào)告。如果出錯(cuò)情況已經(jīng)影響了操作系統(tǒng)的磁盤處理例程,則出錯(cuò)之前的情況將無法存儲(chǔ)在磁盤上。
計(jì)算機(jī)偶爾會(huì)重新啟動(dòng)。為了簡(jiǎn)明起見,在本申請(qǐng)中“重新啟動(dòng)”特指其原因尚待查明的重新啟動(dòng)。
在出錯(cuò)情況下將維護(hù)操作以正確方式導(dǎo)向正確位置是非常重要的。例如1995年8月的“PC Format”第27頁針對(duì)計(jì)算機(jī)軟件故障公開了在1990年1月15日,多達(dá)一半的美國(guó)AT&T電話網(wǎng)經(jīng)常無法使用,在該天中7千萬次呼叫沒有完成。這種故障可以跟蹤到面向軟件控制的AT&T交換機(jī)的維護(hù)操作,它們沒有按規(guī)劃地那樣有效工作。
圖1示出了一種分布計(jì)算機(jī)系統(tǒng)。至少某些計(jì)算機(jī)10和20(在本例中是計(jì)算機(jī)10)每當(dāng)其它計(jì)算機(jī)20的服務(wù)器。服務(wù)器10包括磁盤驅(qū)動(dòng)器11,其中存儲(chǔ)了系統(tǒng)軟件。這些計(jì)算機(jī)通過鏈路1相互連接,鏈路1可以是局域網(wǎng)的電纜,或者是遠(yuǎn)程連接,例如保留的調(diào)制解調(diào)器線路、ISDN連接、無線鏈路或者類似連接。例如計(jì)算機(jī)20的啟動(dòng)方式本身眾所周知,使計(jì)算機(jī)的支持電路25產(chǎn)生一個(gè)啟動(dòng)信號(hào),該信號(hào)使中央處理單元24跳到某個(gè)預(yù)定地址,該地址指示包含初始裝入程序的只讀存儲(chǔ)器22。中央處理單元24執(zhí)行初始裝入程序,引導(dǎo)例如網(wǎng)絡(luò)接口21通過鏈路1從服務(wù)器10首先裝入操作系統(tǒng),操作系統(tǒng)可能包括更高級(jí)的裝入程序。為了能夠執(zhí)行,操作系統(tǒng)和其它程序需要裝入一個(gè)RAM或隨機(jī)存取存儲(chǔ)器23,此后將之稱為主存儲(chǔ)器。在裝入操作系統(tǒng)之后,裝入應(yīng)用程序,計(jì)算機(jī)20執(zhí)行這些程序以完成它的實(shí)際任務(wù)。作為通過鏈路1裝入軟件的一種可選方案,如果計(jì)算機(jī)20具有磁盤驅(qū)動(dòng)器控制器26,也可以通過磁盤驅(qū)動(dòng)器控制器26從本地磁盤驅(qū)動(dòng)器裝入軟件。計(jì)算機(jī)20也可以包括一個(gè)輸出設(shè)備28。
圖2示出了計(jì)算機(jī)20操作系統(tǒng)中對(duì)本發(fā)明重要的部分。在該例示性情況下,操作系統(tǒng)OS包括4種基本功能OS2到OS5,即處理控制、存儲(chǔ)器管理、消息傳輸和進(jìn)程排斥。
圖3示出了說明性的進(jìn)程鏈。更精確地說,該鏈?zhǔn)沁M(jìn)程控制塊(PCB)鏈。該鏈可以是,例如可執(zhí)行進(jìn)程鏈、等待信號(hào)機(jī)中特定事件的進(jìn)程鏈或類似鏈。進(jìn)程Pn通常具有復(fù)雜的動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)。在圖3中,為了說明起見對(duì)其進(jìn)行了簡(jiǎn)化,將與每個(gè)進(jìn)程Pn相關(guān)的數(shù)據(jù)結(jié)構(gòu)壓縮成一個(gè)參數(shù)區(qū)PA,參數(shù)區(qū)PA包含例如進(jìn)程和為進(jìn)程保留的存儲(chǔ)器區(qū)域的狀態(tài)數(shù)據(jù),以及進(jìn)程族的前一個(gè)進(jìn)程和后一個(gè)進(jìn)程的數(shù)據(jù)。當(dāng)進(jìn)程中止時(shí),它應(yīng)該釋放它所占用的所有存儲(chǔ)器。通常引起的存儲(chǔ)器問題是進(jìn)程并沒有釋放它所占用的所有存儲(chǔ)器。如果該進(jìn)程占用存儲(chǔ)器的次數(shù)足夠多,卻沒有釋放它以前占用的存儲(chǔ)器,那么它最終將耗盡所有的可用存儲(chǔ)器,致使其它進(jìn)程無法再使用存儲(chǔ)器。另一個(gè)故障機(jī)制可能是進(jìn)程錯(cuò)誤地位于一個(gè)環(huán)內(nèi),而不接收發(fā)向它的消息。
在1965年E.W.Dijkstra的Programming Languages,ed.Genuys,F(xiàn).,London Academic Press的“Co-operating Sequential Processes”中公開了信號(hào)機(jī)和操作的形式描述。
上述進(jìn)程描述在很大程度上得到了簡(jiǎn)化,但是它足夠說明問題及其解決方案。如果程序(更精確地說是進(jìn)程軟件)裝入計(jì)算機(jī)20,出現(xiàn)故障或例如在計(jì)算機(jī)中發(fā)生存儲(chǔ)器錯(cuò)誤,則計(jì)算機(jī)重新啟動(dòng)。在這種情況下,將重復(fù)上述軟件裝入過程。定位導(dǎo)致重新啟動(dòng)的錯(cuò)誤原因的難點(diǎn)在于,首先,難以區(qū)分相關(guān)數(shù)據(jù)和不相關(guān)數(shù)據(jù)。另一個(gè)問題在于,軟件功能的失效可能會(huì)影響控制網(wǎng)絡(luò)接口21和/或磁盤驅(qū)動(dòng)器控制器26的軟件,從而在重新啟動(dòng)將新數(shù)據(jù)寫入之前,可能根本無法存儲(chǔ)數(shù)據(jù)。
已眾所周知的是,在重新啟動(dòng)期間可以從計(jì)算機(jī)的數(shù)據(jù)區(qū)收集數(shù)據(jù)。例如US專利4930128描述了一種技術(shù),它將分頁數(shù)據(jù)集合存儲(chǔ)在硬盤上作為初始程序裝入的一部分。這種非選擇性數(shù)據(jù)存儲(chǔ)向試圖定位錯(cuò)誤的人員提供了太多的無關(guān)數(shù)據(jù)。如前所述,在定位錯(cuò)誤時(shí)這么大量的未篩選數(shù)據(jù)實(shí)際上毫無用處。
基于上述引言,本發(fā)明的目的是提供一種收集計(jì)算機(jī)系統(tǒng)故障數(shù)據(jù)的方法,在該方法中存儲(chǔ)與發(fā)現(xiàn)錯(cuò)誤原因有關(guān)的數(shù)據(jù),例如用于后續(xù)分析,但是不存儲(chǔ)無關(guān)數(shù)據(jù)。另一個(gè)目的是提供實(shí)現(xiàn)該方法的裝置。
本發(fā)明基于下述事實(shí)在計(jì)算機(jī)操作系統(tǒng)上附加一種功能,該功能在重新啟動(dòng)期間收集對(duì)發(fā)現(xiàn)故障原因可能有重要作用的數(shù)據(jù)。根據(jù)本發(fā)明,計(jì)算機(jī)的存儲(chǔ)器區(qū)域僅在存儲(chǔ)了對(duì)定位故障有重要作用的部分存儲(chǔ)器區(qū)域之后才初始化。更精確地說,實(shí)現(xiàn)本發(fā)明目的的方法和裝置的特征在獨(dú)立權(quán)利要求中公開。在相關(guān)權(quán)利要求中公開了更確切地定義故障數(shù)據(jù)收集的不同方式。
根據(jù)本發(fā)明的方法和裝置首先提供了下述優(yōu)點(diǎn)計(jì)算機(jī)事先篩選了與重新啟動(dòng)相關(guān)的數(shù)據(jù),從而無關(guān)數(shù)據(jù)不再不必要地增加人和計(jì)算機(jī)資源的負(fù)荷。資源的較少使用提供了進(jìn)一步的優(yōu)點(diǎn)即使通過部分損壞的裝置也能收集數(shù)據(jù)。另一個(gè)優(yōu)點(diǎn)是,數(shù)據(jù)是在計(jì)算機(jī)處于一種良好狀態(tài)時(shí)存儲(chǔ)的,所以存儲(chǔ)數(shù)據(jù)可能需要的外圍設(shè)備及其驅(qū)動(dòng)器是可用的。
下面結(jié)合附圖通過優(yōu)選實(shí)施例更詳細(xì)地描述本發(fā)明,在附圖中圖1示出了一種分布計(jì)算機(jī)系統(tǒng);圖2示出了計(jì)算機(jī)操作系統(tǒng)的某些部分;圖3示出了一個(gè)例示性的進(jìn)程鏈,以及圖4的流程圖說明了故障數(shù)據(jù)收集程序的操作。
圖2示出了計(jì)算機(jī)20操作系統(tǒng)的某些部分。根據(jù)本發(fā)明的故障數(shù)據(jù)收集功能OS1可以與操作系統(tǒng)的其它功能一樣放置于操作系統(tǒng)。在圖2中以操作系統(tǒng)第一功能的形式示出了故障數(shù)據(jù)收集功能OS1。這種安排是為了強(qiáng)調(diào)應(yīng)當(dāng)在,例如從磁盤驅(qū)動(dòng)器裝入軟件和數(shù)據(jù)結(jié)構(gòu)再次初始化之前收集故障數(shù)據(jù)。圖2還示出了計(jì)算機(jī)20主存儲(chǔ)器23的一部分保留作存儲(chǔ)區(qū)SA,存儲(chǔ)區(qū)SA的使用將結(jié)合圖3予以解釋。
圖3示出了一個(gè)例示性的進(jìn)程鏈。根據(jù)本發(fā)明的故障數(shù)據(jù)收集程序OS1,例如通過軟件打包技術(shù)接收有關(guān)該鏈的源點(diǎn)信息。同一種技術(shù)可以用于,例如使通用庫的使用成為可能??偹枷朐谟冢鶕?jù)本發(fā)明的故障數(shù)據(jù)收集程序OS1發(fā)現(xiàn)不同進(jìn)程的參數(shù)和進(jìn)程族,其方式與其余軟件OS2到OS5發(fā)現(xiàn)相應(yīng)參數(shù)相同。基于該開始點(diǎn)定位進(jìn)程P10的開始點(diǎn)P10A。進(jìn)程P10與進(jìn)程P11相關(guān),進(jìn)程P11則與進(jìn)程P12和P13相關(guān)。圖3還通過例子示出了進(jìn)程P11還可能與進(jìn)程P14相關(guān)的情況。首先假定這些進(jìn)程可以被動(dòng)態(tài)裝入存儲(chǔ)器,即裝入任意地址,所以進(jìn)程所在的存儲(chǔ)器地址數(shù)據(jù)位于,例如該進(jìn)程族前一個(gè)成員的參數(shù)區(qū)。
下面描述根據(jù)本發(fā)明的故障數(shù)據(jù)收集程序如何發(fā)現(xiàn)那個(gè)進(jìn)程位于某個(gè)環(huán)中。例如可以通過下述方式檢測(cè)這種死鎖存儲(chǔ)上一次發(fā)送給該進(jìn)程的消息,直至該進(jìn)程準(zhǔn)備接收下一個(gè)消息。如果該程序仍停留在環(huán)中,該消息通常也不被釋放。根據(jù)本發(fā)明的故障數(shù)據(jù)收集程序OS1,例如通過檢查參數(shù)區(qū)PA中的進(jìn)程控制塊PCB,可以檢測(cè)到這種情況。
并且,在一些進(jìn)程運(yùn)行之后,可用存儲(chǔ)器將支離破碎,無法向后續(xù)進(jìn)程提供一塊完整的存儲(chǔ)區(qū)。通過操作系統(tǒng)的存儲(chǔ)器管理的數(shù)據(jù)結(jié)構(gòu)可以解決這種問題。
如果在重新啟動(dòng)期間以下述方式存儲(chǔ)進(jìn)程所占用的存儲(chǔ)區(qū)數(shù)據(jù),則對(duì)上述說明性問題的調(diào)查將更易于進(jìn)行(i)從進(jìn)程族列表PL中讀出第一進(jìn)程族的第一成員P10的地址P10A;(ii)基于該地址讀出該進(jìn)程族的第一進(jìn)程的參數(shù)區(qū)PA,并拷貝到存儲(chǔ)區(qū)SA;(iii)對(duì)該進(jìn)程所調(diào)用的所有進(jìn)程遞歸重復(fù)步驟(ii);(iv)從該列表中讀出下一進(jìn)程族的第一成員的地址,重復(fù)步驟(ii)到(iii),直至處理完該進(jìn)程組列表。
在這種前后關(guān)系中,參數(shù)區(qū)PA是指主存儲(chǔ)器23中的某個(gè)區(qū)域,它與每個(gè)進(jìn)程相關(guān),存儲(chǔ)與該進(jìn)程相關(guān)且為本發(fā)明所需的數(shù)據(jù)。下面描述這種必要數(shù)據(jù)的確切性質(zhì)。存儲(chǔ)區(qū)SA也是位于主存儲(chǔ)器23中的某個(gè)區(qū)域,它由根據(jù)本發(fā)明的數(shù)據(jù)收集軟件建立,在重新啟動(dòng)期間進(jìn)程參數(shù)區(qū)PA被拷貝到該區(qū)域。
上述方法可應(yīng)用于進(jìn)程可被裝入任何存儲(chǔ)器區(qū)域的一般情況。如果特定進(jìn)程總是被裝入特定地址,則在程序編譯期間以已知方式直接得到它們的參數(shù)區(qū)的起始和終止地址。在根據(jù)本發(fā)明的分析程序中,可以參照這些地址,其方式也與建立其余軟件時(shí)所參照的一樣。在這種情況下,可以使用一種更簡(jiǎn)單的方法,該方法可以以下述偽碼的形式表示將P10.PA拷貝到SA.PA1將P11.PA拷貝到SA.PA2Pn.PA是指進(jìn)程Pn的參數(shù)區(qū),相應(yīng)地,SA.PAn是指進(jìn)程Pn參數(shù)區(qū)被拷貝到的存儲(chǔ)區(qū)SA中的區(qū)域。轉(zhuǎn)換成一種實(shí)際的編程語言,上面給出的偽碼將以下述方式實(shí)現(xiàn)P10.PA的起始地址被裝入源寄存器以進(jìn)行拷貝,SA.PA1的起始地址被裝入目標(biāo)寄存器,而P10.PA的字節(jié)數(shù)則被裝入指示拷貝字節(jié)數(shù)的寄存器。SA.PA2的起始地址由P10.PA的字節(jié)數(shù)加上SA.PA1的起始地址等得到。相應(yīng)地,任一進(jìn)程Pn的參數(shù)區(qū)PA被拷貝到存儲(chǔ)區(qū)SA的某個(gè)地址,該地址通過前一進(jìn)程Pn-1的參數(shù)區(qū)PA大小加上前一進(jìn)程存儲(chǔ)區(qū)的起始地址SA.PAn-1得到。
為了說明本發(fā)明,上面假定每個(gè)進(jìn)程的參數(shù)區(qū)PA是一個(gè)完整的存儲(chǔ)器區(qū)域。如果參數(shù)區(qū)被分布成若干不同區(qū)域,則必須對(duì)分布參數(shù)區(qū)的每一段重復(fù)上述將參數(shù)區(qū)拷貝到存儲(chǔ)區(qū)SA的步驟。
通過檢查與進(jìn)程相關(guān)的信號(hào)機(jī)(semaphores)也可以得到有價(jià)值的數(shù)據(jù)。信號(hào)機(jī)是一個(gè)包括等待狀態(tài)的計(jì)數(shù)器,通過它可以實(shí)現(xiàn)進(jìn)程間的互斥。進(jìn)程的使用方式通常是僅有一個(gè)進(jìn)程能夠處理信號(hào)機(jī)所保護(hù)的區(qū)域。這種由信號(hào)機(jī)所保護(hù)的區(qū)域由起始于所謂的P操作而終止于所謂的V操作的軟件例程進(jìn)行處理。P操作減小計(jì)數(shù)器的值,如果該值過小(負(fù)值),則進(jìn)程自己加入信號(hào)機(jī)隊(duì)列。否則進(jìn)程繼續(xù)運(yùn)行P操作之后的代碼。在代碼結(jié)束處,進(jìn)程執(zhí)行V操作,該操作增大了計(jì)數(shù)器的值。如果該值已為負(fù)數(shù),則啟動(dòng)備用進(jìn)程,它則訪問被保護(hù)的數(shù)據(jù)。
問題在于,如果進(jìn)程在保護(hù)區(qū)中(即當(dāng)它控制信號(hào)機(jī)時(shí))出錯(cuò),則該信號(hào)機(jī)隊(duì)列終止,而沒有任何特殊措施。另一方面,程序可能出現(xiàn)故障,它根本就不執(zhí)行V操作。通過指示參數(shù)區(qū)中進(jìn)程所控制的所有信號(hào)機(jī)的相關(guān)數(shù)據(jù),可以解決這些問題。
對(duì)實(shí)際應(yīng)用而言,上述方法產(chǎn)生了太多未充分篩選的數(shù)據(jù)。實(shí)際上,在數(shù)據(jù)被傳送給人們進(jìn)行分析之前,必須較精確地篩選數(shù)據(jù)。將清除故障所需的相關(guān)數(shù)據(jù)從大約32兆字節(jié)的主存儲(chǔ)器壓縮成幾個(gè)或者甚至是一個(gè)可讀頁面應(yīng)當(dāng)例如作為一個(gè)目標(biāo)。在這種情況下,必需從主存儲(chǔ)器發(fā)現(xiàn)定位故障必需的0.01%的數(shù)據(jù)。一種合適的技術(shù)是,故障數(shù)據(jù)收集程序?qū)M(jìn)程所占用的存儲(chǔ)器設(shè)置預(yù)定門限值。僅存儲(chǔ)占用的存儲(chǔ)器數(shù)量超過該門限的那些進(jìn)程的參數(shù)區(qū)??蛇x地,故障數(shù)據(jù)收集程序可以以上述方式兩次仔細(xì)檢查進(jìn)程鏈家族。第一次僅包括發(fā)現(xiàn)每個(gè)進(jìn)程或進(jìn)程族占用了多少存儲(chǔ)器。第二次在存儲(chǔ)區(qū)存儲(chǔ)占用存儲(chǔ)器最多的幾個(gè)或僅一個(gè)進(jìn)程族的參數(shù)區(qū)。
以上為了符合一般性假定了進(jìn)程族列表PL是一個(gè)線性列表,即一個(gè)進(jìn)程族的后繼有且僅有一個(gè)進(jìn)程族(或者就是該列表的結(jié)束)的鏈。還假定了在一個(gè)進(jìn)程族內(nèi)進(jìn)程Pn可以形成樹形結(jié)構(gòu)。如果實(shí)際情況較前述之一更簡(jiǎn)單,例如進(jìn)程族中的進(jìn)程僅形成了線性列表,則為了簡(jiǎn)單可以刪除樹形結(jié)構(gòu)的處理。
本發(fā)明必需的參數(shù)區(qū)PA的內(nèi)容可以包括,例如下面與特定處理器(例如使用Intelx86)相關(guān)的事件-進(jìn)程所占用的存儲(chǔ)區(qū)(大小、占用時(shí)間、使用)-進(jìn)程已發(fā)送但仍未被接收的消息-進(jìn)程設(shè)置的時(shí)間監(jiān)控-進(jìn)程所打開的文件-進(jìn)程所占用的共享資源,例如對(duì)共享信號(hào)機(jī)執(zhí)行的P操作-在棧中以及在數(shù)據(jù)區(qū)中的與具體應(yīng)用相關(guān)的變量,以及由操作系統(tǒng)存儲(chǔ)在這些區(qū)域中的數(shù)據(jù)。
相應(yīng)地,所有進(jìn)程共享的數(shù)據(jù)包括
-存儲(chǔ)器占用數(shù)據(jù),尤其是與可用存儲(chǔ)器相關(guān)的數(shù)據(jù)-與存儲(chǔ)器占用相關(guān)的信號(hào)機(jī)-用于一般用途的信號(hào)機(jī)-操作系統(tǒng)的出錯(cuò)記錄根據(jù)本發(fā)明的故障數(shù)據(jù)收集程序OSl,可以從存儲(chǔ)器中發(fā)現(xiàn)這些數(shù)據(jù)結(jié)構(gòu)并從中得到數(shù)據(jù),其方式與其余軟件處理相同數(shù)據(jù)結(jié)構(gòu)的方式相同。同時(shí),也有利于增補(bǔ)故障數(shù)據(jù)收集程序,并且可以通過強(qiáng)制控制記錄來控制程序的操作,強(qiáng)制控制記錄可以指令程序從特定存儲(chǔ)區(qū)收集數(shù)據(jù)。待收集的這些存儲(chǔ)區(qū)可以由絕對(duì)地址或符號(hào)標(biāo)簽指示(如果相應(yīng)的鏈接表存儲(chǔ)在該計(jì)算機(jī)的存儲(chǔ)器中)。試圖定位故障的技術(shù)支持人員可以通過任一簡(jiǎn)單的字處理程序生成這種強(qiáng)制控制記錄。在最簡(jiǎn)單的形式下,這些記錄可以僅包括兩個(gè)參數(shù)一個(gè)起始地址和一個(gè)終止地址,故障數(shù)據(jù)收集程序?qū)⑦@兩個(gè)地址間區(qū)域的內(nèi)容拷貝到存儲(chǔ)區(qū)。程序還可以拷貝一個(gè)標(biāo)識(shí)符,例如起始地址。實(shí)際上,故障大多發(fā)生在預(yù)料不到的地方。通過強(qiáng)制控制記錄,也可以從啟動(dòng)故障數(shù)據(jù)收集程序時(shí)未預(yù)料到的地方收集數(shù)據(jù)。
圖4示出了根據(jù)本發(fā)明的故障數(shù)據(jù)收集程序OSl的一種說明性實(shí)施例的可能步驟。該收集程序與其余軟件一起被裝入存儲(chǔ)器(步驟S0)。在該步驟中,設(shè)置下一次重新啟動(dòng)之后所需進(jìn)行的跳轉(zhuǎn),使之定向到該收集程序。下一次重新啟動(dòng)激活了該收集程序(步驟S5)。收集程序從主存儲(chǔ)器23的強(qiáng)制控制記錄表中讀出第一記錄(步驟S10)。如果存在這種記錄,收集程序?qū)ζ溥M(jìn)行處理(步驟S20)。如果在步驟S15檢測(cè)到已位于強(qiáng)制控制記錄表末尾,則收集程序進(jìn)行到步驟S25以搜索該進(jìn)程的數(shù)據(jù)結(jié)構(gòu)。在步驟S30中,檢查是否已處理了所有的數(shù)據(jù)結(jié)構(gòu)。如果沒有,則在步驟S35檢查該數(shù)據(jù)結(jié)構(gòu)是否包含任何反常屬性。如果沒有,步驟S40中該數(shù)據(jù)結(jié)構(gòu)的必要部分被拷貝到存儲(chǔ)區(qū)SA。如果在步驟S30中檢測(cè)到已位于該數(shù)據(jù)結(jié)構(gòu)表末尾,則程序進(jìn)行到步驟S45,裝入軟件的其它部分,其中處理外圍設(shè)備,例如磁盤驅(qū)動(dòng)器的例程對(duì)本發(fā)明是必要的。裝入了處理外圍設(shè)備的例程之后,在步驟S50拷貝存儲(chǔ)區(qū)SA的內(nèi)容以供技術(shù)支持人員使用。技術(shù)支持人員可能以打印出的報(bào)告、磁盤文件或通過發(fā)往遠(yuǎn)程工作站的電話接收到存儲(chǔ)區(qū)SA的內(nèi)容。
在某些系統(tǒng)中,故障程序可能會(huì)使主存儲(chǔ)器變得完全混亂,甚至還會(huì)引起故障數(shù)據(jù)收集程序的失效??梢酝ㄟ^將故障數(shù)據(jù)收集程序放置在一個(gè)受到保護(hù)、至少不會(huì)被無意覆蓋的存儲(chǔ)器來限制這種風(fēng)險(xiǎn)。例如通過將故障數(shù)據(jù)收集程序放置在ROM或者FLASH存儲(chǔ)器,或者通過處理器寄存器的使用,防止寫入收集程序所在存儲(chǔ)器段來實(shí)現(xiàn)這種保護(hù)。
以上通過針對(duì)Intelx86處理器的例子說明了本發(fā)明的實(shí)施例。顯然,本發(fā)明并不局限與此,而可以應(yīng)用于任何類型的處理器,從而自然地收集與所討論的處理器族相關(guān)的存儲(chǔ)器管理和其它數(shù)據(jù)。在本領(lǐng)域中術(shù)語的使用在某種程度上有所不同。本申請(qǐng)中使用的術(shù)語“進(jìn)程”可以在另一些地方被稱作“線程(thread)”,從而本申請(qǐng)中使用的術(shù)語“進(jìn)程族”可以相應(yīng)地被稱作“進(jìn)程”。但是,不應(yīng)當(dāng)認(rèn)為本發(fā)明的范圍依賴于所用的術(shù)語。并且對(duì)本領(lǐng)域中的技術(shù)人員而言,顯然隨著技術(shù)的發(fā)展,可以通過不同方式實(shí)現(xiàn)本發(fā)明的基本思想。本發(fā)明及其實(shí)施例并不局限于上述例子,它們?cè)跈?quán)利要求書的范圍內(nèi)可以有所變化。
權(quán)利要求
1.一種收集導(dǎo)致計(jì)算機(jī)(20)重新啟動(dòng)的故障數(shù)據(jù)的方法,所述計(jì)算機(jī)(20)包括具有一個(gè)或多個(gè)進(jìn)程(Pn)的軟件(OS),其特征在于,該方法包括-在計(jì)算機(jī)(20)已經(jīng)重新啟動(dòng)之后,但是在新數(shù)據(jù)被寫入軟件(OS)的某些數(shù)據(jù)結(jié)構(gòu)(PA)所存儲(chǔ)的主存儲(chǔ)器(23)部分之前,從計(jì)算機(jī)的主存儲(chǔ)器(23)中至少讀出這些數(shù)據(jù)結(jié)構(gòu)(PA);-將這些數(shù)據(jù)結(jié)構(gòu)(PA)的內(nèi)容與預(yù)定正常值進(jìn)行比較;以及-響應(yīng)于所述數(shù)據(jù)結(jié)構(gòu)(PA)的內(nèi)容與預(yù)定正常值的不同,將從主存儲(chǔ)器(23)中讀出的數(shù)據(jù)結(jié)構(gòu)(PA)拷貝到預(yù)定外圍設(shè)備,以在重新啟動(dòng)之后維持這些數(shù)據(jù)結(jié)構(gòu)(PA)的內(nèi)容。
2.根據(jù)權(quán)利要求1的方法,其特征在于,該方法還包括-在計(jì)算機(jī)(20)重新啟動(dòng)之前,在計(jì)算機(jī)的主存儲(chǔ)器(23)中保留預(yù)定存儲(chǔ)區(qū)(SA)以收集故障數(shù)據(jù);以及-在重新啟動(dòng)之后,在這些數(shù)據(jù)結(jié)構(gòu)(PA)被拷貝到外圍設(shè)備(27,28)之前將其拷貝到預(yù)定存儲(chǔ)區(qū)(SA)。
3.根據(jù)權(quán)利要求1或2的方法,其特征在于,導(dǎo)致重新啟動(dòng)的出錯(cuò)情況被劃分成預(yù)定類,至少一些步驟是針對(duì)包含與所討論的出錯(cuò)情況類相關(guān)的數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)(PA)。
4.根據(jù)權(quán)利要求3的方法,其特征在于,出錯(cuò)情況類包含下述類中的至少一種內(nèi)存不夠、進(jìn)程環(huán)回?zé)o休止運(yùn)行、允許進(jìn)程占用的存儲(chǔ)區(qū)溢出以及未定義的命令。
5.根據(jù)權(quán)利要求4的方法,其特征在于,如果出錯(cuò)情況屬于“內(nèi)存不夠”類,則該方法包括-在重新啟動(dòng)之前,確定占用主存儲(chǔ)器(23)的主要的一個(gè)或最多幾個(gè)進(jìn)程(Pn);以及-響應(yīng)于包含與最多幾個(gè)進(jìn)程(Pn)相關(guān)的數(shù)據(jù)的所述數(shù)據(jù)結(jié)構(gòu)(PA),拷貝這些數(shù)據(jù)結(jié)構(gòu)(PA),前述進(jìn)程是占用了主存儲(chǔ)器的主要進(jìn)程。
6.根據(jù)權(quán)利要求4的方法,其特征在于,如果出錯(cuò)情況屬于“進(jìn)程環(huán)回?zé)o休止運(yùn)行”類,則該方法包括-確定發(fā)送了該進(jìn)程(Pn)尚未釋放的消息的進(jìn)程(Pn);以及-響應(yīng)于包含與未釋放發(fā)送給它的消息的進(jìn)程(Pn)相關(guān)的數(shù)據(jù)的所述數(shù)據(jù)結(jié)構(gòu)(PA),拷貝這些數(shù)據(jù)結(jié)構(gòu)(PA)。
7.根據(jù)任一前述權(quán)利要求的方法,其特征在于,該方法還包括讀取一組包含數(shù)據(jù)結(jié)構(gòu)(PA)的強(qiáng)制控制記錄;以及將該強(qiáng)制控制記錄中包含的數(shù)據(jù)結(jié)構(gòu)(PA)拷貝到外圍設(shè)備(27,28)。
8.一種計(jì)算機(jī)(20),包含一個(gè)中央處理單元(24)、軟件(OS)、一個(gè)主存儲(chǔ)器(23)和外圍設(shè)備(21,26),軟件(OS)通過至少一個(gè)外圍設(shè)備裝入主存儲(chǔ)器(23),其特征在于,為了在重新啟動(dòng)期間收集故障數(shù)據(jù),計(jì)算機(jī)(20)還包括一個(gè)故障數(shù)據(jù)收集程序(OS1)-用于在重新啟動(dòng)開始之后,但是在新數(shù)據(jù)寫入存儲(chǔ)某些軟件數(shù)據(jù)結(jié)構(gòu)(PA)的主存儲(chǔ)器(23)部分之前,從主存儲(chǔ)器(23)至少讀出這些數(shù)據(jù)結(jié)構(gòu);-用于比較該數(shù)據(jù)結(jié)構(gòu)(PA)和預(yù)定正常值;以及-用于將不同于預(yù)定正常值的數(shù)據(jù)結(jié)構(gòu)(PA)拷貝到預(yù)定外圍設(shè)備,以在重新啟動(dòng)之后維持該數(shù)據(jù)結(jié)構(gòu)(PA)的內(nèi)容。
9.根據(jù)權(quán)利要求8的計(jì)算機(jī),其特征在于,當(dāng)計(jì)算機(jī)(20)執(zhí)行故障數(shù)據(jù)收集程序(OS1)時(shí),在數(shù)據(jù)結(jié)構(gòu)(PA)被拷貝到外圍設(shè)備(27,28)之前,它還將數(shù)據(jù)結(jié)構(gòu)(PA)拷貝到預(yù)定存儲(chǔ)區(qū)(SA)。
10.根據(jù)權(quán)利要求8或9的計(jì)算機(jī),其特征在于,計(jì)算機(jī)(20)將數(shù)據(jù)結(jié)構(gòu)拷貝到固定磁盤(27)。
11.根據(jù)權(quán)利要求8或9的計(jì)算機(jī),其特征在于,計(jì)算機(jī)(20)通過電纜(1)將數(shù)據(jù)結(jié)構(gòu)拷貝到服務(wù)器(10)。
12.根據(jù)權(quán)利要求8或9的計(jì)算機(jī),其特征在于,計(jì)算機(jī)(20)將數(shù)據(jù)結(jié)構(gòu)拷貝到輸出設(shè)備(28)。
13.根據(jù)權(quán)利要求8到12中任意一項(xiàng)的計(jì)算機(jī),其特征在于,故障數(shù)據(jù)收集程序(OS1)位于寫保護(hù)的存儲(chǔ)器。
全文摘要
在計(jì)算機(jī)控制某個(gè)進(jìn)程,例如呼叫傳輸出現(xiàn)問題的情況下,盡可能快地將維護(hù)操作以正確方式定位到正確地點(diǎn)是非常重要的。在根據(jù)本發(fā)明的故障數(shù)據(jù)收集方法中,使用關(guān)于哪類信息對(duì)解決問題有用的經(jīng)驗(yàn)數(shù)據(jù)有選擇地收集故障數(shù)據(jù)。在計(jì)算機(jī)操作系統(tǒng)的數(shù)據(jù)區(qū)(DA)中從進(jìn)程族列表PL中搜索每一進(jìn)程族的相關(guān)數(shù)據(jù)(P10A-P40A)。通過進(jìn)程族的第一進(jìn)程(P10),得到有關(guān)該族其它進(jìn)程(P11-P14)的數(shù)據(jù)。進(jìn)程(P10-P14)的數(shù)據(jù)結(jié)構(gòu)(PA)提供與該進(jìn)程所保留的存儲(chǔ)器資源、時(shí)間監(jiān)控等相關(guān)的數(shù)據(jù)。通過比較該數(shù)據(jù)結(jié)構(gòu)(PA)的內(nèi)容和經(jīng)驗(yàn)性基值,從需要進(jìn)一步詳細(xì)檢查的進(jìn)程中將數(shù)據(jù)結(jié)構(gòu)(PA)拷貝到存儲(chǔ)區(qū)(SA)。在重新啟動(dòng)被激活之后,但是在新數(shù)據(jù)寫入存儲(chǔ)這些數(shù)據(jù)結(jié)構(gòu)(PA)的主存儲(chǔ)器部分之前,收集這些數(shù)據(jù)結(jié)構(gòu)。
文檔編號(hào)G06F11/34GK1202256SQ96198321
公開日1998年12月16日 申請(qǐng)日期1996年10月29日 優(yōu)先權(quán)日1995年10月30日
發(fā)明者勞里·塔達(dá)里 申請(qǐng)人:諾基亞電信公司