專利名稱:用于計算機系統(tǒng)的故障恢復(fù)方法、計算機及操作計算機的方法
本申請是1998年3月19日提交的申請?zhí)枮?8805292.X、發(fā)明名稱為“遠程管理沒有一個運行的操作系統(tǒng)的計算機的網(wǎng)絡(luò)增強型BIOS”的中國專利申請的分案申請。
當前,沒有有效的處理能徹底消除這種導致操作系統(tǒng)崩潰的系統(tǒng)錯誤。在許多情況下,避免再次崩潰的唯一方法是在重新引導操作系統(tǒng)之前進行對引起崩潰的操作的故障后診斷。然而,由于訪問和分析故障計算機的物理困難,及由于使系統(tǒng)可用時間通常極其重要,許多用戶不分析導致崩潰的問題就重新引導操作系統(tǒng)。
需要進行這種訪問的一例情形是網(wǎng)絡(luò)服務(wù)器。這種網(wǎng)絡(luò)服務(wù)器對于組織的效率通常至關(guān)重要,而又可被配置成沒有進行故障后分析所必需的某些硬件,諸如鍵盤和計算機顯示器。因此網(wǎng)絡(luò)操作員經(jīng)常不對問題進行適當?shù)脑\斷就匆匆忙忙重新引導網(wǎng)絡(luò)服務(wù)器。
遠程分析和管理計算機的問題也發(fā)生在要求系統(tǒng)管理員遠程維護數(shù)臺計算機的寬域網(wǎng)或局域網(wǎng)中。在典型的操作中,在遠程計算機上執(zhí)行的操作系統(tǒng),允許系統(tǒng)管理員訪問和修改遠程計算機上的各種參數(shù)。然而,如果發(fā)生操作系統(tǒng)崩潰,當前的系統(tǒng)不提供管理員訪問或診斷遠程計算機的手段。此外,當前的系統(tǒng)通常不允許在遠程計算機上加載操作系統(tǒng)之前訪問遠程計算機。例如,Burckharrt等人的美國專利5,390,324號(“Burckhaart專利”)要求的一種故障恢復(fù)系統(tǒng),一旦故障計算機裝入了計算機的硬盤上二級分區(qū)中存儲的精簡操作系統(tǒng),就允許對故障計算機的撥號訪問。Burckhaart專利的系統(tǒng)在檢測裝置檢測到表示一級操作系統(tǒng)故障的系統(tǒng)暫行時,就引導含有二級操作系統(tǒng)的的二級分區(qū)。
以下背景描述了IBM兼容的個人計算機(PC)的典型結(jié)構(gòu)和啟動過程。然而,這些概念一般適用于各種計算機系統(tǒng)。當系統(tǒng)復(fù)位時,CPU控制被傳送給計算機的基本輸入輸出系統(tǒng)(BIOS)的一部分—稱為電源接通系統(tǒng)測試或電源接通自測試(POST)。本文中使用的術(shù)語系統(tǒng)復(fù)位和系統(tǒng)啟動等同于并包括導致計算機的初始程序加載操作的初始化或重新初始化的開始的任何系統(tǒng)啟動、重新啟動、系統(tǒng)復(fù)位或其它操作。
POST通常存儲在只讀存儲器(ROM)中,用于初始化標準系統(tǒng)部件,諸如系統(tǒng)定時器、系統(tǒng)DMA(直接存儲器存取)控制器、系統(tǒng)存儲器控制器、系統(tǒng)I/O設(shè)備和視頻硬件。作為其初始化例程的一部分,POST為中斷向量表設(shè)置缺省值。這些缺省值指向ROM BIOS中的標準中斷處理程序,但是可修改為訪問定制的中斷處理程序。POST也進行可靠性測試來檢查系統(tǒng)硬件諸如存儲器和系統(tǒng)定時器的運行正常。系統(tǒng)初始化和診斷之后,POST調(diào)查系統(tǒng)位于系統(tǒng)中可選硬件卡(適配器)上非易失性存儲器上的固件。這是通過掃描特定地址空間尋找具有給定標記的存儲器而執(zhí)行的。如果找到標記,就將控制傳送給固件,后者然后就初始化其位于的設(shè)備。
進行硬件初始化之后,POST從引導設(shè)備的預(yù)定位置—通常是硬盤或軟盤驅(qū)動器—將一個數(shù)據(jù)塊讀入存儲器并將控制傳遞給該數(shù)據(jù)塊中的程序。這個程序稱為引導程序加載器,它將一個更大的程序裝入存儲器。如果該更大程序正確地裝入存儲器,引導程序就將控制傳送給它。操作系統(tǒng)然后被初始化并獲得對CPU的控制。如下文所述,在某些無磁盤(disk-less)、無介質(zhì)(media-less)的工作站上,位于網(wǎng)絡(luò)接口卡上的適配器固件為引導操作系統(tǒng)的指針重定路徑,從附接的網(wǎng)絡(luò)下載操作系統(tǒng)。
BIOS進一步包含一組例程或中斷處理程序用于與計算機及其外圍部件接口。BIOS中斷處理程序是通過使用硬件或軟件中斷被訪問的。這些中斷處理程序的地址被存儲在一個中斷向量表中。如上所述,這個向量表可被修改為指向定制的中斷處理程序。P.Norton在《ThePeter Norton PCP rogrammer’s BiBle》(Microsoft出版社,1993)中概括地說明了BIOS。
盡管BIOS接口例程為MS-DOS操作系統(tǒng)所使用,現(xiàn)代操作系統(tǒng)如微軟公司(microsoft)的Windows-95卻不廣泛使用BIOS接口例程。Windows-95和其它現(xiàn)代操作系統(tǒng)利用特定類型和模型的外圍硬件部件專用的設(shè)備驅(qū)動程序來與這類外圍硬件部件通信。設(shè)備驅(qū)動程序提供一個更通用的軟件可通過其與外圍部件交互作用的統(tǒng)一接口。這些設(shè)備驅(qū)動程序可以取代現(xiàn)有的BIOS中斷處理程序,或提供否則就沒有的另外的功能。應(yīng)用軟件于是就免于不得不與這種硬件設(shè)備的具體細節(jié)交互。
許多操作系統(tǒng),包括MS-DOS 2.0以后的MS-DOS版本以及直到Windows 3.11的Windows版本,都包括有在操作系統(tǒng)被引導時從磁盤加載可安裝的設(shè)備驅(qū)動程序的能力。在MS-DOS操作系統(tǒng)中,用戶通過在CONFIG.SYS文件中加入DEVICE=device_file命令就可以加載可安裝的設(shè)備驅(qū)動程序。MS-DOS然后讀取每個設(shè)備驅(qū)動程序文件,將設(shè)備驅(qū)動程序裝入內(nèi)存。WIndows-95能夠用PCI(外圍部件互連)和BIOS的即插即用功能來檢測外圍硬件部件,自動地為所安裝的外圍硬件部件加載適當?shù)尿?qū)動程序。
盡管可安裝設(shè)備驅(qū)動程序的使用為管理外圍硬件部件—諸如網(wǎng)絡(luò)接口卡(NIC)—提供了高度的靈活性,迄今為止,都是依賴在故障計算機上執(zhí)行操作系統(tǒng)來加載軟件驅(qū)動程序和提供必需的支持功能。如果操作系統(tǒng)不引導,或者有必要在重新加載操作系統(tǒng)之前進行故障后診斷,就不會為NIC加載軟件驅(qū)動程序,于是管理員將不能使用通過NIC工作的軟件來遠程訪問系統(tǒng)。因此,需要一種使用在操作系統(tǒng)被引導之前可以得到的、不依賴操作系統(tǒng)的可安裝設(shè)備驅(qū)動程序的方法和系統(tǒng)。本文中所用的操作系統(tǒng)一詞,意思是控制用戶級程序的執(zhí)行并對這種用戶級程序提供諸如資源分配、調(diào)度、I/O控制和數(shù)據(jù)管理等服務(wù)的系統(tǒng)級軟件。這種操作系統(tǒng)的典型例子是MS-DOS、Windows-95、Windows-NT(都可從Microsoft公司得到)、MacOS(從Apple Computer公司得到),以及可從包括Sun Microsystems公司的許多銷售商得到的各種版本的Unix?,F(xiàn)代操作系統(tǒng)諸如Windows-NT,通常在操作系統(tǒng)的核心有一個有保護模式的內(nèi)核或基系統(tǒng)。
計算機系統(tǒng)的遠程管理的一個關(guān)鍵問題是,事實上有可從許多銷售商得到的數(shù)百種不同的網(wǎng)絡(luò)接口卡類型,每一種都可能有不同的編程方式,都可能使用獨有的設(shè)備驅(qū)動程序。為這些卡類型的每一種開發(fā)新的設(shè)備驅(qū)動程序會花費巨大,而且導致不可靠性。因此本發(fā)明的一個目的是利用網(wǎng)絡(luò)增強的BIOS來使用為現(xiàn)有操作系統(tǒng)開發(fā)的標準NIC設(shè)備驅(qū)動程序,這樣就不要求每一種可得到的網(wǎng)絡(luò)接口卡類型都有定制的設(shè)備驅(qū)動程序。
這個目的可以通過使用由某些操作系統(tǒng)銷售商定義的標準接口來實現(xiàn)。為了支持幾乎所有各種網(wǎng)絡(luò)卡類型,操作系統(tǒng)銷售商已經(jīng)定義了要由網(wǎng)絡(luò)接口卡設(shè)備驅(qū)動程序使用的標準接口。這就使操作系統(tǒng)能支持任何提供符合標準接口的驅(qū)動程序軟件的NIC。Novell公司(Novell)已經(jīng)定義了一個這樣的標準,即開放式數(shù)據(jù)鏈接接口(ODI-Open Datalink Interface)。按ODI標準編寫的驅(qū)動程序可以被Novell提供的NetWareTM使用。微軟公司已經(jīng)定義了第二個標準—網(wǎng)絡(luò)驅(qū)動程序接口規(guī)范(NDIS)。按NDIS編寫的驅(qū)動程序可以被微軟公司的操作系統(tǒng)(例如Windows NTTM)使用。此外還有其它的標準可用于UNIXTM操作系統(tǒng)的各版本。
本發(fā)明的另一個目的是提供一種在計算機的操作系統(tǒng)的引導之前能與連接到網(wǎng)絡(luò)的計算機通信的方法和系統(tǒng)。本發(fā)明的再另一個目的是提供計算機上必要的更多軟件和可在遠離第一個配備網(wǎng)絡(luò)增強型BIOS的計算機的第二個計算機上執(zhí)行的軟件,第二個計算機本身不必配備這種網(wǎng)絡(luò)增強型BIOS就能在這兩個計算機之間傳輸命令和信息。
本發(fā)明的目標是一種在引導計算機的操作系統(tǒng)之前或操作系統(tǒng)發(fā)生故障之后通過網(wǎng)絡(luò)與計算機通信的方法和系統(tǒng)。在第一個計算機配備的網(wǎng)絡(luò)增強型BIOS中實現(xiàn)一個連網(wǎng)應(yīng)用程序接口(API)。這個計算機最好配有NIC卡和NIC設(shè)備驅(qū)動程序文件。在NIC設(shè)備驅(qū)動程序中通常被解析到由操作系統(tǒng)的單元提供的服務(wù)的外部引用轉(zhuǎn)而被解析到引用由網(wǎng)絡(luò)增強型BIOS的API提供的服務(wù)。通過網(wǎng)絡(luò)連接到第一個計算機的第二個計算機可以在操作系統(tǒng)加載之前或者操作系統(tǒng)故障之后傳輸命令、狀態(tài)和數(shù)據(jù)。第一個計算機可以進一步配備在發(fā)生POST故障或操作系統(tǒng)崩潰時向第二個計算機報警的手段。
圖1表示系統(tǒng)體系結(jié)構(gòu)最佳實施例的總體圖。服務(wù)器計算機100通過網(wǎng)絡(luò)300與管理工作站200實際相連。網(wǎng)絡(luò)300可以是包括Novell公司的NetWareTM在內(nèi)的許多市場可購得的局域或?qū)捰蚓W(wǎng)中的任何一個。本文中所用的術(shù)語“網(wǎng)絡(luò)”或“計算機網(wǎng)絡(luò)”一般將定義為一組兩個或更多相連的計算機。如果計算機能交換數(shù)據(jù),則稱它們是“相連”的。因此例如,連接技術(shù)、網(wǎng)絡(luò)拓撲和網(wǎng)絡(luò)協(xié)議可能是不同的,例如包括但不限于—除上述LAN和WAN網(wǎng)絡(luò)以外的—通過串行或并行接口和電纜直接相連的兩個計算機、通過公共交換電話網(wǎng)(諸如通過“簡易老式電話服務(wù)”)上的調(diào)制解調(diào)器連接而直接連接的兩個計算機、通過公共電話網(wǎng)上的ISDN連接而連接的兩個計算機、在互連網(wǎng)上相連的兩個計算機。臺式計算機400也可以與網(wǎng)絡(luò)300相連。所示的服務(wù)器計算機和臺式計算機是示例性的,可以是多臺這類計算機中的一臺。
現(xiàn)在參看圖2,所示的是可在其上實施本發(fā)明的計算機400。圖2所示的本文所描述的計算機400是示例性的,可以在不偏離本發(fā)明的情況下作修改。此外,盡管圖1中所示的計算機400是臺式計算機,應(yīng)當明白本文中所用計算機一詞應(yīng)包括—但不限于—臺式計算機(圖1中所示的400)和服務(wù)器計算機(圖1中所示的100)或內(nèi)置系統(tǒng)(未予表示),諸如自動柜員機、銷售點終端或銷售機。
系統(tǒng)總線105構(gòu)成了計算機400的部件的主干。與系統(tǒng)總線105連接的是中央處理單元(CPU)110和系統(tǒng)隨機存取存儲器(RAM)120。CPU最好以至少兩種方式操作,即實模式和保護模式—這在本領(lǐng)域是公知的。非易失性存儲器125-最好是快閃ROM的結(jié)構(gòu),與系統(tǒng)總線105相連。非易失性存儲器125在計算機400關(guān)機或復(fù)位時不改變狀態(tài)。用戶輸入/輸出可通過可視顯示器130、視頻控制器135、鍵盤140和鍵盤控制器145來進行。CPU 110和RAM120以及視頻控制器135可任選地通過單獨的局部總線(未予示出)連接。海量存儲設(shè)備可包括軟盤驅(qū)動器150和關(guān)聯(lián)的軟盤控制器155,和/或硬盤驅(qū)動器160和關(guān)聯(lián)的硬盤控制器161。在下文說明的實現(xiàn)監(jiān)視計時器機構(gòu)的本發(fā)明的一個實施例中,計算機400也包括系統(tǒng)管理RAM(SMRAM)121、外部計時器122和芯片集外部邏輯123。計時器122最好是在芯片集邏輯123內(nèi)部實現(xiàn)。如上所述,圖2的說明是示例性的,可以按本領(lǐng)域的熟練人員顯而易見的許多方式修改而不偏離本發(fā)明。例如,本發(fā)明可以在沒有軟盤驅(qū)動器150或硬盤驅(qū)動器160的無磁盤的工作站上實現(xiàn)。
計算機400也最好包括網(wǎng)絡(luò)接口卡(NIC)170-也稱作網(wǎng)絡(luò)適配器。NIC 170最好通過計算機內(nèi)的一組系統(tǒng)線路插槽165連接到系統(tǒng)總線105。插槽165最好符合某工業(yè)標準,諸如Intel的PCI標準。或者,NIC 170可以不用系統(tǒng)線路插槽而直接與系統(tǒng)總線105連接。
或者,計算機400可以用調(diào)制解調(diào)器代替NIC 170或除NIC 170外還使用調(diào)制解調(diào)器。這種調(diào)制解調(diào)器可以是內(nèi)置式調(diào)制解調(diào)器190—它可以連接到系統(tǒng)總線105或該組系統(tǒng)線路插槽165之一、和/或外置式調(diào)制解調(diào)器180-它一般連接到與系統(tǒng)總線105相連的串行接口175上??蛇x地,計算機400可以通過一個連接串行接口175或并行接口(未予示出)的電纜連接直接與工作站200連網(wǎng)。
現(xiàn)在參看圖3A和3B,所示的是計算機的常規(guī)BIOS區(qū)域500和按照本發(fā)明創(chuàng)建的網(wǎng)絡(luò)增強型BIOS區(qū)域600的部件模塊。常規(guī)BIOS區(qū)域的組成是早期POST 510、其余POST 520、顯示服務(wù)530-諸如在BIOS內(nèi)部用于顯示錯誤和狀態(tài)信息的光標位置和寫字符、POST時間服務(wù)540-諸如硬件測試例程、運行時服務(wù)550-諸如中斷10H視頻輸出服務(wù)和中斷13H磁盤存取服務(wù)、以及啟動程序(enabler)代碼560。啟動程序代碼560使常規(guī)BIOS 500能檢測和加載網(wǎng)絡(luò)增強型BIOS 600,并將控制交給網(wǎng)絡(luò)增強型BIOS 600的初始化入口點。它進一步含有允許在常規(guī)BIOS 500與網(wǎng)絡(luò)增強型BIOS 600之間有合作性多任務(wù)的例程。早期POST 510與其余POST 520之間的劃分是一種實用劃分,POST被劃分為大量的在POST調(diào)度程序例程505控制下執(zhí)行的例程。早期POST 510最好是為將計算機充分地配置成使網(wǎng)絡(luò)增強型BIOS能初始化而要求的那組POST例程。如下文所述的那樣,早期POST 510最好包括的操作有編程內(nèi)存控制器,確定內(nèi)存的大小,測試內(nèi)存,充分地初始化芯片集以訪問如果存在的PCI總線,初始化和測試中斷控制器,為網(wǎng)絡(luò)適配器配置中斷,初始化如果存在的VGA控制器。早期POST 510也可以任選地編程其它芯片集寄存器。早期POST例程510最好存儲在非易失性存儲器125中。
網(wǎng)絡(luò)增強型600用初始化區(qū)域610、集成了內(nèi)核調(diào)度程序621的32位保護模式的內(nèi)核620和加載器630來加強常規(guī)BIOS區(qū)域500。網(wǎng)絡(luò)增強型BIOS 600進一步用利用該內(nèi)核所提供服務(wù)的協(xié)議堆棧640來加強常規(guī)BIOS區(qū)域500。由于現(xiàn)代操作系統(tǒng)一般包括它們自己的一個保護模式的內(nèi)核,網(wǎng)絡(luò)增強型BIOS 600一般在操作系統(tǒng)的引導后就終止。然而本發(fā)明的變例允許至少有一部分網(wǎng)絡(luò)增強型BIOS 600留在內(nèi)存。這個駐留部分用于與下文描述的監(jiān)視器檢測機構(gòu)接口。
現(xiàn)在參看圖4,系統(tǒng)啟動410后,CPU控制被傳送411到早期POST510例程。早期POST 510執(zhí)行諸如編程內(nèi)存控制器、中斷控制器、系統(tǒng)總線控制器以及其它芯片集寄存器等系統(tǒng)操作所必需的基本任務(wù)。這個操作與不是網(wǎng)絡(luò)增強型的BIOS的操作相同。
控制然后轉(zhuǎn)移412給網(wǎng)絡(luò)增強型BIOS的安裝檢測例程,它是圖3的啟動程序560的一部分。安裝檢測例程在非易失性存儲器125中順序掃描,尋找被稱為標記的、指示網(wǎng)絡(luò)增強型BIOS 600代碼的開始的一個數(shù)據(jù)序列。如果安裝檢測例程確定439不存在這種標記,則其余POST例程520執(zhí)行413,控制被傳送414給由操作系統(tǒng)提供的引導例程。如上所述,引導例程裝載432操作系統(tǒng)并向它傳送415CPU控制。
如果找到指示網(wǎng)絡(luò)增強型BIOS 600代碼的開始的標記,則重定位例程416就將網(wǎng)絡(luò)增強型BIOS 600從非易失性存儲器125復(fù)制到RAM120,CPU控制被傳送417到位于相對標記的開始的一個已知偏移地址的網(wǎng)絡(luò)增強型BIOS 600的初始化例程610。由于常規(guī)BIOS 510通常是以實模式操作的,網(wǎng)絡(luò)增強型BIOS初始化例程610將CPU轉(zhuǎn)換成保護模式并初始化32位內(nèi)核620以及協(xié)議堆棧640的各個部件。
如圖4中所示,網(wǎng)絡(luò)增強型BIOS內(nèi)核620最好是多線程的,就是說,它通過將CPU控制按哪一個任務(wù)具有最高優(yōu)先權(quán)而從一個任務(wù)切換到另一個任務(wù)來支持看起來同時執(zhí)行多個任務(wù)。如果任務(wù)正在等待某個外部事件或等待它們所依賴的另一個任務(wù)完成執(zhí)行,它們的執(zhí)行就會受阻塞。為幫助任務(wù)之間的合作,內(nèi)核提供信號、信號量和互相排斥功能的功能,對此本領(lǐng)域的熟練人員是熟悉的。CPU控制在不同任務(wù)之間的切換是由內(nèi)核調(diào)度程序621執(zhí)行的。
網(wǎng)絡(luò)增強型BIOS初始化例程610此時啟動許多線程來支持網(wǎng)絡(luò)協(xié)議堆棧640,以及不同的與管理工作站200應(yīng)用程序通信的特征。這些線程最好是32位保護模式的代碼,將在下文進一步解釋這些特征時討論。
現(xiàn)在將描述常規(guī)BIOS 500與在本發(fā)明的第一個實施例中采用的網(wǎng)絡(luò)增強型BIOS 600交互操作的方法。該交互操作的方法的細節(jié)可以在不影響本發(fā)明原理的情況下進行修改。
參看圖8,圖中進一步詳細地展示了從常規(guī)BIOS代碼到網(wǎng)絡(luò)增強型BIOS 600的初始轉(zhuǎn)換,它如隨后發(fā)生的交互操作切換的重復(fù)過程一樣。BIOS保存其狀態(tài)805,即將所有CPU寄存器和標志存儲在內(nèi)存數(shù)據(jù)區(qū)。網(wǎng)絡(luò)增強型BIOS 600代碼和數(shù)據(jù)然后被解壓并重定位810,CPU控制被轉(zhuǎn)移到這個代碼的入口點815。內(nèi)核及網(wǎng)絡(luò)協(xié)議堆棧被初始化820。處理器被返回到實模式825,調(diào)用一個常規(guī)BIOS服務(wù)程序?qū)⑴cBIOS的內(nèi)核模式轉(zhuǎn)換入口點的地址登記830。這個例程返回BIOS模式轉(zhuǎn)換入口點的地址835。
然后進入一個重復(fù)狀態(tài),在這個狀態(tài)下,常規(guī)BIOS和32位內(nèi)核線程交替運行。內(nèi)核保存其狀態(tài),即將所有CPU寄存器和標志存儲在內(nèi)存數(shù)據(jù)區(qū)。然后執(zhí)行向BIOS模式轉(zhuǎn)換入口點的轉(zhuǎn)移845。以前保存的BIOS狀態(tài)被恢復(fù)850,常規(guī)BIOS代碼執(zhí)行。CPU控制被傳送855給常規(guī)BIOS區(qū)域500的POST調(diào)度程序例程505,后者將執(zhí)行當前的BIOS POST例程,一直到它要么完成,要么由于等待諸如中斷的外部事件、或編程的延時結(jié)束而掛起。某些POST任務(wù)諸如內(nèi)存檢測可能執(zhí)行的時間較長,在這些任務(wù)內(nèi),常規(guī)BIOS將定期地將控制交給32位內(nèi)核620。此時BIOS再次保存其狀態(tài)860,并執(zhí)行到內(nèi)核模式轉(zhuǎn)換入口點的轉(zhuǎn)移865。內(nèi)核恢復(fù)其保存的狀態(tài)870,重新進入保護模式875,內(nèi)核調(diào)度程序621然后將調(diào)度所有沒有被阻塞的線程880。當內(nèi)核調(diào)度程序621確定沒有準備好要執(zhí)行的線程時,即系統(tǒng)“空閑”時,內(nèi)核重新進入實模式885,這個過程從內(nèi)核保存其狀態(tài)840這一點重復(fù)地進行。
內(nèi)核620最好這樣來實現(xiàn)中斷處理,使得如果BIOS POST例程正等待中斷并因此已經(jīng)交出控制,當在32位內(nèi)核任務(wù)期間發(fā)生中斷時,該中斷被反映到BIOS任務(wù)。反過來也是一樣,為32位內(nèi)核線程設(shè)計的中斷,當在BIOS任務(wù)執(zhí)行期間發(fā)生時,必須被反映到該32位內(nèi)核任務(wù)。中斷反映的管理對于了解微軟視窗虛擬設(shè)備驅(qū)動程序(VxD)的人來說是熟悉的。處理器模式轉(zhuǎn)換的性能在Intel公司發(fā)表的微處理器手冊中有記載。根據(jù)本公開的技術(shù),對其它驅(qū)動程序類型和微處理器體系結(jié)構(gòu)的類似解決方案,對于本領(lǐng)域的熟練人員來說是顯而易見的。
常規(guī)BIOS和32位網(wǎng)絡(luò)增強型BIOS任務(wù)交替執(zhí)行的作用是,網(wǎng)絡(luò)增強型BIOS線程與當前的常規(guī)BIOS POST任務(wù)看起來是同時操作的。返回圖4可以看到,在初始化417之后有兩個執(zhí)行路徑,在會話鑰(下文討論)已經(jīng)交換422之后有多個執(zhí)行路徑。概念上講這些任務(wù)和線程是同時操作的。圖4中的虛線表示線程432到427的同時執(zhí)行。
本文用術(shù)語“任務(wù)”來描述本發(fā)明的最佳實施例,該術(shù)語概括地表示來自在由POST調(diào)度程序順序執(zhí)行的常規(guī)BIOS的實模式例程的序列。某個時刻這些任務(wù)只有一個是活動的。本文所用的術(shù)語“線程”,概括地表示由內(nèi)核調(diào)度程序621正在調(diào)度的32位保護模式的代碼。這些線程概念上與其它線程以及單一的常規(guī)BIOS POST任務(wù)是同時運行的。然而對于本領(lǐng)域的熟練人員來說,顯然本發(fā)明并不受限于任務(wù)與線程之間的任何區(qū)分。
參看圖4,常規(guī)BIOS區(qū)域500繼續(xù)執(zhí)行418完其余POST例程520。網(wǎng)絡(luò)增強型BIOS 600現(xiàn)在“同時地”開始使用網(wǎng)絡(luò)通信。下文要給出網(wǎng)絡(luò)協(xié)議堆棧操作的細節(jié),這一節(jié)給出的是該事務(wù)發(fā)生的概述。網(wǎng)絡(luò)增強型BIOS 600先發(fā)出419一個報警分組到網(wǎng)絡(luò)300,準備打開一個數(shù)據(jù)連接。網(wǎng)絡(luò)增強型BIOS 600以預(yù)定時間等待來自管理工作站200的應(yīng)答。這個報警分組和任何可以隨后發(fā)出的格式最好是一個SNMP(簡單網(wǎng)絡(luò)管理協(xié)議)分組。SNMP是TCP/IP(傳輸控制協(xié)議/因特網(wǎng)協(xié)議)組合內(nèi)部的一種標準/協(xié)議,通常用于管理和監(jiān)控TCP/IP網(wǎng)絡(luò)上節(jié)點。SNMP和TCP/IP在本領(lǐng)域是眾所周知的,例如在J.Martin所著的《TCP/IP Networking》(PTR Prentice Hall,1994)就有描述。即使沒有管理工作站應(yīng)答,這也允許在連接在網(wǎng)絡(luò)上的計算機上運行的諸如可從Hewlett-Packard購得的HP OpenViewTM等第三方管理軟件來記錄及顯示這些報警。其它協(xié)議的使用對于本技術(shù)中的普通技術(shù)人員是顯而易見的。
如果在一個可配置的時間期間之后(它最好是5秒的數(shù)量級)仍未收到來自管理工作站200的應(yīng)答,可將網(wǎng)絡(luò)增強型BIOS 600配置成或者試圖對不同的管理工作站進行連接,或者可以終止該網(wǎng)絡(luò)增強型BIOS 600的操作,在這一情況中,傳統(tǒng)的BIOS部分500將以正常方式完成POST。如果沒有POST錯誤,傳統(tǒng)BIOS部分500將發(fā)布431引導報警分組到網(wǎng)絡(luò)300上并將CPU控制傳送414給BIOS引導例程,從而給引導扇區(qū)代碼432,從而給操作系統(tǒng)415。如果POST 520例程的其余部分檢測到438錯誤,它將判定437該錯誤是否是關(guān)鍵性的。如果POST 520例程的其余部分檢測到非關(guān)鍵性錯誤,則傳統(tǒng)BIOS部分500將發(fā)布434非關(guān)鍵性錯誤報警到網(wǎng)絡(luò)300上并繼續(xù)處理。POST520例程的其余部分如果檢測到437關(guān)鍵性錯誤,則它將發(fā)布435致命錯誤報警到網(wǎng)絡(luò)300上并進入436診斷模式。
如果接收到來自管理工作站200的應(yīng)答,則最好通過諸如計算基于消息內(nèi)容的散列函數(shù)及只應(yīng)是授權(quán)的管理工作站200應(yīng)用及具有網(wǎng)絡(luò)增強型BIOS 600的計算機400知道的秘密密鑰來驗證421它。將其與作為工作站的應(yīng)答的一部分發(fā)送的消息驗證代碼進行比較。只有授權(quán)的管理工作站才能生成包含正確的驗證代碼的應(yīng)答。
工作站200與網(wǎng)絡(luò)增強型BIOS 600之間的進一步通信最好加以驗證,諸如利用秘密密鑰來交換422基于隨機數(shù)的會話密鑰??衫霉拿荑€交換機制之一,諸如在Steiner的“應(yīng)用密碼學”中所描述的Diffie-Hellman。也可參看Hellman等人的美國專利4,200,770號。對于其余會話來說,要求所有將來的網(wǎng)絡(luò)響應(yīng)都使用交換鑰來計算消息驗證代碼。
一旦交換了會話鑰,就創(chuàng)建其它的線程來提供待由管理工作站支持的功能所要求的另外的服務(wù)。為了提供遠程控制臺設(shè)備,啟動鍵盤重定向線程423,它接受發(fā)自管理工作站200應(yīng)用的掃描代碼,用通常為診斷目的設(shè)計的機制將掃描代碼放入鍵盤控制器145的輸出緩沖區(qū)。這些掃描代碼然后被計算機400的標準診斷服務(wù)例程讀取,其效果等同于在鍵盤140上按下一個鍵。鍵監(jiān)控例程430檢查在鍵盤上接收或擊打的所有按鍵。某些鍵被解釋為是要執(zhí)行特殊動作—諸如進入特殊診斷模式或執(zhí)行特定類型的再引導操作—的指令。
屏幕重定向線程424通過截獲BIOS屏幕顯示中斷10H以及BIOS顯示服務(wù)輸出而捕獲所有對屏幕的輸出。輸出被緩存,并在管理工作站應(yīng)用請求傳送未完成屏幕數(shù)據(jù)時定期發(fā)送給它。屏幕重定向線程424和鍵盤重定向線程423在下文結(jié)合應(yīng)用協(xié)議層作進一步說明。
磁盤重定向線程425提供支持對軟盤驅(qū)動器訪問的重定向的選擇。如果是這樣配置的,BIOS軟件磁盤服務(wù)中斷(Intel 80×86上的中斷13H)就被截取,所有對軟盤驅(qū)動器(通常為A驅(qū)動器)的引用都被緩存,并在管理工作站200應(yīng)用請求要傳送未完成磁盤操作時定期發(fā)送給它。為服務(wù)于這些引用,管理工作站引用訪問其自己的軟盤、其硬盤上的文件、或位于網(wǎng)絡(luò)上其它地方的另一個計算機上的驅(qū)動器上的文件。BIOS磁盤重定向線程425的操作將掛起,直到重定向的磁盤操作發(fā)生,且數(shù)據(jù)或結(jié)果已經(jīng)通過網(wǎng)絡(luò)300返回。作為中斷13H操作的結(jié)果,所傳輸?shù)臄?shù)據(jù)被返回到調(diào)用應(yīng)用或者操作系統(tǒng)函數(shù)。
上述磁盤重定向機制可用來向配備網(wǎng)絡(luò)增強型BIOS的計算機提供從磁盤或另一個計算機上駐留的文件引導操作系統(tǒng)的能力。這在整個磁盤子系統(tǒng)都發(fā)生故障的情況下診斷計算機上故障特別有用,并且還可用于建立無磁盤的工作站計算機。
如上文介紹本發(fā)明的背景時所述,這個功能以前在PC兼容計算機上就有了,方法是安裝一個具有特定網(wǎng)絡(luò)卡專用的“引導ROM”的網(wǎng)絡(luò)卡,這需要額外的花費。按照本發(fā)明,這個從遠程設(shè)備引導和訪問遠程設(shè)備的功能是網(wǎng)絡(luò)增強型BIOS 600的一個通用性功能,能用在各種有諸如ODI或BDIS驅(qū)動程序等標準驅(qū)動程序可用的各種網(wǎng)絡(luò)卡上。
加載器服務(wù)線程426向管理工作站200應(yīng)用提供一個到模塊加載器630的接口。管理工作站200能向含有要裝入RAM并作為另外的瞬態(tài)網(wǎng)絡(luò)增強型BIOS線程執(zhí)行的代碼與數(shù)據(jù)的模塊加載器630發(fā)送消息。
異步命令線程427向管理工作站200提供一個接口,通過它能向網(wǎng)絡(luò)增強型BIOS 600發(fā)出異步命令,例如請求傳輸BIOS數(shù)據(jù)、進入特別診斷模式或執(zhí)行特定的再引導操作。
以上描述的所有線程在網(wǎng)絡(luò)增強型BIOS 600處于活動的整個期間連續(xù)運行,通常一直到POST完成。如上所述,如果沒有管理工作站200的介入,并且沒有POST錯誤,就發(fā)送一個指示POST成功完成的報警431。
網(wǎng)絡(luò)增強型BIOS 600可以進一步安裝其自己的處理計時器滴答中斷(80x86微處理器上的中斷08H)的中斷處理程序。計時器滴答中斷向量指向圖8中的實現(xiàn)步驟860的過程,該過程迫使當前實模式保存其狀態(tài)并轉(zhuǎn)移到網(wǎng)絡(luò)增強型BIOS 600。這使網(wǎng)絡(luò)增強型BIOS 600能在諸如MS-DOS的某些實模式操作系統(tǒng)加載和運行期間以一定的間歇繼續(xù)獲得CPU控制。注意,BIOS屏幕顯示中斷10H此前可能已經(jīng)被重定向到一個作為已經(jīng)說明過的遠程控制臺設(shè)備的一部分的處理程序,這個機構(gòu)依然在位。CPU控制然后傳送到引導程序432。
如果要加載的操作系統(tǒng)是保護模式的操作系統(tǒng),諸如NetWare或Windows-NT,則它將把處理器轉(zhuǎn)換到保護模式,置換包括上述的計時器滴答中斷和屏幕顯示中斷的中斷向量,取得對CPU110的控制,除了其崩潰恢復(fù)諸功能外,網(wǎng)絡(luò)增強型BIOS將停止工作。
如果加載的是沒有任何保護模式內(nèi)存管理器的實模式操作系統(tǒng)諸如MS-DOS,則網(wǎng)絡(luò)增強型BIOS代碼將留在擴展內(nèi)存中。當MS-DOS重新編程中斷向量時,它將鏈接現(xiàn)有的向量,使得MS-DOS中斷處理例程將首先執(zhí)行,然后執(zhí)行該向量在MS-DOS引導程序啟動時所指向的例程。這樣的結(jié)果是,包括遠程控制臺設(shè)備在內(nèi)的網(wǎng)絡(luò)增強型BIOS600的所有功能,在這種操作系統(tǒng)運行時繼續(xù)是可用的。
對本領(lǐng)域的熟練人員來說,顯然,根據(jù)本公開中的介紹,可以在POST時或DOS環(huán)境中添加更多的可以在內(nèi)核調(diào)度程序控制下運行的線程。
網(wǎng)絡(luò)協(xié)議層現(xiàn)在參看圖5,要說明的是一個提供BIOS內(nèi)部網(wǎng)絡(luò)接口的最佳方法。
網(wǎng)絡(luò)支持一般被劃分成幾個軟件層。例如,國際標準組織為網(wǎng)絡(luò)支持定義了一個七層模型。該劃分中的每一層都可以使用由它“下面”的一層所提供的服務(wù),并向“上面”的一層提供服務(wù)。
網(wǎng)絡(luò)驅(qū)動程序?qū)?24是底部軟件層。它下面的層是連網(wǎng)軟件本身—網(wǎng)絡(luò)控制器接口725。網(wǎng)絡(luò)驅(qū)動程序?qū)?24向上面的連網(wǎng)協(xié)議層722提供服務(wù)。
連網(wǎng)協(xié)議層722本身在邏輯上分為若干層,其中較低層協(xié)議用于使更高層協(xié)議能操作。例如,一個投遞分組數(shù)據(jù)但不保障投遞或投遞次序的無連接的數(shù)據(jù)報協(xié)議(例如不可靠的數(shù)據(jù)報協(xié)議(UDP)—圖6的732)被支持有保障的順序數(shù)據(jù)投遞的更高層協(xié)議(例如傳輸控制協(xié)議(TCP))使用。本發(fā)明的最佳實施例只實現(xiàn)無連接數(shù)據(jù)報協(xié)議來節(jié)省非易失性RAM的空間。UDP 732傳送IP數(shù)據(jù)報或分組到IP層733(圖6)。IP層733的功能是使網(wǎng)絡(luò)300的拓撲和物理特征透明化。
模型的最頂一層是應(yīng)用層721,它用協(xié)議層722所提供的服務(wù)來在網(wǎng)絡(luò)上傳輸數(shù)據(jù)。網(wǎng)絡(luò)驅(qū)動程序?qū)泳W(wǎng)絡(luò)驅(qū)動程序?qū)?24將網(wǎng)絡(luò)卡硬件725與連網(wǎng)協(xié)議層722相連。網(wǎng)絡(luò)驅(qū)動程序?qū)?24最好按照標準的接口規(guī)范來實現(xiàn)。如上所述,其中的兩種可能規(guī)范是ODI和NDIS。本文說明的實現(xiàn)詳細描述了按照ODI標準編寫的驅(qū)動程序的使用。對于本領(lǐng)域的熟練人員來說,實現(xiàn)一個支持使用按其它標準—諸如NDIS或UNIX標準—開發(fā)的驅(qū)動程序、甚至支持多個標準網(wǎng)絡(luò)增強型BIOS是顯而易見的。
現(xiàn)在參看圖6,將說明網(wǎng)絡(luò)協(xié)議堆棧的最佳實施例。ODI規(guī)范定義了一個將網(wǎng)絡(luò)設(shè)備驅(qū)動程序724與諸上層隔離的接口。鏈路支持層(LSL)734向網(wǎng)絡(luò)堆棧和網(wǎng)絡(luò)驅(qū)動程序這兩個上層提供登記和緩沖器分配服務(wù)。網(wǎng)絡(luò)設(shè)備驅(qū)動程序的諸部件被統(tǒng)稱為多級鏈路接口驅(qū)動程序(MLID)。MLID738本身可以劃分成三個部件媒體支持模塊(MSM)735、拓撲特定模塊(TSM)736和硬件特定模塊(HSM)37。MSM例程735是所有驅(qū)動程序公用的,支持網(wǎng)絡(luò)驅(qū)動程序?qū)?24與網(wǎng)絡(luò)增強型BIOS的接口。TSM例程736對用于諸如以太網(wǎng)或令牌環(huán)等特定連網(wǎng)技術(shù)的驅(qū)動程序是公用的。HSM例程737是每個特定NIC170特有的。HSM例程737必須處理NIC初始化、開機、關(guān)閉、復(fù)位、分組接收與傳輸、超時。
為了便于網(wǎng)絡(luò)卡驅(qū)動程序的開發(fā),許多對許多TSM和MSM例程來說公用的代碼都被第三方開發(fā)商標識出來放入能被驅(qū)動程序使用的常用例程集中。這些例程可以移植到BIOS中,沒有操作系統(tǒng)的支持也能執(zhí)行。這些TSM和MSM例程又可被HSM驅(qū)動程序737所依賴。按照定義,符合ODI的HSM設(shè)備驅(qū)動程序必須只使用ODI規(guī)定的服務(wù)。因此,支持那些TSM和MSM服務(wù)的網(wǎng)絡(luò)增強型BIOS 600,無需操作系統(tǒng)的幫助就將能支持符合ODI的HSM設(shè)備驅(qū)動程序。
如上所述,MSM和TSM例程在網(wǎng)絡(luò)增強型BIOS 600中的實現(xiàn)最好通過添加一個小型多任務(wù)內(nèi)核來進行。
網(wǎng)絡(luò)增強型BIOS 600最好實現(xiàn)LSL、MSM和TSM例程。然而,可以省略這些例程中的許多功能,以節(jié)省它們最好在其中存儲的非易失性RAM 125。這樣,網(wǎng)絡(luò)增強型BIOS 600向連網(wǎng)接口卡170提供一種與操作系統(tǒng)所提供的類似的環(huán)境,允許符合現(xiàn)有標準的設(shè)備驅(qū)動程序無需修改就能實現(xiàn)本文目的的功能。最優(yōu)的最小例程集的確定方法是,檢查可從不同制造商得到許多不同的ODI驅(qū)動程序,確立哪些例程是要由網(wǎng)絡(luò)增強型BIOS支持的應(yīng)用層服務(wù)所必需的。本發(fā)明人目前所理解的用于NE2000、Intel EtherExpress和3Com 90x的最佳引入功能集,如下面的表1所列表1EtherTSMFastProcessGetRCBMSMParseCustomKeywordsEtherTSMFastRcvComplete MSMParseDriverParametersEtherTSMFastSendComplete MSMPrintStringEtherTSMGetASMHSMIFLevel MSMPrintStringWarningEtherTSMGetNextSend MSMRdConfigSpace16EtherTSMGetRCB MSMRdConfigSpace32EtherTSMRegisterHSM MSMRdConfigSpace8EtherTSMSendComplete MSMReadPhysicalMemoryEtherTSMUpdateMulticast MSMRegisterHardwareOptionsGetCurrentTime MSMRegisterMLIDMSMAlertFatalMSMReturnDriverResourcesMSMAlertWarning MSMReturnRcvECBMSMAllocPagesMSMScanBusInfoMSMAllocateRCB MSMScheduleIntTimeCallBackMSMDriverRemove MSMSearchAdapterMSMFreePages MSMSetHardwareInterruptMSMGetMicroTimer MSMWrtConfigSpace16MSMGetPhysical MSMYieldWidthDelayIOConfigurationList協(xié)議層為便于應(yīng)用開發(fā),網(wǎng)絡(luò)增強型BIOS 600最好也實現(xiàn)一些不同的協(xié)議層。最好實現(xiàn)兩個系列的協(xié)議基于NetwareTM的網(wǎng)絡(luò)公用的因特網(wǎng)分組交換/有序分組交換(IPX/SPX)—連同其所要求的較低層協(xié)議;傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)協(xié)議系列—連同其支持協(xié)議諸如因特網(wǎng)控制消息協(xié)議(ICMP)。然而,在非易失性RAM非常寶貴的情況下,該實現(xiàn)在功能上可以部分或全部省略這一點。例如,網(wǎng)絡(luò)增強型BIOS 600可以實現(xiàn)IPX而不實現(xiàn)保障分組投遞且在IPX的頂上實現(xiàn)的SPX。RPC層為進一步便于應(yīng)用開發(fā),最好實現(xiàn)一個提供遠程過程調(diào)用(RPC)731(圖6)的功能的協(xié)議層。這是例如由Nelson B.J.、Birrell A.D.所描述(見《Implementing Remote Procedure Calls,ACMTransactions on Computer Systems》2(1),1984年2月)的RPC的功能的一個子集。如圖7所示,RPC服務(wù)器751配備在網(wǎng)絡(luò)增強型BIOS內(nèi),RPC客戶機752配備在管理工作站200應(yīng)用內(nèi)。這就使管理工作站200上的應(yīng)用程序能包括一個簡單功能調(diào)用753,其參數(shù)是用較低層網(wǎng)絡(luò)協(xié)議在網(wǎng)絡(luò)300上傳送給帶有網(wǎng)絡(luò)增強型BIOS 600的機器400的。RPC功能然后由該網(wǎng)絡(luò)增強型計算機400上的一個服務(wù)例程755執(zhí)行,結(jié)果被返回756到管理工作站??蛻魴C調(diào)用過程753和服務(wù)器被調(diào)用的過程可以分別與一個調(diào)用占位程序或被調(diào)用占位程序(未予示出)接口。這為應(yīng)用程序能與網(wǎng)絡(luò)增強型計算機400交互作用提供一種簡易的方法。網(wǎng)絡(luò)增強型計算機400最好用諸如上文已說明過的消息驗證代碼協(xié)議來驗證RPC請求。
RPC機制也為OEMS實現(xiàn)增強的服務(wù)—諸如從服務(wù)器管理硬件訪問數(shù)據(jù)或在制造測試時裝載診斷代碼—提供了手段。應(yīng)用層應(yīng)用層721含有管理員可遠程訪問的各種應(yīng)用服務(wù)。
這些應(yīng)用最好包括屏幕和鍵盤向網(wǎng)絡(luò)300的重定向,允許應(yīng)用的控制經(jīng)過網(wǎng)絡(luò),而不是使用本地鍵盤140和視頻顯示器130。這將提供遠程控制臺設(shè)備許多特征,諸如允許遠程控制臺設(shè)備觀察由POST報告的消息和任何錯誤以及用BIOS建立屏幕或其它BIOS配置方法來允許查看和改變由BIOS控制的參數(shù)。
屏幕和鍵盤通過網(wǎng)絡(luò)300的重定向可以用上述的線程423和424(圖4)及RPC機制來取得。鍵盤重定向的取得方法是,捕獲工作站200的按鍵,使RPC調(diào)用將對應(yīng)于按鍵的掃描代碼從工作站200傳輸?shù)接嬎銠C400。網(wǎng)絡(luò)增強型BIOS內(nèi)的服務(wù)線程423然后模擬從本地鍵盤接收的掃描代碼的效果。實現(xiàn)這種模擬的其中一個方法是,向鍵盤控制器電路145發(fā)送一個特殊命令,將所傳輸?shù)膾呙璐a插入鍵盤控制器電路的輸出緩沖器。
屏幕重定向更復(fù)雜,因為它要求從網(wǎng)絡(luò)增強型BIOS 600向工作站200傳輸數(shù)據(jù),而所述RPC機制一般不允許這種傳輸從計算機400啟動。因此在工作站200應(yīng)用程序中要調(diào)用RPC功能,在網(wǎng)絡(luò)300上傳輸一個請求,該請求然后啟動計算機400上BIOS的網(wǎng)絡(luò)接口內(nèi)安裝的一個服務(wù)例程,阻塞各屏幕重定向線程的執(zhí)行,直到有屏幕數(shù)據(jù)準備好向工作站200發(fā)送。如上所述,服務(wù)最好是多線程的,以便在等待屏幕數(shù)據(jù)期間讓其它操作繼續(xù)。服務(wù)例程通過掛鉤BIOS屏幕顯示服務(wù)中斷就能捕獲屏幕數(shù)據(jù),或者它可以直接鏈接到向屏幕輸出字符的BIOS顯示服務(wù)代碼。當屏幕數(shù)據(jù)可用時,它被放置在內(nèi)存的緩沖區(qū),這導致RPC服務(wù)器的服務(wù)線程被解除阻塞。發(fā)送一個含有屏幕數(shù)據(jù)的網(wǎng)絡(luò)分組。這導致RPC客戶機線程解除阻塞,屏幕數(shù)據(jù)作為原始功能調(diào)用的結(jié)果被返回給管理工作站。
其它采用最佳分層體系結(jié)構(gòu)、特別是RPC功能的可能應(yīng)用包括診斷例程,這些例程允許通過發(fā)出測試命令和瀏覽使用網(wǎng)絡(luò)的工作站200上的結(jié)果來測試網(wǎng)絡(luò)增強型計算機400。
能采用最佳分層體系結(jié)構(gòu)的其它可能應(yīng)用對于本領(lǐng)域的熟練人員來說是顯而易見的。二進制兼容性網(wǎng)絡(luò)適配器制造商通常與每個網(wǎng)絡(luò)適配器一起提供含有操作系統(tǒng)特定的設(shè)備驅(qū)動程序的文件。為了使用為這種操作系統(tǒng)開發(fā)的網(wǎng)絡(luò)驅(qū)動程序,網(wǎng)絡(luò)增強型BIOS 600必須使用驅(qū)動程序文件內(nèi)含有的二進制映象。按照ODI標準,驅(qū)動程序映象的格式是NetWare LoadableModule(NLM)文件格式。網(wǎng)絡(luò)適配器制造商提供的支持ODI標準的驅(qū)動程序?qū)崿F(xiàn)ODI規(guī)范的HSM部分。加載進程必須轉(zhuǎn)換這個格式并將驅(qū)動程序裝入非易失性存儲器。在加載進程中,設(shè)備驅(qū)動程序引用外部例程和其需要被處理的入口點。NLM格式含有關(guān)于為支持其含有的代碼的操作而需要的外部例程的信息。信息的形式是一個表,內(nèi)容是外部例程必須由此調(diào)用的地址,和可以解釋為是外部例程的名稱的對應(yīng)引用。在加載進程期間,所需要的例程位于內(nèi)存中,需要引用這些外部例程的NLM中的位置被改變。這個過程對本領(lǐng)域的熟練人員來說是熟悉的,他們一般稱之為“鏈接”。
在本發(fā)明的一個實施例中,一個基于獨立操作系統(tǒng)的實用程序讀取NIC制造商提供的驅(qū)動程序文件,解析對驅(qū)動程序中外部符號的引用,輸出一個然后被裝入非易失性存儲器的二進制文件。在本發(fā)明的另一個實施例中,驅(qū)動程序文件將被BIOS代碼直接裝入非易失性存儲器。網(wǎng)絡(luò)增強型BIOS 600在系統(tǒng)啟動時解析對驅(qū)動程序中外部符號的引用。如上所述,由制造商所提供設(shè)備驅(qū)動程序引用的外部例程是在網(wǎng)絡(luò)增強型BIOS內(nèi)部實現(xiàn)的,這就消除了訪問操作系統(tǒng)的需要。
除了實際的驅(qū)動程序代碼和數(shù)據(jù)之外,驅(qū)動程序二進制文件還含有幾個表,包括·一個描述各種其它表的位置和性質(zhì)的文件首部;·驅(qū)動程序代碼段的映象;·驅(qū)動程序數(shù)據(jù)段的映象;·應(yīng)當由其它模塊(導入表)提供的符號的名稱和使用位置;·驅(qū)動程序提供的能被其它模塊使用的符號的名稱和位置;·一個能根據(jù)驅(qū)動程序被裝載到的最終地址固定驅(qū)動程序代碼和數(shù)據(jù)映象的表,這個表通常被稱為“組織”表。
驅(qū)動程序加載代碼(要么是網(wǎng)絡(luò)增強型BIOS 600的一部分,要么是基于獨立的操作系統(tǒng)的實用程序中的)用這些表中的信息,來解析對其它模塊的引用,根據(jù)最終的加載地址來定位驅(qū)動程序映象。用調(diào)制解調(diào)器替代NIC的操作如上所述,在不可能有使用NIC的網(wǎng)絡(luò)連接的情況下,可能需要用調(diào)制解調(diào)器連接作為替代。實現(xiàn)的方法最好是,創(chuàng)建一個軟件模塊,它實現(xiàn)ODI規(guī)范的MLID部分,但被改造為適合通過計算機175的串行接口—因此就是通過一個連接遠程計算機的外置式調(diào)制解調(diào)器180來發(fā)送和接收數(shù)據(jù)。(圖2)或者也可以使用內(nèi)置式調(diào)制解調(diào)器。這個軟件模塊作為HSM的替代,按上述方法在非易失性存儲器中鏈接和安裝。
在另一實現(xiàn)中,支持調(diào)制解調(diào)器的軟件模塊最好設(shè)計成與協(xié)議堆棧的UDP層一樣的API。在這個情形中,UDP以及協(xié)議堆棧的所有較低層都可以從計算機的非易失性存儲器中省略。操作系統(tǒng)故障檢測和處理操作系統(tǒng)901(圖9)的故障可以通過許多已知技術(shù)中的任何技術(shù)或通過下文描述的新的監(jiān)視機制來檢測。
許多操作系統(tǒng)故障導致一個有控制的故障模式,在這種模式中,操作系統(tǒng)本身檢測故障并執(zhí)行錯誤例程??梢詸z查操作系統(tǒng)代碼或文檔來確定這種錯誤例程的執(zhí)行的路徑。通過使用具有系統(tǒng)級特權(quán)的設(shè)備驅(qū)動程序,就有可能修改錯誤例程,迫使它將控制交給為此目的保留在內(nèi)存中的網(wǎng)絡(luò)增強型BIOS 600的一部分。網(wǎng)絡(luò)增強型BIOS最好也提供應(yīng)用程序接口(API)或供操作系統(tǒng)在進入受控制的故障代碼時尋址的簡單錯誤例程入口點。這在操作系統(tǒng)采用能用于指示其將其錯誤處理程序例程定向到外部代碼的API的情況下是有用的。
其它用于檢測操作系統(tǒng)故障的技術(shù)包括使用監(jiān)視計時器裝置。在Burckhartt專利中描述了一例監(jiān)視計時器裝置,它與在操作系統(tǒng)控制下運行的一個程序聯(lián)合操作。操作系統(tǒng)在正常操作期間定期地再觸發(fā)計時器。如果Burckhartt專利中描述的計時器的時間段到期,沒有程序重新觸發(fā)計時器,就假設(shè)操作系統(tǒng)發(fā)生了故障。計時器的輸出直接或間接地連接處理器的復(fù)位引腳,使系統(tǒng)復(fù)位。這就阻止了對關(guān)于故障的原因的有用信息的收集。
現(xiàn)在參看圖9,本發(fā)明的監(jiān)視計時器機制(下文說明)克服了這些缺陷,最好用于網(wǎng)絡(luò)增強型BIOS,因為它允許采用網(wǎng)絡(luò)增強型BIOS的數(shù)據(jù)傳輸方法。對故障診斷有用的信息可以被捕獲并傳送到遠離故障機器的系統(tǒng)管理器。這與現(xiàn)有技術(shù)不同,因為事實上監(jiān)視計時器機制不立即將機器復(fù)位,反而讓某些基本數(shù)據(jù)收集操作首先發(fā)生。采用的是微處理器的系統(tǒng)管理模式(SMM)。數(shù)據(jù)收集例程920被網(wǎng)絡(luò)增強型BIOS安裝到系統(tǒng)管理RAM(SMRAM)121(圖2)中。這個數(shù)據(jù)收集920例程可以在上述許多步驟中的任何步驟期間安裝,例如在圖8的內(nèi)核初始化步驟820期間安裝。SMRAM 121只有在系統(tǒng)管理中斷(SMI)已經(jīng)發(fā)生并正受到服務(wù)的時候才是可訪問的。SMM、SMRAM和SMI在Intel公司提供的微處理器手冊中有描述。SMI可以用與芯片集123外部SMI引腳連接的外部計時器122(圖2)來生成。芯片集123用一個邏輯“或”函數(shù)(未予示出)將SMI與它的內(nèi)部SMI源組合,然后將這個信號傳出,輸出到微處理器SMI引腳中。
或者,芯片集可含有用于電源管理的內(nèi)部計時器或可編程成定期SMI的源的備用計時器。最好用這種內(nèi)部計時器來實現(xiàn),因為無需配備另外的硬件。計時器按編程的間隔上生成SMI905。對于每個計時器事件,在SMRAM中存儲的事件計數(shù)器增量910。如果事件計數(shù)器達到預(yù)定值915,說明操作系統(tǒng)已經(jīng)崩潰,于是就啟動數(shù)據(jù)收集。如果收集計數(shù)器還沒有達到預(yù)定值,SMI例程就被退出935。一個在操作系統(tǒng)901控制任務(wù)下運行的程序定期地遞減計數(shù)器或?qū)⒂嫈?shù)器置零902,以防止計數(shù)器達到預(yù)定值。
監(jiān)視計數(shù)器功能的實現(xiàn)細節(jié)必然依照其部署所在的是什么硬件平臺而有所不同。用不同方式處理計數(shù)的其它等價實現(xiàn)也是可能的。
要是能夠運行同一個程序來復(fù)位運行著相同操作系統(tǒng)的任何機器上的監(jiān)視計時器程序—無論SMRAM中監(jiān)視機制的實現(xiàn)細節(jié)如何,那是有益的。因此,常規(guī)BIOS 500最好配備一個API來啟動監(jiān)視器、關(guān)閉監(jiān)視器、設(shè)置超時期限、復(fù)位SMI事件的當前計數(shù)。這個API最好以一個通過BIOS 32位服務(wù)目錄訪問的服務(wù)來實現(xiàn)。描述BIOS 32位服務(wù)的有《Standard BIOS 32-Bit Service Proposal》(0.4版,Phoenix Technologies出版,1993年5月24日)—本文引以參考。在操作系統(tǒng)控制下運行的程序用具有內(nèi)核訪問權(quán)的設(shè)備驅(qū)動程序來訪問BIOS 32位服務(wù)。
當這個推薦的監(jiān)視計時器方法檢測到操作系統(tǒng)崩潰時,可以采取各種步驟920來為以后的診斷保留關(guān)于崩潰狀態(tài)的信息。其中的例子是,將計算機內(nèi)存的一部分或全部,復(fù)制到磁盤存儲介質(zhì)的預(yù)留區(qū)中—這通常稱為核心轉(zhuǎn)儲;保留屏幕存儲器和視頻控制器寄存器的狀態(tài)—由此保留原本會由操作系統(tǒng)在其錯誤例程中顯示的診斷信息。
在采取了所有這些保留證據(jù)的步驟之后,系統(tǒng)可以被復(fù)位930。這個復(fù)位在其POST的早期用一種在CMOS存儲器中存儲的特殊關(guān)機代碼或其它等價裝置向常規(guī)BIOS通知復(fù)位是崩潰所致。這個事實可以在控制臺上顯示,并且如果網(wǎng)絡(luò)增強型BIOS是這樣配置的,它就能因為這種崩潰而自動進入特殊診斷模式。可以將攜帶這個事實和關(guān)于崩潰的其它任選信息的SNMP報警通過網(wǎng)絡(luò)300發(fā)送到另一個計算機。遠離計算機的系統(tǒng)管理員于是就能選擇在試圖重新加載計算機操作系統(tǒng)之前用采用網(wǎng)絡(luò)增強型BIOS的傳輸機制的應(yīng)用將診斷信息傳輸?shù)剿挠嬎銠C。特殊診斷狀態(tài)如上所述,BIOS最好包括一個特殊診斷狀態(tài),在這個狀態(tài)下,操作系統(tǒng)的加載被禁止,計算機在圖4的操作系統(tǒng)加載414之前,等待有進一步的干預(yù)被啟動。這就便于診斷導致要再引導系統(tǒng)的錯誤。可以用遠程控制臺裝置來迫使計算機進入這個特殊診斷狀態(tài)。這可以通過使用上述的遠程過程調(diào)用來實現(xiàn)。網(wǎng)絡(luò)增強型BIOS也可以這樣配置,使得如果計算機中發(fā)生某種故障條件,就可自動進入特殊診斷狀態(tài)。
遠程工作站200上的遠程控制臺可以結(jié)合網(wǎng)絡(luò)增強型計算機400編程,在網(wǎng)絡(luò)增強型計算機400處于特殊診斷狀態(tài)期間執(zhí)行許多有用的功能,諸如使網(wǎng)絡(luò)增強型計算機400復(fù)位并重新執(zhí)行POST例程;致使數(shù)據(jù)從網(wǎng)絡(luò)增強型計算機400上的硬盤被讀出并通過網(wǎng)絡(luò)300傳輸?shù)竭h程控制臺;使數(shù)據(jù)被從遠程工作站200通過網(wǎng)絡(luò)300傳輸?shù)骄W(wǎng)絡(luò)增強型計算機400并寫入計算機400上的硬盤存儲器160。遠程控制臺可以進一步使BIOS中保留的諸如CMOS設(shè)置、DMI、ESCD和BIOS錯誤日志等數(shù)據(jù)被通過網(wǎng)絡(luò)300傳輸?shù)竭h程工作站200,或從遠程工作站傳輸并在網(wǎng)絡(luò)增強型計算機400的適當存儲器中修改。
BIOS也可以含有一個過程,用于遠程加載BIOS本身一部分,以便能從網(wǎng)絡(luò)300上的另一個計算機—諸如服務(wù)器100-下載BIOS的一部分標準功能,由此降低在計算機上存儲BIOS代碼所需非易失性存儲器的存儲量。如果必須從第二臺計算機100下載BIOS的標準功能的基本部分,諸如BIOS代碼,則計算機400如果不適當連接到網(wǎng)絡(luò)300就不起作用。因為網(wǎng)絡(luò)連接最好是編碼過的,這就確保,如果計算機被偷或移開其網(wǎng)絡(luò)連接,它將不再完成POST的執(zhí)行并由此將使其是不可服務(wù)的。這將是對偷竊的重要防止手段。
此外,遠程控制臺還可以使數(shù)據(jù)被通過網(wǎng)絡(luò)300傳輸并寫入用于存放常規(guī)BIOS和網(wǎng)絡(luò)增強型BIOS的非易失性存儲器125,由此更新某些或部分BIOS,使得第一臺計算機下一次復(fù)位時將使用BIOS的新版本或配置。
應(yīng)當明白,在不偏離本發(fā)明的范圍和精神的情況下,對于本領(lǐng)域的熟練人員來說,顯然可以實現(xiàn)各種其它改進。例如,盡管圖1的標注400中所示的是指臺式計算機的網(wǎng)絡(luò)增強型計算機,它也可以是一個服務(wù)器,如圖1的標注100所示。因此,權(quán)利要求的范圍并不限于本文所作的說明或解釋,相反,權(quán)利要求被視為包含本發(fā)明中所有具有專利新穎性的特征,包括本領(lǐng)域熟練人員認為等價的那些特征。
權(quán)利要求
1.一種用于具有系統(tǒng)管理RAM(SMRAM)和定期對事件計數(shù)器作第一調(diào)整的操作系統(tǒng)的計算機系統(tǒng)的故障恢復(fù)方法,該方法包含的步驟為以固定間隔生成系統(tǒng)管理中斷(SMI);響應(yīng)所述SMI執(zhí)行中斷服務(wù)例程,所述中斷服務(wù)例程對所述事件計數(shù)器作第二調(diào)整;以及響應(yīng)所述事件計數(shù)器達到預(yù)定極限時收集系統(tǒng)狀態(tài)信息。
2.權(quán)利要求1的故障恢復(fù)方法,進一步包含的步驟是,將所述所收集信息傳輸?shù)脚c所述計算機系統(tǒng)通過網(wǎng)絡(luò)相連的遠程工作站。
3.權(quán)利要求2的故障恢復(fù)方法,其中,所收集信息的傳輸,是由配備用于與所述計算機系統(tǒng)通過網(wǎng)絡(luò)相連的工作站通信的協(xié)議的保護模式內(nèi)核進行的。
4.一種能在計算機系統(tǒng)發(fā)生故障時收集數(shù)據(jù)的計算機,所述計算機包含中央處理單元(CPU);與所述CPU相連的隨機存取存儲器,所述隨機存取存儲器存儲計算機系統(tǒng)狀態(tài)數(shù)據(jù);在所述CPU上執(zhí)行的操作系統(tǒng),所述操作系統(tǒng)可被所述CPU上執(zhí)行的用戶級應(yīng)用軟件訪問;與所述CPU相連的系統(tǒng)管理RAM(SMRAM);配置成能檢測所述計算機系統(tǒng)故障的崩潰檢測機構(gòu);以及在所述SMRAM中存儲的數(shù)據(jù)收集例程,所述數(shù)據(jù)收集例程被配置成根據(jù)由所述崩潰檢測機構(gòu)對所述計算機系統(tǒng)故障的檢測而在所述CPU上執(zhí)行,所述數(shù)據(jù)收集例程存儲所述計算機系統(tǒng)狀態(tài)數(shù)據(jù)的至少第一部分。
5.權(quán)利要求4的計算機,其中,所述隨機存取存儲器包含物理地位于視頻控制器上的存儲器,所述計算機系統(tǒng)狀態(tài)數(shù)據(jù)包含視頻控制器寄存器數(shù)據(jù)。
6.一種操作計算機的方法,所述計算機包括中央處理單元(CPU),所述CPU以包括實模式和保護模式的至少兩種模式操作,所述方法包含加載并在實模式下的所述CPU上執(zhí)行第一基本輸入/輸出系統(tǒng)(BIOS),所述第一BIOS有個初始部分和一個后繼部分,所述第一BIOS進行所述計算機的開機系統(tǒng)測試;在所述第一BIOS的所述初始部分的執(zhí)行之后,加載并在保護模式的所述CPU上執(zhí)行第二BIOS;所述第二BIOS和所述第一BIOS的所述后繼部分交替地在所述CPU上被執(zhí)行,使得所述第二BIOS和所述第一BIOS的后繼部分看起來在同時執(zhí)行。
7.權(quán)利要求6的方法,其中,所述計算機進一步提供計時器中斷,所述同時執(zhí)行所述第二BIOS和所述第一BIOS的所述后繼部分的步驟包含(a)在被執(zhí)行的轉(zhuǎn)移程序保存實模式第一BIOS的當前狀態(tài),將CPU的控制傳送給恢復(fù)保護模式第二BIOS的狀態(tài)并將所述CPU轉(zhuǎn)換到保護模式的部分代碼時,將所述計時器中斷引向在實模式下執(zhí)行的轉(zhuǎn)移程序;(b)執(zhí)行所述保護模式第二BIOS的一部分;(c)將所述CPU轉(zhuǎn)換到實模式并保存保護模式第二BIOS的當前狀態(tài);(d)將所述實模式第一BIOS恢復(fù)到所保存的狀態(tài);以及(e)執(zhí)行所述實模式第一BIOS,直到被所述計時器中斷所中斷,由此,所述實模式第一BIOS將執(zhí)行,直到被所述計時器中斷所中斷,此時所述保護模式第二BIOS將被恢復(fù)到所保存的狀態(tài)并被給予CPU控制。
全文摘要
本發(fā)明提供一種在引導計算機操作系統(tǒng)之前或操作系統(tǒng)故障之后通過網(wǎng)絡(luò)與計算機通信的方法和系統(tǒng)。在網(wǎng)絡(luò)增強型BIOS(600)中實現(xiàn)一個多任務(wù)內(nèi)核。NIC設(shè)備驅(qū)動程序中的外部引用被解析為引用由網(wǎng)絡(luò)增強型BIOS提供的服務(wù)??梢杂门c計算機通過網(wǎng)絡(luò)相連的工作站來在加載操作系統(tǒng)之前或操作系統(tǒng)故障之后訪問和設(shè)置計算機的狀態(tài)。多任務(wù)內(nèi)核可以與常規(guī)BIOS(500)同時操作。計算機可進一步配備用于在POST故障或操作系統(tǒng)崩潰時向工作站報警的裝置。
文檔編號G06F11/30GK1439961SQ0310095
公開日2003年9月3日 申請日期1998年3月19日 優(yōu)先權(quán)日1997年3月20日
發(fā)明者Y·拉卡維, I·安德森, A·加斯滕, J·羅奇, M·P·R·伯頓 申請人:鳳凰技術(shù)有限公司