專利名稱:發(fā)現(xiàn)數(shù)據(jù)處理系統(tǒng)內(nèi)的硬件的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及改進(jìn)的數(shù)據(jù)處理系統(tǒng),具體地說,涉及處理數(shù)據(jù)的方法和設(shè)備。再具體些說,本發(fā)明涉及數(shù)據(jù)處理系統(tǒng)內(nèi)的硬件發(fā)現(xiàn)的方法、設(shè)備和計(jì)算機(jī)指令。
背景技術(shù):
在計(jì)算機(jī)通電時(shí),用引導(dǎo)程序來引導(dǎo)或啟動(dòng)執(zhí)行指令的計(jì)算機(jī)。引導(dǎo)程序用來準(zhǔn)備用于操作系統(tǒng)的系統(tǒng)、加載操作系統(tǒng),然后將計(jì)算機(jī)的控制交給操作系統(tǒng)。通常,引導(dǎo)程序是一個(gè)在數(shù)據(jù)處理系統(tǒng)上發(fā)現(xiàn)的引導(dǎo)固件。有時(shí),引導(dǎo)程序可以由服務(wù)器分配在網(wǎng)絡(luò)上。引導(dǎo)程序在找到加載和操作系統(tǒng)前先探測(cè)和初始化系統(tǒng)內(nèi)的硬件。在控制交給操作系統(tǒng)時(shí),引導(dǎo)過程已經(jīng)結(jié)束,但整個(gè)系統(tǒng)初始化還沒有完成。
在探測(cè)和初始化數(shù)據(jù)處理系統(tǒng)時(shí),引導(dǎo)程序通常探測(cè)或詢問數(shù)據(jù)處理系統(tǒng)內(nèi)的總線,以尋找和初始化硬件組件。這些硬件組件例如包括I/O橋、小型計(jì)算機(jī)系統(tǒng)接口(SCSI)適配器、網(wǎng)絡(luò)適配器、監(jiān)視器、盤驅(qū)動(dòng)器、鍵盤或磁帶驅(qū)動(dòng)器。引導(dǎo)程序從各個(gè)硬件組件發(fā)出識(shí)別請(qǐng)求。于是,硬件組件可以返回由組程序用來識(shí)別和初始化硬件組件的諸如標(biāo)識(shí)符之類的信息。也就是說,引導(dǎo)程序詢問總線,以識(shí)別可以連接到總線上的組件。
引導(dǎo)程序識(shí)別了數(shù)據(jù)處理系統(tǒng)內(nèi)的硬件組件后,就加載操作系統(tǒng)并將數(shù)據(jù)處理系統(tǒng)的控制交給操作系統(tǒng)。此時(shí),操作系統(tǒng)運(yùn)行和控制數(shù)據(jù)處理系統(tǒng)的各種情況。
對(duì)于大型數(shù)據(jù)處理系統(tǒng)來說,計(jì)劃或意外的停機(jī)或重新啟動(dòng)數(shù)據(jù)處理系統(tǒng)可能需要大量的時(shí)間。重新啟動(dòng)操作系統(tǒng)所需的時(shí)間取決于總線的數(shù)目和接到這些總線上的組件的數(shù)目而變化。給數(shù)據(jù)處理系統(tǒng)增添附加的組件會(huì)增加重新啟動(dòng)數(shù)據(jù)處理系統(tǒng)所需的時(shí)間,因?yàn)樵谝龑?dǎo)過程期間需要另外的時(shí)間來識(shí)別和初始化這些組件。
重新引導(dǎo)諸如服務(wù)器數(shù)據(jù)處理系統(tǒng)之類的大型數(shù)據(jù)處理系統(tǒng)所需的時(shí)間對(duì)于用戶來說往往是不方便的。因此,有益的是有一種改進(jìn)的重新啟動(dòng)或引導(dǎo)數(shù)據(jù)處理系統(tǒng)(因?yàn)檫@代表了數(shù)據(jù)處理系統(tǒng)不能用來執(zhí)行它的預(yù)期任務(wù)的時(shí)間)的方法、設(shè)備和計(jì)算機(jī)指令。
發(fā)明內(nèi)容本發(fā)明提供了一種發(fā)現(xiàn)具有分層結(jié)構(gòu)的硬件節(jié)點(diǎn)的方法、設(shè)備和計(jì)算機(jī)指令。在加載支持并行線程的操作系統(tǒng)前,初始化數(shù)據(jù)處理系統(tǒng)中的硬件節(jié)點(diǎn)的子集。響應(yīng)加載操作系統(tǒng),為在已知硬件節(jié)點(diǎn)下發(fā)現(xiàn)的每個(gè)硬件節(jié)點(diǎn)創(chuàng)建線程,以形成一組線程。
下面將結(jié)合附圖舉例說明本發(fā)明的優(yōu)選實(shí)施例,在這些附圖中圖1為符合本發(fā)明的優(yōu)選實(shí)施例的可以實(shí)現(xiàn)本發(fā)明的數(shù)據(jù)處理系統(tǒng)的外觀圖;圖2為符合本發(fā)明的優(yōu)選實(shí)施例的可以實(shí)現(xiàn)的數(shù)據(jù)處理系統(tǒng)的方框圖;圖3為例示符合本發(fā)明的優(yōu)選實(shí)施例的在執(zhí)行推遲的硬件發(fā)現(xiàn)中所用的組件的示意圖;圖4為例示符合本發(fā)明的優(yōu)選實(shí)施例的硬件節(jié)點(diǎn)和它們所關(guān)聯(lián)的在多線程環(huán)境內(nèi)通過推遲的硬件發(fā)現(xiàn)過程發(fā)現(xiàn)它們中所使用的線程的示意圖;圖5為符合本發(fā)明的優(yōu)選實(shí)施例的推遲的發(fā)現(xiàn)數(shù)據(jù)處理系統(tǒng)內(nèi)的硬件的過程的流程圖;圖6為符合本發(fā)明的優(yōu)選實(shí)施例的引導(dǎo)過程的流程圖;以及圖7為符合本發(fā)明的優(yōu)選實(shí)施例的在用戶環(huán)境可供使用后識(shí)別硬件節(jié)點(diǎn)的過程的流程圖。
具體實(shí)施方式下面參見附圖,特別是圖1,圖中示出了符合本發(fā)明的優(yōu)選實(shí)施例的可以實(shí)現(xiàn)本發(fā)明的數(shù)據(jù)處理系統(tǒng)。計(jì)算機(jī)100示為包括系統(tǒng)單元102、視頻顯示終端104、鍵盤106、存儲(chǔ)裝置108(可以包括軟盤驅(qū)動(dòng)器及其他類型的永久和活動(dòng)存儲(chǔ)媒體)和鼠標(biāo)110。個(gè)人計(jì)算機(jī)100還可以包括一些輔助輸入設(shè)備,諸如控制桿、觸摸板、觸摸屏、跟蹤球、拾音器之類。計(jì)算機(jī)100可以用任何適當(dāng)?shù)挠?jì)算機(jī)實(shí)現(xiàn),諸如國際商用機(jī)器公司(Armonk,New York)的產(chǎn)品IBM eServer計(jì)算機(jī)或IntelliStation計(jì)算機(jī)之類。雖然示出的是計(jì)算機(jī),但本發(fā)明的其他實(shí)施例可以在其他類型的數(shù)據(jù)處理系統(tǒng)(如網(wǎng)絡(luò)計(jì)算機(jī))中實(shí)現(xiàn)。
參見圖2,圖中示出了符合本發(fā)明的優(yōu)選實(shí)施例的可以實(shí)現(xiàn)為圖1中的數(shù)據(jù)處理系統(tǒng)計(jì)算機(jī)100的數(shù)據(jù)處理系統(tǒng)的方框圖。數(shù)據(jù)處理系統(tǒng)200可以是包括多個(gè)連接到系統(tǒng)總線206上的處理器202和204的對(duì)稱多處理器(SMP)系統(tǒng)。或者,也可以使用單處理器系統(tǒng)。也連接到系統(tǒng)總線206上的有存儲(chǔ)器控制器/高速緩存器208,它提供了與本機(jī)存儲(chǔ)器209的接口。I/O總線橋210連接到系統(tǒng)總線206上,提供與I/O總線212的接口。存儲(chǔ)器控制器/高速緩存器208和I/O總線橋210可以如圖所示集成在一起。
連接到I/O總線212上的外圍組件互連(PCI)總線橋214提供與PCI局部總線216的接口。若干調(diào)制調(diào)解器可以連接到PCI局部總線216上。典型的PCI總線實(shí)現(xiàn)將支持四個(gè)PCI擴(kuò)展槽或附加連接器。可以通過經(jīng)附加連接器連接到PCI局部總線216上的調(diào)制調(diào)解器218和網(wǎng)絡(luò)適配器220提供通信鏈路。
附加的PCI總線橋222和224提供對(duì)附加的PCI局部總線226和228的接口,從其可以支持附加的調(diào)制調(diào)解器或網(wǎng)絡(luò)適配器。這樣,數(shù)據(jù)處理系統(tǒng)200就允許與多個(gè)網(wǎng)絡(luò)計(jì)算機(jī)連接。存儲(chǔ)器映射圖形適配器230和硬盤232也可以如圖所示直接或間接連接到I/O總線212上。
術(shù)領(lǐng)域技術(shù)人員可以理解,圖2中所示的這些硬件可以有所不同。例如,除了或代替所示的硬件,還可以使用諸如光盤驅(qū)動(dòng)器之類的其他外圍設(shè)備。所示的這個(gè)例子并不意味著對(duì)本發(fā)明有體系結(jié)構(gòu)上的限制。
圖2中所示的數(shù)據(jù)處理系統(tǒng)例如可以是運(yùn)行高級(jí)交互式執(zhí)行(AIX)操作系統(tǒng)或LINUX操作系統(tǒng)的國際商用機(jī)器公司(Armonk,New York)的產(chǎn)品,IBM eServer pSeries系統(tǒng)。
本發(fā)明提供了一種減少引導(dǎo)時(shí)間的方法、系統(tǒng)和計(jì)算機(jī)指令。具體地說,本發(fā)明的機(jī)制減少了在加載操作系統(tǒng)前的引導(dǎo)過程期間執(zhí)行設(shè)備發(fā)現(xiàn)所需的時(shí)間。在該初始引導(dǎo)過程期間只是識(shí)別或發(fā)現(xiàn)硬件組件的一個(gè)子集。在這個(gè)子集內(nèi)的硬件設(shè)備(也稱為硬件節(jié)點(diǎn))是在這些例示性的例子中數(shù)據(jù)處理系統(tǒng)工作必需的那些硬件設(shè)備。并不發(fā)現(xiàn)其他已知對(duì)于加載和控制操作系統(tǒng)不是必需的組件。對(duì)于這些節(jié)點(diǎn)的硬件發(fā)現(xiàn)改為推遲到加載操作系統(tǒng)和存在多線程環(huán)境之后。只識(shí)別部分硬件節(jié)點(diǎn)是因?yàn)椴僮飨到y(tǒng)通常在尋找諸如主文件系統(tǒng)之類的其他資源前將執(zhí)行它們自己的發(fā)現(xiàn)整個(gè)硬件系統(tǒng)的過程。結(jié)果,在裝載操作系統(tǒng)前執(zhí)行發(fā)現(xiàn)數(shù)據(jù)處理系統(tǒng)內(nèi)所有硬件節(jié)點(diǎn)就成為多余和不必要的。
優(yōu)選的是,通過將發(fā)現(xiàn)整個(gè)數(shù)據(jù)處理系統(tǒng)推遲到用戶空間環(huán)境可操作之后來獲得附加的引導(dǎo)時(shí)間減少。本發(fā)明的機(jī)制還采納了操作系統(tǒng)加載后的多線程環(huán)境的優(yōu)點(diǎn),以加速引導(dǎo)過程。每當(dāng)定位到硬件節(jié)點(diǎn)時(shí),本發(fā)明的機(jī)制就創(chuàng)建一個(gè)工作拷貝線程,以識(shí)別附加的節(jié)點(diǎn)。
線程是多線程系統(tǒng)內(nèi)的一個(gè)事務(wù)或方法。線程在這些例子中是處理器使用的基本單元,通常包括程序計(jì)數(shù)器、寄存器組和??臻g。多線程系統(tǒng)允許多任務(wù)作業(yè)。多個(gè)執(zhí)行流可在同一個(gè)程序內(nèi)同時(shí)出現(xiàn),每個(gè)線程或流處理不同的事務(wù)或消息。
數(shù)據(jù)處理系統(tǒng)內(nèi)的硬件節(jié)點(diǎn)以分層方式配置。例如,一個(gè)I/O橋,如I/O橋210,具有一些子節(jié)點(diǎn),如PCI橋214、PCI橋222、PCI橋224、圖形適配器230和硬盤232。圖2中的PCI橋214是一個(gè)具有呈現(xiàn)為調(diào)制調(diào)解器218和網(wǎng)絡(luò)適配器220形式的子節(jié)點(diǎn)的節(jié)點(diǎn)。
現(xiàn)在來看圖3,圖中示出了例示符合本發(fā)明的優(yōu)選實(shí)施例的在執(zhí)行推遲的發(fā)現(xiàn)硬件的過程中所用的組件的示意圖。在這個(gè)例子中,操作系統(tǒng)300包括用戶空間302和內(nèi)核(kernel)304。內(nèi)核空間是嚴(yán)格保留給運(yùn)行內(nèi)核的。內(nèi)核是一個(gè)負(fù)責(zé)為用戶空間內(nèi)的各種計(jì)算機(jī)程序提供對(duì)硬件的安全訪問的軟件。在這些例子中,硬件呈現(xiàn)為一些硬件節(jié)點(diǎn)306。這些硬件節(jié)點(diǎn)例如包括諸如網(wǎng)絡(luò)適配器、盤驅(qū)動(dòng)器、SCSI適配器、I/O橋和監(jiān)視器之類的組件。發(fā)現(xiàn)過程308提供了在諸如由操作系統(tǒng)300提供的多線程環(huán)境內(nèi)的推遲的硬件發(fā)現(xiàn)的過程。
發(fā)現(xiàn)附加的硬件節(jié)點(diǎn)一直要到用戶空間302可操作后才進(jìn)行。用戶空間302為諸如應(yīng)用310和控制過程312之類的過程提供空間。控制過程312可以用來控制操作系統(tǒng)300。
在這個(gè)例子中,發(fā)現(xiàn)過程308處在用戶空間302和內(nèi)核304內(nèi)。取決于具體實(shí)現(xiàn)方式,發(fā)現(xiàn)過程308可以完全處在內(nèi)核304內(nèi)或用戶空間302內(nèi)。發(fā)現(xiàn)過程308用來在操作系統(tǒng)300取得對(duì)數(shù)據(jù)處理系統(tǒng)的控制后發(fā)現(xiàn)和初始化硬件。
發(fā)現(xiàn)過程308為在硬件節(jié)點(diǎn)306內(nèi)發(fā)現(xiàn)的每個(gè)節(jié)點(diǎn)創(chuàng)建一個(gè)線程。具體地說,為在該硬件節(jié)點(diǎn)下的層次上連接到總線上的每個(gè)硬件節(jié)點(diǎn)創(chuàng)建線程。這樣,本發(fā)明的機(jī)制允許并行發(fā)現(xiàn)和啟動(dòng)硬件節(jié)點(diǎn)306內(nèi)的硬件。結(jié)果,就減少了發(fā)現(xiàn)和初始化硬件所需的時(shí)間。
在發(fā)現(xiàn)節(jié)點(diǎn)的有限子集后,就暫停這個(gè)發(fā)現(xiàn)的過程,直到用戶空間可用。那時(shí),通過發(fā)現(xiàn)過程308繼續(xù)執(zhí)行發(fā)現(xiàn)過程。可以通過控制過程312啟動(dòng)使用發(fā)現(xiàn)過程308的繼續(xù)發(fā)現(xiàn)過程。
硬件發(fā)現(xiàn)需要附加的時(shí)間,因?yàn)橛行┯布?jié)點(diǎn)可能需要比其他的硬件節(jié)點(diǎn)多一些的時(shí)間來作出響應(yīng)。例如,在引導(dǎo)過程期間盤驅(qū)動(dòng)器在響應(yīng)請(qǐng)求前需要時(shí)間旋轉(zhuǎn)起來。因此,如果不進(jìn)行并行發(fā)現(xiàn),發(fā)現(xiàn)和初始化下一個(gè)硬件節(jié)點(diǎn)必須等到盤驅(qū)動(dòng)器已經(jīng)旋轉(zhuǎn)起來并作出響應(yīng)之后。采用本發(fā)明的機(jī)制,就不需要這個(gè)等待時(shí)間,因?yàn)榱硪粋€(gè)線程可以與等待盤驅(qū)動(dòng)器響應(yīng)的線程分開地執(zhí)行發(fā)現(xiàn)過程。
下面來看圖4,圖中示出了例示符合本發(fā)明的優(yōu)選實(shí)施例的硬件節(jié)點(diǎn)和在多線程環(huán)境內(nèi)通過推遲的硬件發(fā)現(xiàn)過程發(fā)現(xiàn)這些硬件節(jié)點(diǎn)的示意圖。圖4中所示的這些硬件節(jié)點(diǎn)是一些如在圖2的數(shù)據(jù)處理系統(tǒng)200內(nèi)所看到的組件的例子。在這個(gè)例示性的例子中,I/O橋400連接到I/O橋402上。I/O橋402與SCSI控制器404、網(wǎng)絡(luò)適配器406、SCSI適配器408和網(wǎng)絡(luò)適配器410連接。SCSI控制器404連接到盤412和盤414上,而SCSI控制器408與盤416和盤418連接。
在這個(gè)例子中,I/O橋420與I/O橋422和I/O橋424連接。I/O橋422連接到顯示適配器426上。I/O橋424與I/O橋428連接。I/O橋428與SCSI控制器430、網(wǎng)絡(luò)適配器432和SCSI控制器434連接。SCSI控制器430連接到盤436上。SCSI控制器434連接到盤438和盤440上。
盤412和盤414通過SCSI總線連接到SCSI控制器404上。如圖所示,這些組件以分層方式相互連接。I/O橋400是一個(gè)硬件節(jié)點(diǎn),其中I/O橋402為在I/O橋400下的層次上的子節(jié)點(diǎn)。I/O橋400通過諸如I/O總線之類的總線連接到I/O橋402上。該總線例如可以是圖2中的I/O總線212。作為另一個(gè)例子,SCSI控制器404、網(wǎng)絡(luò)適配器406、SCSI控制器408和網(wǎng)絡(luò)適配器410是在I/O橋402下的層次上的I/O橋402的子節(jié)點(diǎn)。這些硬件節(jié)點(diǎn)通過諸如I/O總線或PCI總線之類的總線連接到I/O橋402上。
按照本發(fā)明的例示性實(shí)施例,引導(dǎo)過程并不發(fā)現(xiàn)和初始化所有在圖4中所示的硬件節(jié)點(diǎn)。代之,引導(dǎo)過程只是發(fā)現(xiàn)和初始化這些硬件節(jié)點(diǎn)中的一個(gè)子集。在這個(gè)特定例子中,I/O橋400、I/O橋402、SCSI控制器404、盤412和網(wǎng)絡(luò)適配器406是由引導(dǎo)過程識(shí)別和初始化的組件。此外,為了簡(jiǎn)化必需的硬件說明,可以選擇探測(cè)在I/O橋402下的所有節(jié)點(diǎn)。
在引導(dǎo)過程期間需識(shí)別和初始化的具體組件可以存儲(chǔ)在配置文件或其他數(shù)據(jù)結(jié)構(gòu)內(nèi)。引導(dǎo)過程訪問這個(gè)數(shù)據(jù)結(jié)構(gòu),以確定在加載操作系統(tǒng)前的初始引導(dǎo)過程期間需發(fā)現(xiàn)和初始化哪些組件。在所示的這些例子中,這些組件被選為加載操作系統(tǒng)和控制在這些例示性的例子中的數(shù)據(jù)處理系統(tǒng)所需的一個(gè)最小子集。初始引導(dǎo)的最低要求的例子包括基本文件系統(tǒng)的存儲(chǔ)、操作臺(tái)(圖形適配器、串行口、鍵盤等)和任選的控制和管理網(wǎng)絡(luò)適配器。
按照本發(fā)明的例示性實(shí)施例,在操作系統(tǒng)加載并取得控制后,優(yōu)選的是在它已執(zhí)行對(duì)最小的硬件子集的初始化以及用戶空間環(huán)境可操作后,發(fā)現(xiàn)和初始化其余的硬件節(jié)點(diǎn)。這個(gè)過程可以在如圖3中所示的發(fā)現(xiàn)過程308那樣的發(fā)現(xiàn)過程中實(shí)現(xiàn)。
發(fā)現(xiàn)過程308為每個(gè)節(jié)點(diǎn)創(chuàng)建一個(gè)線程。為硬件節(jié)點(diǎn)創(chuàng)建的線程用來發(fā)現(xiàn)和初始化在硬件組件的層次結(jié)構(gòu)中連接到這個(gè)硬件節(jié)點(diǎn)上的在該硬件節(jié)點(diǎn)下的層次的組件。具體地說,線程向總線查詢處在與線程關(guān)聯(lián)的硬件節(jié)點(diǎn)下的層次上的硬件節(jié)點(diǎn)。這個(gè)線程不執(zhí)行導(dǎo)致后退到上一個(gè)層次的總線查詢。在這些例子中,線程用來探測(cè)連接到給定節(jié)點(diǎn)上的附加硬件的端口和/或可能連接點(diǎn)。
例如,線程442是由發(fā)現(xiàn)過程為橋420產(chǎn)生的。線程442向接到I/O橋420上的總線進(jìn)行查詢,以尋找其他硬件節(jié)點(diǎn)。例如,線程442可以發(fā)現(xiàn)I/O橋422和I/O橋424。響應(yīng)于發(fā)現(xiàn)了這兩個(gè)硬件節(jié)點(diǎn),就創(chuàng)建線程444和線程446。
線程444搜索處在I/O橋422下的層次上的硬件節(jié)點(diǎn)。線程444不查詢將I/O橋422連接到I/O橋420上的總線。線程446搜索處在I/O橋424下的層次上的硬件節(jié)點(diǎn)。線程444發(fā)現(xiàn)顯示適配器426。線程446發(fā)現(xiàn)I/O橋428。
在發(fā)現(xiàn)I/O橋428中,創(chuàng)建線程448。這個(gè)線程發(fā)現(xiàn)SCSI控制器430、網(wǎng)絡(luò)適配器432和SCSI控制器434。在發(fā)現(xiàn)這些硬件節(jié)點(diǎn)中,創(chuàng)建線程(未示出),以進(jìn)一步發(fā)現(xiàn)硬件節(jié)點(diǎn)。具體地說,為SCSI控制器430、網(wǎng)絡(luò)適配器432和SCSI控制器434分別創(chuàng)建線程450、452和454。這些線程繼續(xù)執(zhí)行對(duì)任何可以連接到這些節(jié)點(diǎn)上的任何硬件節(jié)點(diǎn)的發(fā)現(xiàn)過程。
這樣,就可以同時(shí)執(zhí)行并行線程,以便為操作系統(tǒng)發(fā)現(xiàn)和初始化組件。這些線程采納了操作系統(tǒng)所提供的多任務(wù)和多線程環(huán)境的優(yōu)點(diǎn)。因此,發(fā)現(xiàn)硬件節(jié)點(diǎn)就比較快。
結(jié)果,由于在控制交給操作系統(tǒng)前只是發(fā)現(xiàn)部分硬件節(jié)點(diǎn),從而減少了重新啟動(dòng)或引導(dǎo)數(shù)據(jù)處理系統(tǒng)的過程的時(shí)間。這樣減少的組件發(fā)現(xiàn)和初始化減少了引導(dǎo)或重新啟動(dòng)數(shù)據(jù)處理系統(tǒng)的時(shí)間,因?yàn)橐龑?dǎo)和操作系統(tǒng)代碼發(fā)現(xiàn)較少的組件。通過啟動(dòng)用戶空間并隨后完成探測(cè)數(shù)據(jù)處理系統(tǒng)中的其余硬件,進(jìn)一步減少了時(shí)間。
此外,由于采用并行發(fā)現(xiàn)過程,通過在多線程環(huán)境內(nèi)利用多個(gè)線程,與不是并行而是一次發(fā)現(xiàn)一個(gè)硬件節(jié)點(diǎn)的串行發(fā)現(xiàn)過程相比,加快了發(fā)現(xiàn)硬件節(jié)點(diǎn)的過程。
現(xiàn)在來看圖5,圖中示出了符合本發(fā)明的優(yōu)選實(shí)施例的推遲的發(fā)現(xiàn)數(shù)據(jù)處理系統(tǒng)內(nèi)的硬件的過程的流程圖。圖5所示的過程可以在如圖2中所示的數(shù)據(jù)處理系統(tǒng)200那樣的數(shù)據(jù)處理系統(tǒng)內(nèi)實(shí)現(xiàn)。特別是,這些步驟可以用數(shù)據(jù)處理系統(tǒng)的引導(dǎo)代碼和操作系統(tǒng)實(shí)現(xiàn)。
過程開始于運(yùn)行加載操作系統(tǒng)的引導(dǎo)代碼(步驟500)。此后,識(shí)別設(shè)備的一個(gè)初始子集(步驟502)。本發(fā)明的機(jī)制提出采用只識(shí)別設(shè)備的子集。此后,識(shí)別根文件系統(tǒng)(步驟504)。啟動(dòng)用戶控制過程(步驟506)。步驟504和506是在引導(dǎo)或啟動(dòng)數(shù)據(jù)處理系統(tǒng)期間所采取的通常步驟。步驟506提供了管理和控制操作系統(tǒng)以及啟動(dòng)故障轉(zhuǎn)移(fail over)協(xié)議的能力。
接著,啟動(dòng)發(fā)現(xiàn)其余硬件(步驟508)。這個(gè)步驟也是本發(fā)明的機(jī)制所引入的新的構(gòu)思,在空間使用可操作后進(jìn)行其余硬件發(fā)現(xiàn)。這個(gè)機(jī)制可以使用新的與現(xiàn)有的熱插拔(hot plug)或者說即插即用技術(shù)類似的功能。即插即用是數(shù)據(jù)處理系統(tǒng)的可以給數(shù)據(jù)處理系統(tǒng)添加諸如外圍設(shè)備之類的新設(shè)備而不需要重新啟動(dòng)計(jì)算機(jī)的能力。即插即用也稱為PnP和熱交換(hot swapping)。
此后,確定是否已發(fā)現(xiàn)所有的應(yīng)用所需硬件(步驟510)。如果所有的應(yīng)用所需硬件都已發(fā)現(xiàn),就啟動(dòng)用戶應(yīng)用(步驟512),然后過程終止。
再來看步驟510,如果沒有發(fā)現(xiàn)所有的應(yīng)用所需硬件,就產(chǎn)生出錯(cuò)(步驟514),隨后過程終止。步驟510、512、514是當(dāng)前在操作系統(tǒng)環(huán)境內(nèi)發(fā)現(xiàn)的步驟。
現(xiàn)在參見圖6,圖中示出了符合本發(fā)明的優(yōu)選實(shí)施例的引導(dǎo)過程的流程圖。圖6所示的引導(dǎo)過程實(shí)現(xiàn)為作為引導(dǎo)程序的用來發(fā)現(xiàn)硬件、加載操作系統(tǒng)和數(shù)據(jù)處理系統(tǒng)和將數(shù)據(jù)處理系統(tǒng)的控制交給操作系統(tǒng)的部分。圖6為對(duì)以上圖5中的步驟500的更為詳細(xì)的說明。
過程開始于識(shí)別硬件節(jié)點(diǎn)的一個(gè)初始集合(步驟600)。這個(gè)初始集合中的硬件節(jié)點(diǎn)是數(shù)據(jù)處理系統(tǒng)內(nèi)的硬件節(jié)點(diǎn)的一個(gè)子集。在這些例示性的例子中,這個(gè)集合內(nèi)的硬件節(jié)點(diǎn)在一個(gè)諸如基于這個(gè)硬件集合的配置文件那樣的數(shù)據(jù)結(jié)構(gòu)內(nèi)識(shí)別。
發(fā)現(xiàn)和初始化這個(gè)初始集合內(nèi)的各個(gè)硬件節(jié)點(diǎn)(步驟602)。然后,加載操作系統(tǒng)(步驟604),再將控制交給操作系統(tǒng)(步驟606),然后過程終止。
現(xiàn)在來看圖7,圖中示出了符合本發(fā)明的優(yōu)選實(shí)施例的在用戶環(huán)境可供使用后識(shí)別硬件節(jié)點(diǎn)的過程的流程圖。圖7所示的這個(gè)過程可以在如圖3中所示的發(fā)現(xiàn)過程308那樣的發(fā)現(xiàn)過程中實(shí)現(xiàn)。具體地說,這個(gè)圖中所示的過程是一個(gè)后面緊接為硬件節(jié)點(diǎn)創(chuàng)建的線程的過程的例子。
過程開始于完成對(duì)當(dāng)前節(jié)點(diǎn)的初始化(步驟700)。此后,探測(cè)第一個(gè)可能的連接(步驟702)。確定在第一個(gè)連接上是否發(fā)現(xiàn)一個(gè)硬件節(jié)點(diǎn)(步驟704)。如果找到一個(gè)硬件節(jié)點(diǎn),就將資源分配給這個(gè)硬件節(jié)點(diǎn),并對(duì)該硬件節(jié)點(diǎn)建立尋址(步驟706)。
然后,為所找到的硬件節(jié)點(diǎn)創(chuàng)建一個(gè)新的線程(步驟708)。然后,確定是否存在其他的可能連接(步驟710)。如果存在其他的可能連接,過程就探測(cè)下一個(gè)連接(步驟712),然后過程進(jìn)至如上面所說明的步驟704。
再來看步驟710,如果不存在其他的可能連接,過程就終止?;氐讲襟E704,如果沒有找到硬件節(jié)點(diǎn),過程就進(jìn)至如上面所說明的步驟710。
因此,本發(fā)明提供了一種改進(jìn)的發(fā)現(xiàn)數(shù)據(jù)處理系統(tǒng)內(nèi)的硬件節(jié)點(diǎn)的方法、設(shè)備和計(jì)算機(jī)指令。本發(fā)明的機(jī)制是在操作系統(tǒng)加載前的初始引導(dǎo)過程期間只尋找數(shù)據(jù)處理系統(tǒng)內(nèi)硬件節(jié)點(diǎn)的一個(gè)子集。在這些例示性的例子中引導(dǎo)過程和初始操作系統(tǒng)發(fā)現(xiàn)過程只發(fā)現(xiàn)使操作系統(tǒng)執(zhí)行所需的那些硬件。當(dāng)然,取決于實(shí)現(xiàn)情況,在初始引導(dǎo)過程期間可以發(fā)現(xiàn)比運(yùn)行操作系統(tǒng)起碼的組件多一些的組件。
發(fā)現(xiàn)其余硬件節(jié)點(diǎn)被推遲到操作系統(tǒng)已經(jīng)加載以及存在多線程環(huán)境和基本操作系統(tǒng)得到初始化之后。那時(shí),就使用用多個(gè)線程并行發(fā)現(xiàn)硬件節(jié)點(diǎn)的發(fā)現(xiàn)過程。這種并行發(fā)現(xiàn)減少了發(fā)現(xiàn)和初始化數(shù)據(jù)處理系統(tǒng)內(nèi)的硬件節(jié)點(diǎn)所需的時(shí)間。
此外,由于在初始引導(dǎo)過程期間只發(fā)現(xiàn)硬件節(jié)點(diǎn)的子集,因此對(duì)于許多新節(jié)點(diǎn)來說避免了重復(fù)發(fā)現(xiàn)硬件節(jié)點(diǎn)。這樣,本發(fā)明的機(jī)制減少了引導(dǎo)數(shù)據(jù)處理系統(tǒng)所需的時(shí)間。
用來在操作系統(tǒng)加載后發(fā)現(xiàn)和初始化組件的機(jī)制可以用不同的方式實(shí)現(xiàn)。例如,可以使用通過“熱插拔”硬件來增添硬件的機(jī)制。此外,有些總線可以容許通過基本輸入輸出系統(tǒng)回叫的幫助重新發(fā)現(xiàn)資源??梢允褂玫钠渌麢C(jī)制包括通過識(shí)別和標(biāo)記進(jìn)行設(shè)備命名,而不是按分配次序探測(cè)設(shè)備。通常存在這種命名功能,以支持具有高度可插拔特性的總線。在這些例子中,隨著新節(jié)點(diǎn)的發(fā)現(xiàn)動(dòng)態(tài)創(chuàng)建線程。在發(fā)現(xiàn)有節(jié)點(diǎn)連接到總線上時(shí)就創(chuàng)建這些線程。
本發(fā)明的機(jī)制還便于在群集環(huán)境內(nèi)與相對(duì)于針對(duì)丟失主機(jī)需要超時(shí)而言較快地進(jìn)行明確業(yè)務(wù)切換。這是因?yàn)槲覀兲綔y(cè)在初始集合內(nèi)的所需切換資源,而等到切換后再執(zhí)行探測(cè)應(yīng)用所需的其余資源。應(yīng)該指出的是,雖然是在完整功能的數(shù)據(jù)處理系統(tǒng)的背景下對(duì)本發(fā)明進(jìn)行說明的,但術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明的這些過程能以具有一系列指令的計(jì)算機(jī)可讀媒體的形式和各種形式分發(fā),而且無論實(shí)際用來執(zhí)行分發(fā)的承載信號(hào)的媒體具體是什么類型,本發(fā)明同樣適用。計(jì)算機(jī)可讀媒體的例子包括諸如軟盤、硬盤驅(qū)動(dòng)器、RAM、CD ROM和DVD ROM之類的可記錄型媒體和諸如數(shù)字和模擬通信鏈路、有線通信鏈路或使用例如射頻和光波傳輸?shù)膫鬏斝问降臒o線通信鏈路之類的傳輸型媒體。計(jì)算機(jī)可讀媒體可以采取編碼格式的形式,在數(shù)據(jù)處理系統(tǒng)內(nèi)予以解碼供實(shí)際使用。
所給出的對(duì)本發(fā)明的說明只是例示性的和說明性的,并不是窮舉性的或者要將本發(fā)明限制在所揭示的形式。對(duì)于該技術(shù)領(lǐng)域:
的技術(shù)人員來說,許多修改和變動(dòng)都是顯而易見的。所以選擇和說明這實(shí)施例是為了可以很好地闡明本發(fā)明的原理和實(shí)際應(yīng)用,并使該技術(shù)領(lǐng)域:
內(nèi)的其他一般技術(shù)人員能理解本發(fā)明的具有各種為適合具體的預(yù)期用途所作的修改的各種實(shí)施方式。
權(quán)利要求
1.在數(shù)據(jù)處理系統(tǒng)中發(fā)現(xiàn)具有分層結(jié)構(gòu)的硬件節(jié)點(diǎn)的方法,所述方法包括在加載支持并行線程的操作系統(tǒng)前,初始化數(shù)據(jù)處理系統(tǒng)中的硬件節(jié)點(diǎn)的子集,其中所述子集含有已知的硬件節(jié)點(diǎn);以及響應(yīng)加載操作系統(tǒng),為在已知硬件節(jié)點(diǎn)下發(fā)現(xiàn)的每個(gè)硬件節(jié)點(diǎn)創(chuàng)建線程,以形成一組線程,其中所述一組線程中的每個(gè)線程搜索在已知硬件節(jié)點(diǎn)下的層次上的未發(fā)現(xiàn)的硬件節(jié)點(diǎn)。
2.權(quán)利要求
1的方法,其中硬件節(jié)點(diǎn)的子集在文件中識(shí)別。
3.權(quán)利要求
1的方法,其中硬件節(jié)點(diǎn)的子集由其與I/O橋的連接識(shí)別。
4.權(quán)利要求
1的方法,其中硬件節(jié)點(diǎn)包括至少下述之一輸入/輸出橋、小型計(jì)算機(jī)系統(tǒng)接口適配器、硬盤驅(qū)動(dòng)器、網(wǎng)絡(luò)適配器、磁帶驅(qū)動(dòng)器、鍵盤和監(jiān)視器。
5.權(quán)利要求
1的方法,其中所述創(chuàng)建步驟處在操作系統(tǒng)的內(nèi)核中。
6.權(quán)利要求
1的方法,其中所述創(chuàng)建步驟處在操作系統(tǒng)的用戶空間中。
7.權(quán)利要求
1的方法,其中所述初始化步驟處在引導(dǎo)過程中。
8.權(quán)利要求
1的方法,其中所述創(chuàng)建步驟在用戶空間環(huán)境在操作系統(tǒng)中可操作之后發(fā)生。
9.發(fā)現(xiàn)具有分層結(jié)構(gòu)的硬件節(jié)點(diǎn)的數(shù)據(jù)處理系統(tǒng),所述數(shù)據(jù)處理系統(tǒng)包括在加載支持并行線程的操作系統(tǒng)前,初始化數(shù)據(jù)處理系統(tǒng)中的硬件節(jié)點(diǎn)的子集的初始化裝置,其中所述子集含有已知的硬件節(jié)點(diǎn);以及響應(yīng)加載操作系統(tǒng),為在已知硬件節(jié)點(diǎn)下發(fā)現(xiàn)的每個(gè)硬件節(jié)點(diǎn)創(chuàng)建線程以形成一組線程的創(chuàng)建裝置,其中所述一組線程中的每個(gè)線程搜索在已知硬件節(jié)點(diǎn)下的層次上的未發(fā)現(xiàn)的硬件節(jié)點(diǎn)。
10.權(quán)利要求
9的數(shù)據(jù)處理系統(tǒng),其中硬件節(jié)點(diǎn)的子集在文件中識(shí)別。
11.權(quán)利要求
9的數(shù)據(jù)處理系統(tǒng),其中所述硬件節(jié)點(diǎn)包括至少下述之一輸入/輸出橋、小型計(jì)算機(jī)系統(tǒng)接口適配器、硬盤驅(qū)動(dòng)器、網(wǎng)絡(luò)適配器、磁帶驅(qū)動(dòng)器、鍵盤和監(jiān)視器。
12.在數(shù)據(jù)處理系統(tǒng)中發(fā)現(xiàn)具有分層結(jié)構(gòu)的硬件節(jié)點(diǎn)的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序包括當(dāng)計(jì)算機(jī)程序在數(shù)據(jù)處理系統(tǒng)上執(zhí)行時(shí)實(shí)現(xiàn)權(quán)利要求
1至8任一項(xiàng)的方法的所有步驟的指令。
專利摘要
本發(fā)明提供了一種發(fā)現(xiàn)具有分層結(jié)構(gòu)的硬件節(jié)點(diǎn)的方法、設(shè)備和計(jì)算機(jī)指令。在加載支持并行線程的操作系統(tǒng)前初始化數(shù)據(jù)處理系統(tǒng)中的硬件節(jié)點(diǎn)的一個(gè)子集。響應(yīng)加載操作系統(tǒng),創(chuàng)建在已知硬件節(jié)點(diǎn)下發(fā)現(xiàn)的每個(gè)硬件節(jié)點(diǎn)的線程,以形成一組線程。
文檔編號(hào)G06F9/445GK1993676SQ20058002608
公開日2007年7月4日 申請(qǐng)日期2005年7月20日
發(fā)明者安頓·布蘭查爾德, 米爾頓·D.·米勒二世, 托德·A.·溫頓 申請(qǐng)人:國際商業(yè)機(jī)器公司導(dǎo)出引文BiBTeX, EndNote, RefMan