发现数据处理系统内的硬件的方法和设备的制作方法

文档序号:84169阅读:678来源:国知局
专利名称:发现数据处理系统内的硬件的方法和设备的制作方法
技术领域
本发明涉及改进的数据处理系统,具体地说,涉及处理数据的方法和设备。再具体些说,本发明涉及数据处理系统内的硬件发现的方法、设备和计算机指令。
背景技术
在计算机通电时,用引导程序来引导或启动执行指令的计算机。引导程序用来准备用于操作系统的系统、加载操作系统,然后将计算机的控制交给操作系统。通常,引导程序是一个在数据处理系统上发现的引导固件。有时,引导程序可以由服务器分配在网络上。引导程序在找到加载和操作系统前先探测和初始化系统内的硬件。在控制交给操作系统时,引导过程已经结束,但整个系统初始化还没有完成。
在探测和初始化数据处理系统时,引导程序通常探测或询问数据处理系统内的总线,以寻找和初始化硬件组件。这些硬件组件例如包括I/O桥、小型计算机系统接口(SCSI)适配器、网络适配器、监视器、盘驱动器、键盘或磁带驱动器。引导程序从各个硬件组件发出识别请求。于是,硬件组件可以返回由组程序用来识别和初始化硬件组件的诸如标识符之类的信息。也就是说,引导程序询问总线,以识别可以连接到总线上的组件。
引导程序识别了数据处理系统内的硬件组件后,就加载操作系统并将数据处理系统的控制交给操作系统。此时,操作系统运行和控制数据处理系统的各种情况。
对于大型数据处理系统来说,计划或意外的停机或重新启动数据处理系统可能需要大量的时间。重新启动操作系统所需的时间取决于总线的数目和接到这些总线上的组件的数目而变化。给数据处理系统增添附加的组件会增加重新启动数据处理系统所需的时间,因为在引导过程期间需要另外的时间来识别和初始化这些组件。
重新引导诸如服务器数据处理系统之类的大型数据处理系统所需的时间对于用户来说往往是不方便的。因此,有益的是有一种改进的重新启动或引导数据处理系统(因为这代表了数据处理系统不能用来执行它的预期任务的时间)的方法、设备和计算机指令。

发明内容本发明提供了一种发现具有分层结构的硬件节点的方法、设备和计算机指令。在加载支持并行线程的操作系统前,初始化数据处理系统中的硬件节点的子集。响应加载操作系统,为在已知硬件节点下发现的每个硬件节点创建线程,以形成一组线程。
下面将结合附图举例说明本发明的优选实施例,在这些附图中图1为符合本发明的优选实施例的可以实现本发明的数据处理系统的外观图;图2为符合本发明的优选实施例的可以实现的数据处理系统的方框图;图3为例示符合本发明的优选实施例的在执行推迟的硬件发现中所用的组件的示意图;图4为例示符合本发明的优选实施例的硬件节点和它们所关联的在多线程环境内通过推迟的硬件发现过程发现它们中所使用的线程的示意图;图5为符合本发明的优选实施例的推迟的发现数据处理系统内的硬件的过程的流程图;图6为符合本发明的优选实施例的引导过程的流程图;以及图7为符合本发明的优选实施例的在用户环境可供使用后识别硬件节点的过程的流程图。
具体实施方式下面参见附图,特别是图1,图中示出了符合本发明的优选实施例的可以实现本发明的数据处理系统。计算机100示为包括系统单元102、视频显示终端104、键盘106、存储装置108(可以包括软盘驱动器及其他类型的永久和活动存储媒体)和鼠标110。个人计算机100还可以包括一些辅助输入设备,诸如控制杆、触摸板、触摸屏、跟踪球、拾音器之类。计算机100可以用任何适当的计算机实现,诸如国际商用机器公司(Armonk,New York)的产品IBM eServer计算机或IntelliStation计算机之类。虽然示出的是计算机,但本发明的其他实施例可以在其他类型的数据处理系统(如网络计算机)中实现。
参见图2,图中示出了符合本发明的优选实施例的可以实现为图1中的数据处理系统计算机100的数据处理系统的方框图。数据处理系统200可以是包括多个连接到系统总线206上的处理器202和204的对称多处理器(SMP)系统。或者,也可以使用单处理器系统。也连接到系统总线206上的有存储器控制器/高速缓存器208,它提供了与本机存储器209的接口。I/O总线桥210连接到系统总线206上,提供与I/O总线212的接口。存储器控制器/高速缓存器208和I/O总线桥210可以如图所示集成在一起。
连接到I/O总线212上的外围组件互连(PCI)总线桥214提供与PCI局部总线216的接口。若干调制调解器可以连接到PCI局部总线216上。典型的PCI总线实现将支持四个PCI扩展槽或附加连接器。可以通过经附加连接器连接到PCI局部总线216上的调制调解器218和网络适配器220提供通信链路。
附加的PCI总线桥222和224提供对附加的PCI局部总线226和228的接口,从其可以支持附加的调制调解器或网络适配器。这样,数据处理系统200就允许与多个网络计算机连接。存储器映射图形适配器230和硬盘232也可以如图所示直接或间接连接到I/O总线212上。
术领域技术人员可以理解,图2中所示的这些硬件可以有所不同。例如,除了或代替所示的硬件,还可以使用诸如光盘驱动器之类的其他外围设备。所示的这个例子并不意味着对本发明有体系结构上的限制。
图2中所示的数据处理系统例如可以是运行高级交互式执行(AIX)操作系统或LINUX操作系统的国际商用机器公司(Armonk,New York)的产品,IBM eServer pSeries系统。
本发明提供了一种减少引导时间的方法、系统和计算机指令。具体地说,本发明的机制减少了在加载操作系统前的引导过程期间执行设备发现所需的时间。在该初始引导过程期间只是识别或发现硬件组件的一个子集。在这个子集内的硬件设备(也称为硬件节点)是在这些例示性的例子中数据处理系统工作必需的那些硬件设备。并不发现其他已知对于加载和控制操作系统不是必需的组件。对于这些节点的硬件发现改为推迟到加载操作系统和存在多线程环境之后。只识别部分硬件节点是因为操作系统通常在寻找诸如主文件系统之类的其他资源前将执行它们自己的发现整个硬件系统的过程。结果,在装载操作系统前执行发现数据处理系统内所有硬件节点就成为多余和不必要的。
优选的是,通过将发现整个数据处理系统推迟到用户空间环境可操作之后来获得附加的引导时间减少。本发明的机制还采纳了操作系统加载后的多线程环境的优点,以加速引导过程。每当定位到硬件节点时,本发明的机制就创建一个工作拷贝线程,以识别附加的节点。
线程是多线程系统内的一个事务或方法。线程在这些例子中是处理器使用的基本单元,通常包括程序计数器、寄存器组和栈空间。多线程系统允许多任务作业。多个执行流可在同一个程序内同时出现,每个线程或流处理不同的事务或消息。
数据处理系统内的硬件节点以分层方式配置。例如,一个I/O桥,如I/O桥210,具有一些子节点,如PCI桥214、PCI桥222、PCI桥224、图形适配器230和硬盘232。图2中的PCI桥214是一个具有呈现为调制调解器218和网络适配器220形式的子节点的节点。
现在来看图3,图中示出了例示符合本发明的优选实施例的在执行推迟的发现硬件的过程中所用的组件的示意图。在这个例子中,操作系统300包括用户空间302和内核(kernel)304。内核空间是严格保留给运行内核的。内核是一个负责为用户空间内的各种计算机程序提供对硬件的安全访问的软件。在这些例子中,硬件呈现为一些硬件节点306。这些硬件节点例如包括诸如网络适配器、盘驱动器、SCSI适配器、I/O桥和监视器之类的组件。发现过程308提供了在诸如由操作系统300提供的多线程环境内的推迟的硬件发现的过程。
发现附加的硬件节点一直要到用户空间302可操作后才进行。用户空间302为诸如应用310和控制过程312之类的过程提供空间。控制过程312可以用来控制操作系统300。
在这个例子中,发现过程308处在用户空间302和内核304内。取决于具体实现方式,发现过程308可以完全处在内核304内或用户空间302内。发现过程308用来在操作系统300取得对数据处理系统的控制后发现和初始化硬件。
发现过程308为在硬件节点306内发现的每个节点创建一个线程。具体地说,为在该硬件节点下的层次上连接到总线上的每个硬件节点创建线程。这样,本发明的机制允许并行发现和启动硬件节点306内的硬件。结果,就减少了发现和初始化硬件所需的时间。
在发现节点的有限子集后,就暂停这个发现的过程,直到用户空间可用。那时,通过发现过程308继续执行发现过程。可以通过控制过程312启动使用发现过程308的继续发现过程。
硬件发现需要附加的时间,因为有些硬件节点可能需要比其他的硬件节点多一些的时间来作出响应。例如,在引导过程期间盘驱动器在响应请求前需要时间旋转起来。因此,如果不进行并行发现,发现和初始化下一个硬件节点必须等到盘驱动器已经旋转起来并作出响应之后。采用本发明的机制,就不需要这个等待时间,因为另一个线程可以与等待盘驱动器响应的线程分开地执行发现过程。
下面来看图4,图中示出了例示符合本发明的优选实施例的硬件节点和在多线程环境内通过推迟的硬件发现过程发现这些硬件节点的示意图。图4中所示的这些硬件节点是一些如在图2的数据处理系统200内所看到的组件的例子。在这个例示性的例子中,I/O桥400连接到I/O桥402上。I/O桥402与SCSI控制器404、网络适配器406、SCSI适配器408和网络适配器410连接。SCSI控制器404连接到盘412和盘414上,而SCSI控制器408与盘416和盘418连接。
在这个例子中,I/O桥420与I/O桥422和I/O桥424连接。I/O桥422连接到显示适配器426上。I/O桥424与I/O桥428连接。I/O桥428与SCSI控制器430、网络适配器432和SCSI控制器434连接。SCSI控制器430连接到盘436上。SCSI控制器434连接到盘438和盘440上。
盘412和盘414通过SCSI总线连接到SCSI控制器404上。如图所示,这些组件以分层方式相互连接。I/O桥400是一个硬件节点,其中I/O桥402为在I/O桥400下的层次上的子节点。I/O桥400通过诸如I/O总线之类的总线连接到I/O桥402上。该总线例如可以是图2中的I/O总线212。作为另一个例子,SCSI控制器404、网络适配器406、SCSI控制器408和网络适配器410是在I/O桥402下的层次上的I/O桥402的子节点。这些硬件节点通过诸如I/O总线或PCI总线之类的总线连接到I/O桥402上。
按照本发明的例示性实施例,引导过程并不发现和初始化所有在图4中所示的硬件节点。代之,引导过程只是发现和初始化这些硬件节点中的一个子集。在这个特定例子中,I/O桥400、I/O桥402、SCSI控制器404、盘412和网络适配器406是由引导过程识别和初始化的组件。此外,为了简化必需的硬件说明,可以选择探测在I/O桥402下的所有节点。
在引导过程期间需识别和初始化的具体组件可以存储在配置文件或其他数据结构内。引导过程访问这个数据结构,以确定在加载操作系统前的初始引导过程期间需发现和初始化哪些组件。在所示的这些例子中,这些组件被选为加载操作系统和控制在这些例示性的例子中的数据处理系统所需的一个最小子集。初始引导的最低要求的例子包括基本文件系统的存储、操作台(图形适配器、串行口、键盘等)和任选的控制和管理网络适配器。
按照本发明的例示性实施例,在操作系统加载并取得控制后,优选的是在它已执行对最小的硬件子集的初始化以及用户空间环境可操作后,发现和初始化其余的硬件节点。这个过程可以在如图3中所示的发现过程308那样的发现过程中实现。
发现过程308为每个节点创建一个线程。为硬件节点创建的线程用来发现和初始化在硬件组件的层次结构中连接到这个硬件节点上的在该硬件节点下的层次的组件。具体地说,线程向总线查询处在与线程关联的硬件节点下的层次上的硬件节点。这个线程不执行导致后退到上一个层次的总线查询。在这些例子中,线程用来探测连接到给定节点上的附加硬件的端口和/或可能连接点。
例如,线程442是由发现过程为桥420产生的。线程442向接到I/O桥420上的总线进行查询,以寻找其他硬件节点。例如,线程442可以发现I/O桥422和I/O桥424。响应于发现了这两个硬件节点,就创建线程444和线程446。
线程444搜索处在I/O桥422下的层次上的硬件节点。线程444不查询将I/O桥422连接到I/O桥420上的总线。线程446搜索处在I/O桥424下的层次上的硬件节点。线程444发现显示适配器426。线程446发现I/O桥428。
在发现I/O桥428中,创建线程448。这个线程发现SCSI控制器430、网络适配器432和SCSI控制器434。在发现这些硬件节点中,创建线程(未示出),以进一步发现硬件节点。具体地说,为SCSI控制器430、网络适配器432和SCSI控制器434分别创建线程450、452和454。这些线程继续执行对任何可以连接到这些节点上的任何硬件节点的发现过程。
这样,就可以同时执行并行线程,以便为操作系统发现和初始化组件。这些线程采纳了操作系统所提供的多任务和多线程环境的优点。因此,发现硬件节点就比较快。
结果,由于在控制交给操作系统前只是发现部分硬件节点,从而减少了重新启动或引导数据处理系统的过程的时间。这样减少的组件发现和初始化减少了引导或重新启动数据处理系统的时间,因为引导和操作系统代码发现较少的组件。通过启动用户空间并随后完成探测数据处理系统中的其余硬件,进一步减少了时间。
此外,由于采用并行发现过程,通过在多线程环境内利用多个线程,与不是并行而是一次发现一个硬件节点的串行发现过程相比,加快了发现硬件节点的过程。
现在来看图5,图中示出了符合本发明的优选实施例的推迟的发现数据处理系统内的硬件的过程的流程图。图5所示的过程可以在如图2中所示的数据处理系统200那样的数据处理系统内实现。特别是,这些步骤可以用数据处理系统的引导代码和操作系统实现。
过程开始于运行加载操作系统的引导代码(步骤500)。此后,识别设备的一个初始子集(步骤502)。本发明的机制提出采用只识别设备的子集。此后,识别根文件系统(步骤504)。启动用户控制过程(步骤506)。步骤504和506是在引导或启动数据处理系统期间所采取的通常步骤。步骤506提供了管理和控制操作系统以及启动故障转移(fail over)协议的能力。
接着,启动发现其余硬件(步骤508)。这个步骤也是本发明的机制所引入的新的构思,在空间使用可操作后进行其余硬件发现。这个机制可以使用新的与现有的热插拔(hot plug)或者说即插即用技术类似的功能。即插即用是数据处理系统的可以给数据处理系统添加诸如外围设备之类的新设备而不需要重新启动计算机的能力。即插即用也称为PnP和热交换(hot swapping)。
此后,确定是否已发现所有的应用所需硬件(步骤510)。如果所有的应用所需硬件都已发现,就启动用户应用(步骤512),然后过程终止。
再来看步骤510,如果没有发现所有的应用所需硬件,就产生出错(步骤514),随后过程终止。步骤510、512、514是当前在操作系统环境内发现的步骤。
现在参见图6,图中示出了符合本发明的优选实施例的引导过程的流程图。图6所示的引导过程实现为作为引导程序的用来发现硬件、加载操作系统和数据处理系统和将数据处理系统的控制交给操作系统的部分。图6为对以上图5中的步骤500的更为详细的说明。
过程开始于识别硬件节点的一个初始集合(步骤600)。这个初始集合中的硬件节点是数据处理系统内的硬件节点的一个子集。在这些例示性的例子中,这个集合内的硬件节点在一个诸如基于这个硬件集合的配置文件那样的数据结构内识别。
发现和初始化这个初始集合内的各个硬件节点(步骤602)。然后,加载操作系统(步骤604),再将控制交给操作系统(步骤606),然后过程终止。
现在来看图7,图中示出了符合本发明的优选实施例的在用户环境可供使用后识别硬件节点的过程的流程图。图7所示的这个过程可以在如图3中所示的发现过程308那样的发现过程中实现。具体地说,这个图中所示的过程是一个后面紧接为硬件节点创建的线程的过程的例子。
过程开始于完成对当前节点的初始化(步骤700)。此后,探测第一个可能的连接(步骤702)。确定在第一个连接上是否发现一个硬件节点(步骤704)。如果找到一个硬件节点,就将资源分配给这个硬件节点,并对该硬件节点建立寻址(步骤706)。
然后,为所找到的硬件节点创建一个新的线程(步骤708)。然后,确定是否存在其他的可能连接(步骤710)。如果存在其他的可能连接,过程就探测下一个连接(步骤712),然后过程进至如上面所说明的步骤704。
再来看步骤710,如果不存在其他的可能连接,过程就终止。回到步骤704,如果没有找到硬件节点,过程就进至如上面所说明的步骤710。
因此,本发明提供了一种改进的发现数据处理系统内的硬件节点的方法、设备和计算机指令。本发明的机制是在操作系统加载前的初始引导过程期间只寻找数据处理系统内硬件节点的一个子集。在这些例示性的例子中引导过程和初始操作系统发现过程只发现使操作系统执行所需的那些硬件。当然,取决于实现情况,在初始引导过程期间可以发现比运行操作系统起码的组件多一些的组件。
发现其余硬件节点被推迟到操作系统已经加载以及存在多线程环境和基本操作系统得到初始化之后。那时,就使用用多个线程并行发现硬件节点的发现过程。这种并行发现减少了发现和初始化数据处理系统内的硬件节点所需的时间。
此外,由于在初始引导过程期间只发现硬件节点的子集,因此对于许多新节点来说避免了重复发现硬件节点。这样,本发明的机制减少了引导数据处理系统所需的时间。
用来在操作系统加载后发现和初始化组件的机制可以用不同的方式实现。例如,可以使用通过“热插拔”硬件来增添硬件的机制。此外,有些总线可以容许通过基本输入输出系统回叫的帮助重新发现资源。可以使用的其他机制包括通过识别和标记进行设备命名,而不是按分配次序探测设备。通常存在这种命名功能,以支持具有高度可插拔特性的总线。在这些例子中,随着新节点的发现动态创建线程。在发现有节点连接到总线上时就创建这些线程。
本发明的机制还便于在群集环境内与相对于针对丢失主机需要超时而言较快地进行明确业务切换。这是因为我们探测在初始集合内的所需切换资源,而等到切换后再执行探测应用所需的其余资源。应该指出的是,虽然是在完整功能的数据处理系统的背景下对本发明进行说明的,但术领域技术人员可以理解,本发明的这些过程能以具有一系列指令的计算机可读媒体的形式和各种形式分发,而且无论实际用来执行分发的承载信号的媒体具体是什么类型,本发明同样适用。计算机可读媒体的例子包括诸如软盘、硬盘驱动器、RAM、CD ROM和DVD ROM之类的可记录型媒体和诸如数字和模拟通信链路、有线通信链路或使用例如射频和光波传输的传输形式的无线通信链路之类的传输型媒体。计算机可读媒体可以采取编码格式的形式,在数据处理系统内予以解码供实际使用。
所给出的对本发明的说明只是例示性的和说明性的,并不是穷举性的或者要将本发明限制在所揭示的形式。对于该技术领域
的技术人员来说,许多修改和变动都是显而易见的。所以选择和说明这实施例是为了可以很好地阐明本发明的原理和实际应用,并使该技术领域
内的其他一般技术人员能理解本发明的具有各种为适合具体的预期用途所作的修改的各种实施方式。
权利要求
1.在数据处理系统中发现具有分层结构的硬件节点的方法,所述方法包括在加载支持并行线程的操作系统前,初始化数据处理系统中的硬件节点的子集,其中所述子集含有已知的硬件节点;以及响应加载操作系统,为在已知硬件节点下发现的每个硬件节点创建线程,以形成一组线程,其中所述一组线程中的每个线程搜索在已知硬件节点下的层次上的未发现的硬件节点。
2.权利要求
1的方法,其中硬件节点的子集在文件中识别。
3.权利要求
1的方法,其中硬件节点的子集由其与I/O桥的连接识别。
4.权利要求
1的方法,其中硬件节点包括至少下述之一输入/输出桥、小型计算机系统接口适配器、硬盘驱动器、网络适配器、磁带驱动器、键盘和监视器。
5.权利要求
1的方法,其中所述创建步骤处在操作系统的内核中。
6.权利要求
1的方法,其中所述创建步骤处在操作系统的用户空间中。
7.权利要求
1的方法,其中所述初始化步骤处在引导过程中。
8.权利要求
1的方法,其中所述创建步骤在用户空间环境在操作系统中可操作之后发生。
9.发现具有分层结构的硬件节点的数据处理系统,所述数据处理系统包括在加载支持并行线程的操作系统前,初始化数据处理系统中的硬件节点的子集的初始化装置,其中所述子集含有已知的硬件节点;以及响应加载操作系统,为在已知硬件节点下发现的每个硬件节点创建线程以形成一组线程的创建装置,其中所述一组线程中的每个线程搜索在已知硬件节点下的层次上的未发现的硬件节点。
10.权利要求
9的数据处理系统,其中硬件节点的子集在文件中识别。
11.权利要求
9的数据处理系统,其中所述硬件节点包括至少下述之一输入/输出桥、小型计算机系统接口适配器、硬盘驱动器、网络适配器、磁带驱动器、键盘和监视器。
12.在数据处理系统中发现具有分层结构的硬件节点的计算机程序,所述计算机程序包括当计算机程序在数据处理系统上执行时实现权利要求
1至8任一项的方法的所有步骤的指令。
专利摘要
本发明提供了一种发现具有分层结构的硬件节点的方法、设备和计算机指令。在加载支持并行线程的操作系统前初始化数据处理系统中的硬件节点的一个子集。响应加载操作系统,创建在已知硬件节点下发现的每个硬件节点的线程,以形成一组线程。
文档编号G06F9/445GK1993676SQ20058002608
公开日2007年7月4日 申请日期2005年7月20日
发明者安顿·布兰查尔德, 米尔顿·D.·米勒二世, 托德·A.·温顿 申请人:国际商业机器公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1