專利名稱:一種計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,特別是涉及一種計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的系統(tǒng)和方法。
背景技術(shù):
目前計(jì)算機(jī)操作系統(tǒng)(Operation System,OS),特別是多任務(wù)操作系統(tǒng),如Windows操作系統(tǒng)都較為復(fù)雜,一個(gè)完備的操作系統(tǒng)在運(yùn)行的過程中,由于多個(gè)應(yīng)用程序或者新程序的運(yùn)行,可能會(huì)出現(xiàn)新的故障。一般地,現(xiàn)有的操作系統(tǒng)都有一些操作系統(tǒng)診斷和維護(hù)方法,可以監(jiān)控操作系統(tǒng)的工作狀況,并在有可能出現(xiàn)問題的時(shí)候提前向用戶報(bào)警。但在操作系統(tǒng)發(fā)生一些致命錯(cuò)誤時(shí)(如內(nèi)存錯(cuò)誤、應(yīng)用程序越界訪問等),操作系統(tǒng)會(huì)崩潰,包括死循環(huán)(即死機(jī))或產(chǎn)生無法識(shí)別的錯(cuò)誤(藍(lán)屏),這時(shí)通常的做法是將計(jì)算機(jī)機(jī)器重新啟動(dòng)。然而這時(shí)所有的計(jì)算機(jī)故障現(xiàn)場信息將全部丟失,無法進(jìn)行進(jìn)一步進(jìn)行故障分析,也就無法找到問題的根本原因。而不排除機(jī)器的問題,隱患依舊存在,系統(tǒng)的穩(wěn)定性得不到保證,性能得不到保障,可能在制約條件滿足的時(shí)候再次發(fā)生故障,用戶對其信任度就會(huì)下降。因此,如何在計(jì)算機(jī)操作系統(tǒng)中,如果在操作系統(tǒng)死機(jī)或者崩潰時(shí),獲取故障現(xiàn)場信息,已經(jīng)成為業(yè)界迫切需要解決的問題。
現(xiàn)有的處理操作系統(tǒng)致命錯(cuò)誤的方法有以下幾種1、操作系統(tǒng)(如Windows操作系統(tǒng))崩潰后,由操作系統(tǒng)的dump進(jìn)程進(jìn)行轉(zhuǎn)儲(chǔ)(dump),現(xiàn)有的3種轉(zhuǎn)儲(chǔ)的模式分別為小內(nèi)存轉(zhuǎn)儲(chǔ)(64K);核心內(nèi)存轉(zhuǎn)儲(chǔ);完全內(nèi)存轉(zhuǎn)儲(chǔ),然后才通過分析工具程序?qū)D(zhuǎn)儲(chǔ)文件進(jìn)行分析。
但這3種處理操作系統(tǒng)致命錯(cuò)誤的方法都存在如下缺陷這3種處理操作系統(tǒng)致命錯(cuò)誤的轉(zhuǎn)儲(chǔ)模式的轉(zhuǎn)變需要在操作系統(tǒng)下進(jìn)行設(shè)置,如果要進(jìn)行全內(nèi)存轉(zhuǎn)儲(chǔ)需要占用大量的核心存儲(chǔ)空間,但如果太少(小內(nèi)存轉(zhuǎn)儲(chǔ))又會(huì)丟失很多的信息,當(dāng)然,用戶可以根據(jù)不同的應(yīng)用和崩潰可能會(huì)適用不同的的轉(zhuǎn)儲(chǔ)模式,但在計(jì)算機(jī)操作系統(tǒng)崩潰時(shí)只能按照設(shè)定好的轉(zhuǎn)儲(chǔ)模式進(jìn)行轉(zhuǎn)儲(chǔ),而不能再變更為別的轉(zhuǎn)儲(chǔ)模式。另一方面,這種方法仍舊需要依賴于操作系統(tǒng)下的轉(zhuǎn)儲(chǔ)進(jìn)行,如果在出現(xiàn)嚴(yán)重的操作系統(tǒng)故障情況,如轉(zhuǎn)儲(chǔ)進(jìn)行也崩潰的情況下,或者操作系統(tǒng)本地存儲(chǔ)的內(nèi)存出現(xiàn)故障的情況下,將無法進(jìn)行現(xiàn)場信息的保存。
2、計(jì)算機(jī)操作系統(tǒng)在發(fā)生致命錯(cuò)誤時(shí),由系統(tǒng)管理員或者操作系統(tǒng)開發(fā)人員在現(xiàn)場進(jìn)行重啟、獲取故障現(xiàn)場信息,進(jìn)行計(jì)算機(jī)故障的診斷和維護(hù)等操作工作。
但這種處理方法的缺點(diǎn)也是顯而易見的,其主要缺點(diǎn)是需要系統(tǒng)管理員或者操作系統(tǒng)開發(fā)人員到現(xiàn)場進(jìn)行操作,這樣需要占用系統(tǒng)管理員或者操作系統(tǒng)開發(fā)人員的大量時(shí)間和精力來進(jìn)行操作系統(tǒng)的診斷和維護(hù)。而由于沒有計(jì)算機(jī)崩潰時(shí)的現(xiàn)場,因此系統(tǒng)管理員或者操作系統(tǒng)開發(fā)人員就無法準(zhǔn)確定位故障,而只能憑借經(jīng)驗(yàn)和大量的分析工具程序長時(shí)間的運(yùn)行來發(fā)現(xiàn)問題,獲取現(xiàn)場故障信息,其效率十分低下,而能夠真正查找出計(jì)算機(jī)操作系統(tǒng)故障的現(xiàn)場信息的概率也較低。因此,這一方法在現(xiàn)實(shí)應(yīng)用中不可能得到普遍的應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述缺陷而提供的一種計(jì)算機(jī)故障現(xiàn)場信息獲取的系統(tǒng)和方法,其能夠保證操作系統(tǒng)在出現(xiàn)故障的現(xiàn)場對系統(tǒng)進(jìn)行分析和診斷,獲取故障現(xiàn)場的信息,包括內(nèi)存信息等。
為實(shí)現(xiàn)本發(fā)明目的而提供的一種計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的系統(tǒng),包括EFI BIOS和運(yùn)行在EFI BIOS上的操作系統(tǒng)以及操作系統(tǒng)監(jiān)視模塊,所述EFI BIOS還包括內(nèi)存分配模塊和運(yùn)行時(shí)間服務(wù)模塊;所述內(nèi)存分配模塊,用于在計(jì)算機(jī)系統(tǒng)上電以后,EFI BIOS在預(yù)引導(dǎo)階段,EFI BIOS對內(nèi)存初始化時(shí),將將物理內(nèi)存分為操作系統(tǒng)內(nèi)存和故障分析系統(tǒng)內(nèi)存;所述操作系統(tǒng)監(jiān)視模塊,運(yùn)行并駐留在所述操作系統(tǒng)中,用于在操作系統(tǒng)正常運(yùn)行時(shí)收集操作系統(tǒng)現(xiàn)場信息并保存;同時(shí)在操作系統(tǒng)崩潰時(shí),將操作系統(tǒng)崩潰的事件通知EFI BIOS的運(yùn)行時(shí)間服務(wù)模塊,建立獲取操作系統(tǒng)故障現(xiàn)場信息的故障分析系統(tǒng)環(huán)境,獲取操作系統(tǒng)故障現(xiàn)場信息。
所述運(yùn)行時(shí)間服務(wù)模塊,用于對獲取操作系統(tǒng)故障信息的故障分析系統(tǒng)文件進(jìn)行初始化,提供分析系統(tǒng)支持環(huán)境,選擇操作系統(tǒng)故障現(xiàn)場信息和保存位置,并保存信息內(nèi)容到該位置。
本發(fā)明的系統(tǒng)還可以包括計(jì)數(shù)器和硬件狗模塊;所述計(jì)數(shù)器,用于定時(shí)計(jì)算機(jī)運(yùn)行時(shí)間;操作系統(tǒng)監(jiān)視模塊定時(shí)改寫計(jì)數(shù)器,防止計(jì)數(shù)器溢出;當(dāng)計(jì)數(shù)器溢出時(shí),則產(chǎn)生中斷,觸發(fā)EFI BIOS中斷管理程序,啟動(dòng)硬件狗模塊;硬件狗模塊,用于將系統(tǒng)程序的指針調(diào)整到EFI BIOS內(nèi)存空間中的運(yùn)行時(shí)間服務(wù)模塊,從而使計(jì)算機(jī)系統(tǒng)的控制權(quán)轉(zhuǎn)到EFI BIOS的運(yùn)行時(shí)間服務(wù)模塊中。
所述操作系統(tǒng)為Windows操作系統(tǒng)。
本發(fā)明還提供一種計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的方法,其特征在于,包括下列步驟步驟A)系統(tǒng)上電后,EFI BIOS初始化內(nèi)存時(shí),內(nèi)存分配模塊將物理內(nèi)存分為操作系統(tǒng)內(nèi)存和故障分析系統(tǒng)內(nèi)存;步驟B)操作系統(tǒng)運(yùn)行時(shí),啟動(dòng)并駐留操作系統(tǒng)監(jiān)視模塊,操作系統(tǒng)監(jiān)視模塊收集操作系統(tǒng)現(xiàn)場信息;當(dāng)操作系統(tǒng)崩潰,將操作系統(tǒng)崩潰的事件通知EFI BIOS的運(yùn)行時(shí)間服務(wù)模塊;步驟C)運(yùn)行時(shí)間服務(wù)模塊建立獲取操作系統(tǒng)故障現(xiàn)場信息的故障分析系統(tǒng)環(huán)境,獲取操作系統(tǒng)故障現(xiàn)場信息。
所述步驟B)還包括下列步驟步驟B1)操作系統(tǒng)運(yùn)行時(shí),啟動(dòng)并駐留操作系統(tǒng)監(jiān)視模塊,操作系統(tǒng)監(jiān)視模塊定時(shí)寫計(jì)數(shù)器;步驟B2)當(dāng)操作系統(tǒng)崩潰,進(jìn)入EFI BIOS系統(tǒng)管理模式時(shí),硬件狗模塊將系統(tǒng)程序指針指向運(yùn)行時(shí)間服務(wù)模塊,啟動(dòng)運(yùn)行時(shí)間服務(wù)模塊。
所述步驟C)包括下列步驟步驟C1)運(yùn)行時(shí)間服務(wù)模塊上載基于EFI的設(shè)備驅(qū)動(dòng);
步驟C2)分析工具選擇操作系統(tǒng)故障現(xiàn)場的的內(nèi)存內(nèi)容,存儲(chǔ)位置,記錄并保存現(xiàn)場的信息。
所述步驟C1)還包括下列步驟運(yùn)行時(shí)間服務(wù)模塊加載EFI web服務(wù),建立基于網(wǎng)絡(luò)連接,在加載網(wǎng)卡驅(qū)動(dòng)以后,通過網(wǎng)絡(luò)向控制端發(fā)出系統(tǒng)警告,通知控制端系統(tǒng)本操作系統(tǒng)目前狀態(tài)。
所述設(shè)備驅(qū)動(dòng)包括網(wǎng)卡驅(qū)動(dòng),IDE/SCSI設(shè)備驅(qū)動(dòng),USB設(shè)備驅(qū)動(dòng),PCI設(shè)備驅(qū)動(dòng)。
所述現(xiàn)場信息包括CPU利用率信息,內(nèi)存使用率信息,寄存器內(nèi)容信息和進(jìn)程信息中的一類或者多類信息組合。
本發(fā)明的有益效果是本發(fā)明利用EFI BIOS完成對操作系統(tǒng)死機(jī)的分析,在計(jì)算機(jī)操作系統(tǒng)出現(xiàn)故障時(shí),利用獨(dú)立于操作系統(tǒng)的內(nèi)存空間和分析操作環(huán)境對計(jì)算機(jī)操作系統(tǒng)崩潰的原因進(jìn)行分析,獲取故障現(xiàn)場信息。其判斷保存計(jì)算機(jī)操作系統(tǒng)當(dāng)前狀態(tài),并在操作系統(tǒng)出現(xiàn)故障時(shí)進(jìn)入獨(dú)立的內(nèi)存空間而不破壞操作系統(tǒng)的內(nèi)存區(qū)域和內(nèi)存狀態(tài),并在分析環(huán)境下對操作系統(tǒng)的內(nèi)存區(qū)域和內(nèi)存狀態(tài)進(jìn)行分析并結(jié)合對硬件系統(tǒng)的底層診斷,來獲取機(jī)器故障的現(xiàn)場信息,獲取計(jì)算機(jī)操作系統(tǒng)發(fā)生故障的原因。
圖1是本發(fā)明計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的系統(tǒng)結(jié)構(gòu)示意圖;圖2是圖1中監(jiān)控模塊工作過程流程圖;圖3是本發(fā)明計(jì)數(shù)器中斷模塊流程圖;圖4是本發(fā)明EFI BIOS運(yùn)行時(shí)間服務(wù)模塊流程圖。
具體實(shí)施例方式
下面結(jié)合附圖1~4進(jìn)一步詳細(xì)說明本發(fā)明的一種計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的系統(tǒng)和方法。
本發(fā)明克服現(xiàn)有的基本輸入輸出系統(tǒng)(Basic Input/Output System,BIOS)的弱點(diǎn),利用EFI BIOS在這運(yùn)行時(shí)間(runtime)功能和預(yù)引導(dǎo)(pre-boot)功能兩方面的改進(jìn)和提高,解決了在計(jì)算機(jī)操作系統(tǒng)崩潰時(shí)獲取計(jì)算機(jī)故障現(xiàn)場信息的問題。
本發(fā)明將涉及可擴(kuò)展固件接口(EFI)技術(shù),下面我們先對其進(jìn)行介紹可擴(kuò)展固件接口(Extensible Firmware Interface,EFI)是1999年出現(xiàn)的用以取代沿用多年的基本輸入輸出系統(tǒng)(BIOS)的新一代接口程序,關(guān)于可擴(kuò)展固件接口的介紹,詳見UEFI論壇關(guān)于EFI技術(shù)的介紹http://www.UEFI.org。EFI BIOS介于硬件設(shè)備以及操作系統(tǒng)(比如Windows或者Linux)之間。與傳統(tǒng)的BIOS不同,EFI BIOS使用全球最廣泛的高級(jí)語言C語言進(jìn)行編寫,其提供了既具有傳統(tǒng)BIOS的功能又有優(yōu)于傳統(tǒng)BIOS的擴(kuò)展功能,在設(shè)計(jì)機(jī)制和架構(gòu)上也有別于傳統(tǒng)BIOS的實(shí)現(xiàn),是下一代BIOS接口規(guī)范,這就意味著有更多的工程師可以參與EFI BIOS的開發(fā)工作,添加許多更有價(jià)值的功能。
EFI BIOS具備的基本功能為硬件平臺(tái)初始化;支持啟動(dòng)操作系統(tǒng);脫離操作系統(tǒng)的平臺(tái)管理工具。
EFI BIOS的工作模式可以簡單歸納為啟動(dòng)系統(tǒng),標(biāo)準(zhǔn)固件平臺(tái)初始化,接著從加載EFI驅(qū)動(dòng)程序庫以及及執(zhí)行相關(guān)程序,在EFI BIOS系統(tǒng)啟動(dòng)菜單中選取所要進(jìn)入的系統(tǒng)并向EFI BIOS提交啟動(dòng)引導(dǎo)代碼,正常則進(jìn)入系統(tǒng),否則將中止啟動(dòng)服務(wù)并返回EFI BIOS系統(tǒng)啟動(dòng)菜單。
在本發(fā)明的對計(jì)算機(jī)操作系統(tǒng)的故障現(xiàn)場信息獲取方法中,特別是以Windows操作系統(tǒng)而進(jìn)行的描述,但本發(fā)明同樣適用除了Windows操作系統(tǒng)之外的操作系統(tǒng)的情況。
如圖1所示,本發(fā)明計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的系統(tǒng),包括有(一)內(nèi)存分配模塊1,用于在支持EFI BIOS的硬件架構(gòu)中,在計(jì)算機(jī)系統(tǒng)上電(Power on)以后,EFI BIOS在預(yù)引導(dǎo)(pre-boot)階段,EFI BIOS對內(nèi)存初始化時(shí),將一部分內(nèi)存進(jìn)行保留,此時(shí),EFI BIOS向Windows操作系統(tǒng)提供的內(nèi)存大小就是系統(tǒng)物理內(nèi)存大小減去保留內(nèi)存的大小。
同時(shí),內(nèi)存分配模塊1將用于獲取操作系統(tǒng)故障信息的故障分析系統(tǒng)文件放入保留內(nèi)存區(qū)域,以供在發(fā)生操作系統(tǒng)崩潰時(shí)進(jìn)入。
在系統(tǒng)上電(Power on)以后,EFI BIOS在預(yù)引導(dǎo)(pre-boot)階段將內(nèi)存進(jìn)行初始化,啟動(dòng)內(nèi)存分配模塊1,內(nèi)存分配模塊1將內(nèi)存分為兩部分一部分為操作系統(tǒng)內(nèi)存,用于Windows操作系統(tǒng)在進(jìn)入操作系統(tǒng)安裝(OS load)階段以后,操作系統(tǒng)對這一部分內(nèi)存進(jìn)行控制,分配給操作系統(tǒng)及在操作系統(tǒng)上運(yùn)行的各個(gè)進(jìn)程程序使用。
另一部分為保留為故障分析系統(tǒng)內(nèi)存,在EFI BIOS啟動(dòng)時(shí)其初始化為故障分析系統(tǒng)環(huán)境預(yù)留內(nèi)存空間,此保留內(nèi)存空間只分配給故障分析系統(tǒng)文件,Windows操作系統(tǒng)在啟動(dòng)后不能發(fā)現(xiàn)和使用此部分空間。在此預(yù)留空間中運(yùn)行EFI BIOS的運(yùn)行時(shí)間(runtime)服務(wù)模塊3,此模塊的主要功能是建立獲取故障信息所必需的操作環(huán)境,如加載EFI網(wǎng)卡(NIC)的驅(qū)動(dòng),加載分析工具(diagnostic tool)并且保存Windows操作系統(tǒng)故障信息的內(nèi)容。
(二)操作系統(tǒng)監(jiān)視模塊2,用于在操作系統(tǒng)運(yùn)行時(shí)收集操作系統(tǒng)現(xiàn)場信息;同時(shí)在發(fā)現(xiàn)操作系統(tǒng)不能響應(yīng)應(yīng)用程序的操作請求,出現(xiàn)操作系統(tǒng)崩潰時(shí),將操作系統(tǒng)崩潰的事件通知EFI BIOS的運(yùn)行時(shí)間(runtime)服務(wù)模塊3。
(三)計(jì)數(shù)器(Timer)4,用于定時(shí)計(jì)算機(jī)運(yùn)行時(shí)間;操作系統(tǒng)監(jiān)視模塊2定時(shí)改寫計(jì)數(shù)器4,防止計(jì)數(shù)器4溢出;當(dāng)計(jì)數(shù)器4溢出時(shí),則產(chǎn)生中斷,觸發(fā)EFI BIOS中斷管理程序,啟動(dòng)硬件狗模塊5。
當(dāng)操作系統(tǒng)正常運(yùn)行時(shí),操作系統(tǒng)監(jiān)視模塊2定時(shí)改寫計(jì)算機(jī)硬件中的南橋ICH芯片(I/O Controller HUB)中計(jì)數(shù)器4的計(jì)數(shù)寄存器,從而保證計(jì)數(shù)器4不會(huì)溢出而產(chǎn)生溢出中斷;當(dāng)操作系統(tǒng)崩潰時(shí),則駐留并運(yùn)行在操作系統(tǒng)中的監(jiān)視模塊2也無法正常運(yùn)行,因此不能定時(shí)寫南橋計(jì)數(shù)器4的計(jì)數(shù)寄存器,從而導(dǎo)致計(jì)數(shù)器4沒有定時(shí)重置,計(jì)數(shù)器4溢出,產(chǎn)生中斷,觸發(fā)了EFI BIOS中斷管理程序,啟動(dòng)硬件狗模塊5。
(四)硬件狗模塊5,用于將系統(tǒng)程序的指針調(diào)整到EFI BIOS內(nèi)存空間中的運(yùn)行時(shí)間(runtime)服務(wù)模塊3,從而使計(jì)算機(jī)系統(tǒng)的控制權(quán)轉(zhuǎn)到EFIBIOS的運(yùn)行時(shí)間(runtime)服務(wù)模塊3中。
(五)EFI BIOS的運(yùn)行時(shí)間(runtime)服務(wù)模塊3,用于對獲取操作系統(tǒng)故障信息的分析環(huán)境的部件進(jìn)行初始化,在進(jìn)入運(yùn)行時(shí)間服務(wù)模塊3時(shí)需要對硬件系統(tǒng)進(jìn)行的初始化,使其建立起生故障分析系統(tǒng)環(huán)境,提供分析系統(tǒng)支持環(huán)境,如加載EFI NIC的驅(qū)動(dòng)程序,加載分析工具(diagnostic tool),選擇操作系統(tǒng)故障現(xiàn)場信息和保存位置,并保存信息內(nèi)容到該位置。
在Windows操作系統(tǒng)崩潰時(shí),分析工具6通過讀取操作系統(tǒng)崩潰時(shí)的內(nèi)存、寄存器內(nèi)容等信息,結(jié)合對系統(tǒng)硬件的底層診斷來獲取系統(tǒng)故障的信息,診斷操作系統(tǒng)發(fā)生故障的具體原因。然后選擇操作系統(tǒng)故障現(xiàn)場信息和保存位置,并保存信息內(nèi)容到該位置。
Windows操作系統(tǒng)啟動(dòng)后,在正常運(yùn)行的情況下,操作系統(tǒng)監(jiān)視模塊2運(yùn)行并駐留在操作系統(tǒng)時(shí),收集Windows操作系統(tǒng)的現(xiàn)場信息,包括CPU利用率,內(nèi)存使用率,寄存器內(nèi)容,進(jìn)程信息,并寫入到操作系統(tǒng)管理的內(nèi)存固定內(nèi)存空間中去。
同時(shí),操作系統(tǒng)監(jiān)視模塊2定時(shí)改寫南橋計(jì)數(shù)器4的計(jì)數(shù)寄存器,保證計(jì)數(shù)器4不會(huì)溢出而產(chǎn)生溢出中斷。
如果操作系統(tǒng)崩潰,則駐留并運(yùn)行在操作系統(tǒng)中的監(jiān)視模塊2也無法正常運(yùn)行,因此不能定時(shí)改寫南橋計(jì)數(shù)器4的計(jì)數(shù)寄存器,從而導(dǎo)致計(jì)數(shù)器4沒有定時(shí)重置,計(jì)數(shù)器4溢出,產(chǎn)生中斷,觸發(fā)了EFI BIOS中斷管理程序,進(jìn)入到EFI BIOS系統(tǒng)管理模式(System Management,SM),啟動(dòng)硬件狗模塊5,硬件狗模塊5將系統(tǒng)程序指針指向EFI BIOS內(nèi)存空間中的運(yùn)行時(shí)間(runtime)服務(wù)模塊3,從而使系統(tǒng)控制權(quán)轉(zhuǎn)到EFI BIOS的運(yùn)行時(shí)間(runtime)服務(wù)模塊3中。
運(yùn)行時(shí)間(runtime)服務(wù)模塊3首先上載基于EFI的設(shè)備驅(qū)動(dòng),包括網(wǎng)卡(NIC),IDE/SCSI設(shè)備驅(qū)動(dòng),USB設(shè)備驅(qū)動(dòng),PCI設(shè)備驅(qū)動(dòng),通過上載以上驅(qū)動(dòng),使得EFI BIOS獲得相應(yīng)設(shè)備的控制權(quán),可以進(jìn)行I/O設(shè)備的操作;然后,加載EFI web服務(wù)(service),建立基于網(wǎng)絡(luò)連接,較佳地,是基于http的網(wǎng)絡(luò)連接,在加載網(wǎng)卡(NIC)驅(qū)動(dòng)以后,通過網(wǎng)絡(luò)向某一控制端發(fā)出系統(tǒng)警告,通知遠(yuǎn)端管理員系統(tǒng)本操作系統(tǒng)目前狀態(tài);最后,分析工具(diagnostictool)6根據(jù)遠(yuǎn)程控制臺(tái)的指令,如選擇轉(zhuǎn)儲(chǔ)(dump)的內(nèi)存內(nèi)容,存儲(chǔ)位置,如USB存儲(chǔ),網(wǎng)絡(luò)存儲(chǔ),或者本地硬盤存儲(chǔ),從而記錄下現(xiàn)場的信息。
下面結(jié)合上述系統(tǒng)進(jìn)一步詳細(xì)說明本發(fā)明的一種計(jì)算機(jī)故障現(xiàn)場信息獲取的方法
步驟A系統(tǒng)上電后,在預(yù)引導(dǎo)(pro-boot)階段中,EFI BIOS初始化內(nèi)存時(shí),內(nèi)存分配模塊1將物理內(nèi)存分為操作系統(tǒng)內(nèi)存和故障分析系統(tǒng)內(nèi)存。
在系統(tǒng)上電(Power on)以后,EFI BIOS在預(yù)引導(dǎo)(pre-boot)階段將內(nèi)存進(jìn)行初始化,啟動(dòng)內(nèi)存分配模塊1,內(nèi)存分配模塊1將內(nèi)存分為兩部分一部分為操作系統(tǒng)內(nèi)存,用于Windows操作系統(tǒng)在進(jìn)入操作系統(tǒng)安裝(OS load)階段以后,操作系統(tǒng)對這一部分內(nèi)存進(jìn)行控制,分配給操作系統(tǒng)及在操作系統(tǒng)上運(yùn)行的各個(gè)進(jìn)程程序使用。
另一部分為保留為故障分析系統(tǒng)內(nèi)存,其初始化為在EFI BIOS啟動(dòng)時(shí)故障分析系統(tǒng)環(huán)境預(yù)留內(nèi)存空間,此保留內(nèi)存空間只分配給故障分析系統(tǒng)環(huán)境,Windows操作系統(tǒng)在啟動(dòng)后不能發(fā)現(xiàn)和使用此部分空間。并在此預(yù)留空間中運(yùn)行EFI BIOS的運(yùn)行時(shí)間(runtime)服務(wù)模塊3,運(yùn)行時(shí)間服務(wù)模塊3建立獲取故障信息所必需的操作環(huán)境,如加載EFI NIC的驅(qū)動(dòng),加載分析工具(diagnostic tool)6并且保存Windows操作系統(tǒng)故障信息的內(nèi)容。
步驟B操作系統(tǒng)運(yùn)行時(shí),啟動(dòng)并駐留操作系統(tǒng)監(jiān)視模塊2,收集操作系統(tǒng)現(xiàn)場信息,并定時(shí)改寫計(jì)數(shù)器4;當(dāng)操作系統(tǒng)崩潰,將操作系統(tǒng)崩潰的事件通知EFI BIOS的運(yùn)行時(shí)間服務(wù)模塊3。
步驟B1操作系統(tǒng)運(yùn)行時(shí),啟動(dòng)并駐留操作系統(tǒng)監(jiān)視模塊2,收集操作系統(tǒng)現(xiàn)場信息并保存,并定時(shí)改寫計(jì)數(shù)器4。
如圖2所示,Windows操作系統(tǒng)啟動(dòng)后,在正常運(yùn)行的情況下,操作系統(tǒng)監(jiān)視模塊5運(yùn)行并駐留在操作系統(tǒng)時(shí),收集Windows操作系統(tǒng)的現(xiàn)場信息,包括CPU利用率信息,內(nèi)存使用率信息,寄存器內(nèi)容信息,進(jìn)程信息,并寫入到操作系統(tǒng)管理的內(nèi)存固定空間中去。
同時(shí),操作系統(tǒng)監(jiān)視模塊2定時(shí)改寫南橋計(jì)數(shù)器4的計(jì)數(shù)寄存器,保證計(jì)數(shù)器4不會(huì)溢出而產(chǎn)生溢出中斷。
步驟B2當(dāng)操作系統(tǒng)崩潰,進(jìn)入EFI BIOS系統(tǒng)管理模式時(shí),硬件狗模塊5將系統(tǒng)程序指針指向運(yùn)行時(shí)間(runtime)服務(wù)模塊3,啟動(dòng)運(yùn)行時(shí)間(runtime)服務(wù)模塊3。
如圖3所示,如果操作系統(tǒng)崩潰,如系統(tǒng)死機(jī)藍(lán)屏等,則駐留并運(yùn)行在操作系統(tǒng)中的監(jiān)視模塊2也無法正常運(yùn)行,因此不能定時(shí)寫南橋計(jì)數(shù)器4的計(jì)數(shù)寄存器,從而導(dǎo)致計(jì)數(shù)器4沒有定時(shí)重置,計(jì)數(shù)器4溢出,產(chǎn)生中斷,觸發(fā)了EFI BIOS中斷管理程序,進(jìn)入到EFI BIOS系統(tǒng)管理模式(SystemManagement,SM),并將系統(tǒng)程序指針指向EFI BIOS內(nèi)存空間中的運(yùn)行時(shí)間(runtime)服務(wù)模塊3,從而使系統(tǒng)控制權(quán)轉(zhuǎn)到EFI BIOS的運(yùn)行時(shí)間(runtime)服務(wù)模塊3中。
步驟C運(yùn)行時(shí)間服務(wù)模塊3建立獲取操作系統(tǒng)故障現(xiàn)場信息的故障分析系統(tǒng)環(huán)境,獲取操作系統(tǒng)故障現(xiàn)場信息。
當(dāng)運(yùn)行時(shí)間服務(wù)模塊3啟動(dòng)后,其上載設(shè)備驅(qū)動(dòng),建立網(wǎng)絡(luò)連接,啟動(dòng)分析工具,選擇并存儲(chǔ)故障現(xiàn)場信息。
操作系統(tǒng)監(jiān)視模塊2在操作系統(tǒng)崩潰時(shí),不能定時(shí)寫計(jì)數(shù)器4的計(jì)數(shù)寄存器,定時(shí)器4溢出,觸發(fā)EFI BIOS的中斷管理程序,進(jìn)入到EFI BIOS的系統(tǒng)管理模式(SM),啟動(dòng)硬件狗模塊5,硬件狗模塊5將系統(tǒng)程序的指針指向運(yùn)行時(shí)間(runtime)服務(wù)模塊3。
運(yùn)行時(shí)間(runtime)服務(wù)模塊3首先上載基于EFI的設(shè)備驅(qū)動(dòng),包括網(wǎng)卡(NIC),IDE/SCSI設(shè)備驅(qū)動(dòng),USB設(shè)備驅(qū)動(dòng),PCI設(shè)備驅(qū)動(dòng),通過上載以上驅(qū)動(dòng),使得EFI BIOS獲得相應(yīng)設(shè)備的控制權(quán),可以進(jìn)行I/O設(shè)備的操作;然后,運(yùn)行時(shí)間服務(wù)模塊3加載EFI web服務(wù)(service),建立基于網(wǎng)絡(luò)連接,較佳地,是基于http的網(wǎng)絡(luò)連接,在加載網(wǎng)卡(NIC)驅(qū)動(dòng)以后,通過網(wǎng)絡(luò)向某一控制端發(fā)出系統(tǒng)警告,通知遠(yuǎn)端管理員系統(tǒng)本操作系統(tǒng)目前狀態(tài);最后,分析工具(diagnostic tool)6根據(jù)遠(yuǎn)程控制臺(tái)的指令,如選擇轉(zhuǎn)儲(chǔ)(dump)的內(nèi)存內(nèi)容,存儲(chǔ)位置,如USB存儲(chǔ),網(wǎng)絡(luò)存儲(chǔ),或者本地硬盤存儲(chǔ),記錄并保存現(xiàn)場的信息。
本發(fā)明利用EFI BIOS在運(yùn)行時(shí)間(runtime)和預(yù)引導(dǎo)(pre-boot)運(yùn)行環(huán)境,完成對操作系統(tǒng)崩潰時(shí)不依賴于操作系統(tǒng)而獲取現(xiàn)場故障信息,其運(yùn)行并駐留在操作系統(tǒng)中的監(jiān)視模塊2獲取操作系統(tǒng)現(xiàn)場信息,判斷操作系統(tǒng)當(dāng)前狀態(tài),在發(fā)生操作系統(tǒng)崩潰時(shí)進(jìn)入分析環(huán)境,不破壞windows的內(nèi)存區(qū)域,并在分析環(huán)境下對操作系統(tǒng)的內(nèi)存區(qū)域進(jìn)行分析并結(jié)合對硬件系統(tǒng)的底層診斷,來獲取機(jī)器故障的信息,并可以結(jié)合現(xiàn)有的操作系統(tǒng)故障分析工具查明操作系統(tǒng)出現(xiàn)故障的原因,保證操作系統(tǒng)運(yùn)行時(shí)的穩(wěn)定性。
本實(shí)施例是為了更好地理解本發(fā)明進(jìn)行的詳細(xì)的描述,并不是對本發(fā)明所保護(hù)的范圍的限定,因此,本領(lǐng)域普通技術(shù)人員不脫離本發(fā)明的主旨未經(jīng)創(chuàng)造性勞動(dòng)而對本明所做的改變在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的系統(tǒng),包括EFI BIOS和運(yùn)行在EFI BIOS上的操作系統(tǒng),其特征在于還包括操作系統(tǒng)監(jiān)視模塊(2),所述EFI BIOS還包括內(nèi)存分配模塊(1)和運(yùn)行時(shí)間服務(wù)模塊(3);所述內(nèi)存分配模塊(1),用于在計(jì)算機(jī)系統(tǒng)上電以后,EFI BIOS在預(yù)引導(dǎo)階段,EFI BIOS對內(nèi)存初始化時(shí),將將物理內(nèi)存分為操作系統(tǒng)內(nèi)存和故障分析系統(tǒng)內(nèi)存;所述操作系統(tǒng)監(jiān)視模塊(2),運(yùn)行并駐留在所述操作系統(tǒng)中,用于在操作系統(tǒng)正常運(yùn)行時(shí)收集操作系統(tǒng)現(xiàn)場信息并保存;同時(shí)在操作系統(tǒng)崩潰時(shí),將操作系統(tǒng)崩潰的事件通知EFI BIOS的運(yùn)行時(shí)間服務(wù)模塊(3),建立獲取操作系統(tǒng)故障現(xiàn)場信息的故障分析系統(tǒng)環(huán)境,獲取操作系統(tǒng)故障現(xiàn)場信息;所述運(yùn)行時(shí)間服務(wù)模塊(3),用于對獲取操作系統(tǒng)故障信息的故障分析系統(tǒng)文件進(jìn)行初始化,提供分析系統(tǒng)支持環(huán)境,選擇操作系統(tǒng)故障現(xiàn)場信息和保存位置,并保存信息內(nèi)容到該位置。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的系統(tǒng),其特征在于,還包括計(jì)數(shù)器(4)和硬件狗模塊(5);所述計(jì)數(shù)器(4),用于定時(shí)計(jì)算機(jī)運(yùn)行時(shí)間;操作系統(tǒng)監(jiān)視模塊(2)定時(shí)改寫計(jì)數(shù)器(4),防止計(jì)數(shù)器(4)溢出;當(dāng)計(jì)數(shù)器(4)溢出時(shí),則產(chǎn)生中斷,觸發(fā)EFI BIOS中斷管理程序,啟動(dòng)硬件狗模塊(5);硬件狗模塊(5),用于將系統(tǒng)程序的指針調(diào)整到EFI BIOS內(nèi)存空間中的運(yùn)行時(shí)間服務(wù)模塊(3),從而使計(jì)算機(jī)系統(tǒng)的控制權(quán)轉(zhuǎn)到EFI BIOS的運(yùn)行時(shí)間服務(wù)模塊(3)中。
3.根據(jù)權(quán)利要求1或2所述的計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的系統(tǒng),其特征在于,所述操作系統(tǒng)為Windows操作系統(tǒng)。
4.根據(jù)權(quán)利要求1或2所述的計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的系統(tǒng),其特征在于,所述現(xiàn)場信息包括CPU利用率信息,內(nèi)存使用率信息,寄存器內(nèi)容信息和進(jìn)程信息中的一類或者多類信息組合。
5.一種計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的方法,其特征在于,包括下列步驟步驟A)系統(tǒng)上電后,EFI BIOS初始化內(nèi)存時(shí),內(nèi)存分配模塊(1)將物理內(nèi)存分為操作系統(tǒng)內(nèi)存和故障分析系統(tǒng)內(nèi)存;步驟B)操作系統(tǒng)運(yùn)行時(shí),啟動(dòng)并駐留操作系統(tǒng)監(jiān)視模塊(2),操作系統(tǒng)監(jiān)視模塊(2)收集操作系統(tǒng)現(xiàn)場信息;當(dāng)操作系統(tǒng)崩潰,將操作系統(tǒng)崩潰的事件通知EFI BIOS的運(yùn)行時(shí)間服務(wù)模塊(3);步驟C)運(yùn)行時(shí)間服務(wù)模塊(3)建立獲取操作系統(tǒng)故障現(xiàn)場信息的故障分析系統(tǒng)環(huán)境,獲取操作系統(tǒng)故障現(xiàn)場信息。
6.根據(jù)權(quán)利要求5所述的計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的方法,其特征在于,所述步驟B)還包括下列步驟步驟B1)操作系統(tǒng)運(yùn)行時(shí),啟動(dòng)并駐留操作系統(tǒng)監(jiān)視模塊(2),操作系統(tǒng)監(jiān)視模塊(2)定時(shí)寫計(jì)數(shù)器(4);步驟B2)當(dāng)操作系統(tǒng)崩潰,進(jìn)入EFI BIOS系統(tǒng)管理模式時(shí),硬件狗模塊(5)將系統(tǒng)程序指針指向運(yùn)行時(shí)間服務(wù)模塊(3),啟動(dòng)運(yùn)行時(shí)間服務(wù)模塊(3)。
7.根據(jù)權(quán)利要求5或6所述的計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的方法,其特征在于,所述現(xiàn)場信息包括CPU利用率信息,內(nèi)存使用率信息,寄存器內(nèi)容信息和進(jìn)程信息中的一類或者多類信息組合。
8.根據(jù)權(quán)利要求5或6所述的計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的方法,其特征在于,所述步驟C)包括下列步驟步驟C1)運(yùn)行時(shí)間服務(wù)模塊(3)上載基于EFI的設(shè)備驅(qū)動(dòng);步驟C2)分析工具(6)選擇操作系統(tǒng)故障現(xiàn)場的的內(nèi)存內(nèi)容,存儲(chǔ)位置,記錄并保存現(xiàn)場的信息。
9.根據(jù)權(quán)利要求8所述的計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的方法,其特征在于,所述步驟C1)還包括下列步驟運(yùn)行時(shí)間服務(wù)模塊(3)加載EFI web服務(wù),建立基于網(wǎng)絡(luò)連接,在加載網(wǎng)卡驅(qū)動(dòng)以后,通過網(wǎng)絡(luò)向控制端發(fā)出系統(tǒng)警告,通知控制端系統(tǒng)本操作系統(tǒng)目前狀態(tài)。
10.根據(jù)權(quán)利要求8所述的計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的方法,其特征在于,所述設(shè)備驅(qū)動(dòng)包括網(wǎng)卡驅(qū)動(dòng),IDE/SCSI設(shè)備驅(qū)動(dòng),USB設(shè)備驅(qū)動(dòng),PCI設(shè)備驅(qū)動(dòng)。
全文摘要
一種計(jì)算機(jī)操作系統(tǒng)故障現(xiàn)場信息獲取的系統(tǒng)和方法,包括EFI BIOS和運(yùn)行在EFI BIOS上的操作系統(tǒng),以及操作系統(tǒng)監(jiān)視模塊(2),計(jì)數(shù)器(4)和硬件狗模塊(5);EFI BIOS還包括內(nèi)存分配模塊(1)和運(yùn)行時(shí)間服務(wù)模塊(3);系統(tǒng)上電后,EFI BIOS初始化內(nèi)存時(shí),內(nèi)存分配模塊(1)將物理內(nèi)存分為操作系統(tǒng)內(nèi)存和故障分析系統(tǒng)內(nèi)存;操作系統(tǒng)運(yùn)行時(shí),啟動(dòng)并駐留操作系統(tǒng)監(jiān)視模塊(2),操作系統(tǒng)監(jiān)視模塊(2)收集操作系統(tǒng)現(xiàn)場信息;當(dāng)操作系統(tǒng)崩潰,將操作系統(tǒng)崩潰的事件通知EFI BIOS的運(yùn)行時(shí)間服務(wù)模塊(3);運(yùn)行時(shí)間服務(wù)模塊(3)建立獲取操作系統(tǒng)故障現(xiàn)場信息的故障分析系統(tǒng)環(huán)境,獲取操作系統(tǒng)故障現(xiàn)場信息。其能夠保證操作系統(tǒng)在出現(xiàn)故障的現(xiàn)場對系統(tǒng)進(jìn)行分析和診斷,獲取故障現(xiàn)場的信息。
文檔編號(hào)G06F11/36GK101025709SQ20061005760
公開日2007年8月29日 申請日期2006年2月22日 優(yōu)先權(quán)日2006年2月22日
發(fā)明者周濤, 周建 申請人:聯(lián)想(北京)有限公司