用于提供基于策略的操作系统服务的方法和系统转让专利

申请号 : CN200710141184.3

文献号 : CN101169733B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 埃伯特·赛德尔尼克查尔斯·J.·阿奇布赖恩·E.·史密斯迈克尔·A.·布劳克瑟姆约瑟夫·D.·拉特曼

申请人 : 国际商业机器公司

摘要 :

公开了用于在计算系统上的操作系统中提供基于策略的操作系统服务的方法、装置和产品。计算系统包括至少一个计算节点。计算节点包括操作系统,操作系统包括内核和一种服务类型的多个操作系统服务。在计算系统上的操作系统中提供基于策略的操作系统服务,包括:在计算节点上建立用于指定用在操作系统中的服务类型的操作系统服务中的一个的内核策略;以及由内核访问所指定的操作系统服务。计算系统还可以被实现为包括一个或多个操作系统服务节点的分布式计算系统。操作系统服务中的一个或多个可以分布在操作系统服务节点中。

权利要求 :

1.一种在计算系统上的操作系统中提供基于策略的操作系统服务的方法,该计算系统包括至少一个计算节点,计算节点包括操作系统,操作系统进一步包括内核和一种服务类型的多个操作系统服务,该方法包括:在计算节点上建立用于指定用在操作系统中的所述一种服务类型的多个操作系统服务中的一个的内核策略,所述内核策略用于优化应用对节点资源的利用;以及由内核指定用在操作系统中的所述一种服务类型;

视指定的所述一种服务类型而定,由内核从所述内核策略检索指定的操作系统服务;

由内核确定其是否能访问所指定的操作系统服务;以及

如果内核不能访问所指定的操作系统服务,则由计算节点执行实现所述服务类型的缺省操作系统服务的计算机程序指令;

如果内核能够访问所指定的操作系统服务,则由内核访问所指定的操作系统服务。

2.如权利要求1所述的方法,其中,

计算系统是进一步包括一个或多个操作系统服务节点的分布式计算系统;

一个或多个操作系统服务分布在操作系统服务节点中;

内核策略还指定将要提供所指定的操作系统服务的一个操作系统服务节点;以及由内核访问所指定的操作系统服务的步骤进一步包括:由内核访问该操作系统服务节点的所指定的操作系统服务。

3.如权利要求2所述的方法,其中,由计算节点的内核访问该操作系统服务节点的所指定的操作系统服务的步骤进一步包括:由内核从该操作系统服务节点检索实现所指定的操作系统服务的计算机程序指令;以及由计算节点执行实现所指定的操作系统服务的计算机程序指令。

4.如权利要求2所述的方法,其中,由计算节点的内核访问该操作系统服务节点的所指定的操作系统服务的步骤进一步包括:由内核请求该操作系统服务节点执行所指定的操作系统服务;以及由该操作系统服务节点执行实现所指定的操作系统服务的计算机程序指令。

5.如权利要求1所述的方法,其中,操作系统进一步包括另一种服务类型的操作系统服务,该方法进一步包括:由内核识别内核策略是否指定了所述另一种服务类型的操作系统服务;以及如果内核策略未指定所述另一种服务类型的操作系统服务,则由计算节点执行实现所述另一种服务类型的缺省操作系统服务的计算机程序指令。

6.如权利要求1所述的方法,其中,

用于所述服务类型的操作系统服务具有相同的应用编程接口;以及由计算节点的内核访问所指定的操作系统服务的步骤进一步包括:使用用于指定的操作系统服务的服务类型的相同应用编程接口,访问所指定的操作系统服务。

7.如权利要求1所述的方法,其中,计算系统是并行计算机。

8.一种用于在操作系统中提供基于策略的操作系统服务的计算系统,该计算系统包括至少一个计算节点,计算节点包括操作系统,操作系统进一步包括内核和一种服务类型的多个操作系统服务,该计算系统进一步包括:配置为在计算节点上建立用于指定用在操作系统中的所述一种服务类型的多个操作系统服务中的一个的内核策略的装置,所述内核策略用于优化应用对节点资源的利用;以及配置为由内核指定用在操作系统中的所述一种服务类型的装置;

配置为视指定的服务类型而定,由内核从所述内核策略检索指定的操作系统服务的装置;

配置为由内核确定其是否能访问所指定的操作系统服务的装置;以及配置为如果内核不能访问所指定的操作系统服务,则由计算节点执行实现所述服务类型的缺省操作系统服务的计算机程序指令的装置;

配置为如果内核能够访问所指定的操作系统服务,则使得内核访问所指定的操作系统服务的装置。

9.如权利要求8所述的计算系统,其中,

计算系统是进一步包括一个或多个操作系统服务节点的分布式计算系统;

一个或多个操作系统服务分布在操作系统服务节点中;

内核策略还指定将要提供所指定的操作系统服务的一个操作系统服务节点;以及配置为使得内核访问所指定的操作系统服务的装置进一步包括:配置为使得内核访问该操作系统服务节点的所指定的操作系统服务的装置。

10.如权利要求9所述的计算系统,其中,所述配置为使得计算节点的内核访问该操作系统服务节点的所指定的操作系统服务的装置进一步包括:配置为使得内核从该操作系统服务节点检索实现所指定的操作系统服务的计算机程序指令的装置;以及配置为使得计算节点执行实现所指定的操作系统服务的计算机程序指令的装置。

11.如权利要求9所述的计算系统,其中,所述配置为使得计算节点的内核访问该操作系统服务节点的所指定的操作系统服务的装置进一步包括:配置为使得内核请求该操作系统服务节点执行所指定的操作系统服务的装置;以及配置为使得该操作系统服务节点执行实现所指定的操作系统服务的计算机程序指令的装置。

说明书 :

用于提供基于策略的操作系统服务的方法和系统

技术领域

[0001] 本发明的领域是数据处理,或者更具体地说,是用于在计算系统上的操作系统中提供基于策略的操作系统服务的方法、装置和产品。

背景技术

[0002] 1948年开发EDVACA计算机系统通常被称为计算机时代的开始。从那时起,计算机系统已经发展成极其复杂的设备。当今的计算机比早期系统、诸如EDVAC更高深。计算机系统通常包括硬件和软件组件、应用程序、操作系统、处理器、总线、存储器、输入/输出设备等的组合。由于半导体工艺和计算机体系结构的进展推动计算机的性能越来越高,所以已经开发了更高级的计算机软件来利用硬件的更高性能,从而导致当今的计算机系统比几年前更强大。
[0003] 其中已经开发了计算机软件来利用高性能硬件的一个领域是操作系统。早期计算机缺乏任何形式的操作系统。系统管理员加载机器专用的应用。为了操作计算机,应用必须直接访问和控制计算机硬件。后来,与计算机一起出现了被链接到应用以帮助诸如输入和输出之类的操作的支持码库。这些库是现代操作系统的起源。然而,计算机每次仍然仅运行单个应用。现代的操作系统能同时运行多个应用。这些现代的操作系统还向应用提供了计算机硬件的抽象以便简化应用开发和帮助将应用从一个硬件平台转到另一个硬件平台的能力。
[0004] 内核是大部分计算机操作系统的中心部分,其管理系统资源以及硬件和软件组件间的通信。作为操作系统的基本组件,内核提供了用于硬件、特别是用于存储器、处理器和I/O的抽象层,允许硬件和软件进行通信。内核还使得这些设备通过进程间通信机制和系统调用而可用于应用和其他操作系统服务。
[0005] 取决于内核的设计和实现方式,对不同的内核不同地执行这些内核任务。在单片内核中,所有操作系统服务驻留在相同的存储区中并使用相同的存储区执行。因为单片内核尝试在相同的地址空间中执行所有代码,所以单片内核体系结构比其他解决方案更易于设计和实现,并且如果编写良好,则它极其有效。单片内核的主要缺点是系统组件间的相关性。大的内核变得非常难以维护,并且内核的一部分中的程序错误可能会使整个系统崩溃。
[0006] 在微核体系结构中,内核在硬件之上提供简单的抽象,利用原语集或系统调用实现最小操作系统服务,诸如存储器管理、多任务处理和进程间通信。在通常具有它们自己的地址空间的用户空间程序中实现其他服务,其中包括通常由内核提供的那些服务,诸如连网。微核比单片内核更易于维护,但大量的系统调用和上下文切换可能会降低系统速度。
[0007] 与用来实现操作系统的内核体系结构无关,当安装操作系统时,在当前的操作系统中提供的操作系统服务集通常是固定的。即,操作系统利用相同的存储器管理算法、相同的I/O调度算法、相同的连网算法等,而与在由该操作系统管理的硬件上运行的应用无关。然而,通常一个应用在使用一个操作系统服务时可以有效地利用计算机资源,而另一应用在使用相同的操作系统服务时不能有效地利用计算机资源。例如,操作系统中提供I/O调度的操作系统服务可能会导致高效使用应用的I/O密集的计算机资源,以及导致低效使用应用的非I/O密集的计算机资源。因为当前的操作系统提供相同的操作系统服务,而与应用无关,所以当前的操作系统通常不能有效地管理应用和计算机硬件间的交互。因此,读者将会意识到,在操作系统中提供操作系统服务的方式方面存在改进空间。

发明内容

[0008] 公开了用于在计算系统上的操作系统中提供基于策略的操作系统服务的方法、装置和产品。计算系统包括至少一个计算节点。计算节点包括操作系统,操作系统包括内核和一种服务类型的多个操作系统服务。在计算系统上的操作系统中提供基于策略的操作系统服务,包括:在计算节点上建立用于指定用在操作系统中的服务类型的操作系统服务中的一个的内核策略;以及由内核访问所指定的操作系统服务。
[0009] 计算系统还可以被实现为包括一个或多个操作系统服务节点的分布式计算系统。操作系统服务中的一个或多个可以分布在操作系统服务节点当中。内核策略也可以指定将要提供所指定的操作系统服务的一个操作系统服务节点,并且由内核访问所指定的操作系统服务可以包括:由内核访问该操作系统服务节点的所指定的操作系统服务。
[0010] 通过在附图中示例说明的本发明的示例性实施例的下述更具体描述,本发明的上述和其他目的、特征和优点将是显而易见的,其中,相似的参考数字通常表示本发明的示例性实施例的相似部件。

附图说明

[0011] 图1阐述了一个网络图,其示例说明了根据本发明的实施例在操作系统中提供基于策略的操作系统服务的示例性计算系统。
[0012] 图2阐述了一个自动计算机器的框图,该自动计算机器包括用在根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的过程中的示例性计算节点。
[0013] 图3阐述了一个流程图,其示例说明了根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的一种示例性方法。
[0014] 图4阐述了一个流程图,其示例说明了根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的另外一种示例性方法。
[0015] 图5阐述了一个流程图,其示例说明了根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的另外一种示例性方法。
[0016] 图6阐述了一个流程图,其示例说明了根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的另外一种示例性方法的流程图。

具体实施方式

[0017] 将从图1开始参考附图描述根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的示例性方法、装置和产品。图1阐述了一个网络图,其示例说明了根据本发明的实施例在操作系统中提供基于策略的操作系统服务的示例性计算系统100。图1的示例性计算系统100包括计算节点110。计算节点110包括操作系统108。操作系统108包括内核120和一种服务类型的多个操作系统服务124。图1的示例性计算系统100通常操作用来根据本发明的实施例,通过在计算节点上建立用于指定用在操作系统
108中的服务类型的操作系统服务124中的一个的内核策略122,以及通过由内核120访问指定的操作系统服务,在操作系统中提供基于策略的操作系统服务。
[0018] 在图1的例子中,示例性计算系统100被实现为分布式计算系统。分布式计算系统是使用两个或更多网络连接的计算设备实现共同任务的计算系统。图1的分布式计算系统100包括连接在一起用于通过网络101进行数据通信的计算节点110、操作系统服务节点112、114、116和管理节点118。计算节点110通过有线连接140连接到网络101。操作系统服务节点112通过有线连接142连接到网络101。操作系统服务节点114通过有线连接144连接到网络101。操作系统服务节点116通过有线连接146连接到网络101。管理节点118通过有线连接148连接到网络101。图1的分布式计算系统100的共同任务包括根据本发明的实施例在操作系统中提供基于策略的操作系统服务。
[0019] 在图1的例子中,使用安装在计算机机柜104中的一个节点102,实现计算节点110。图1的每一节点102是执行计算机程序指令的处理设备。每一节点102包括一个或多个计算机处理器以及可操作地耦合到该计算机处理器的计算机存储器。图1的节点102被实现为安装在服务器底座中的刀片服务器,而服务器底座又被安装在计算机机柜104上。
然而,读者将会注意到,将节点实现为刀片服务器是为了说明而不是为了加以限制。事实上,图1的节点可以被实现为网络连接的工作站、连接在一起以形成计算机群集的计算机、并行计算机中的计算设备、或者本领域的技术人员将会想到的任何其他实现方式。
[0020] 在图1的例子中,计算节点110是被配置为具有用在根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的过程中的内核120和内核策略122的节点。通常,内核策略122建立在计算节点上,用于优化由为在节点上执行而配置的应用106对节点资源的利用。应用106是实现用户级数据处理的计算机程序指令集。应用可以是独立的应用,其中,在单个计算节点上执行应用106的所有计算机程序指令,或者应用
106可以是分布式应用,其中,计算机程序指令的某些部分与在其他计算节点上执行的计算机程序指令的其他部分串行或并行执行。
[0021] 在图1的示例性系统100中,操作系统108控制计算节点110上应用106的执行。图1的操作系统108是管理处理设备、诸如计算节点110的硬件和软件资源的系统软件。操作系统108执行基本任务,诸如控制和分配存储器、对指令的处理区分优先级、控制输入和输出设备、便于连网和管理文件。
[0022] 图1的应用106通过内核120访问由操作系统108提供的资源。内核120是管理系统资源以及硬件和软件组件间的通信的操作系统108的核心组件。内核120为软件应用提供用于硬件的抽象层,其允许硬件和软件进行通信。内核120使得这些抽象层可通过进程间通信机制和内核应用编程接口(“API”)121用于用户级应用和其他操作系统组件。
[0023] 在图1的示例性系统100中,操作系统108使用微核体系结构实现。即,内核120包括基本类型的操作系统服务的实现方式,诸如存储器管理、进程管理、进程间通信。然而,其他操作系统服务124,诸如连网、中断处理、I/O调度、设备驱动器、文件系统服务等,使用单独的操作系统组件实现,每一组件具有不同于内核120的执行线程。内核120使用进程间通信或对服务API125的系统调用,访问这些操作系统服务124。
[0024] 在图1的示例性系统100中,每一操作系统服务124是实现未在内核120本身中实现的服务类型或者实现已经由内核120提供的服务类型的专用版本的系统软件。为了加以说明,例如,假定图1的内核120未实现任何文件系统服务类型的服务。在这一例子中,操作系统服务124中的一个可以实现用于Unix文件系统的文件系统服务,而第二操作系统服务124可以实现用于Reiser文件系统的文件系统服务。视在操作系统108中配置的内核策略122而定,内核120将使用Unix文件系统或Reiser文件系统提供文件系统服务。此外,例如,假定图1的内核120实现一般存储器管理服务。在该例子中,视内核策略122的配置而定,为代替在内核120中实现的一般存储器管理算法,操作系统服务124中的一个可以实现内核120可以使用的、适合于密集I/O操作的存储器管理服务。
[0025] 图1的每一操作系统服务124提供一种特定服务类型的操作系统服务。由操作系统服务124提供的服务类型可以包括例如任务调度器、文件系统、存储器管理、设备驱动器、I/O调度器、中断/信号处理、安全性、作业提交、tty处理等。用于相同服务类型的服务的操作系统服务具有相同的应用编程接口。即,用于一种特定服务类型的每一服务124的服务API125具有内核120可以用来访问操作系统服务124的相同的成员方法和参数集。因为每一服务类型的服务具有相同的服务API,所以内核120可以使用相同的应用编程接口,访问在内核策略122中指定的操作系统服务,而与为特定服务类型在内核策略122中指定哪一操作系统服务无关。
[0026] 在图1的示例性系统100中,一个或多个操作系统服务124分布在操作系统服务节点112、114、116中。即,用于实现一个或多个操作系统服务124的计算机程序指令驻留在操作系统服务节点112、114、116上。用于每一服务132、134、136的相应的操作系统服务124可以被实现为用于实现每一服务132、134、136的计算机程序指令的副本。也可以使用访问操作系统服务节点112、114、116上的操作系统服务132、134、136的数据通信子系统,实现用于每一服务132、134、136的相应的操作系统服务124。这种数据通信子系统的例子可以包括Web服务引擎、使用远程过程调用来访问操作系统服务节点112、114、116上的操作系统服务132、134、136的计算节点110上的CORBA对象、使用MPI库、或本领域的技术人员将会想到的任何其他实现方式。
[0027] “CORBA”是指公用对象请求代理体系结构(Common ObjectRequest Broker Architecture),它是用于由对象管理组(“OMG”)产生的可互操作的企业应用的计算机行业规范。CORBA是首先由OMG在1991年公布的、用于远程过程调用的标准。CORBA可以被视为进行远程过程调用的一种面向对象的方法,但是CORBA支持在传统的远程过程调用中不存在的特征。CORBA使用说明性语言、即接口定义语言(“IDL”)描述对象的接口。编译依照IDL的接口描述来生成用于客户端的“桩(stub)”和服务器端的“骨架(skeleton)”。通过使用该生成的代码,在面向对象的编程语言、诸如C++或Java中实现的远程方法调用看起来就象本地对象中的本地成员方法的调用。
[0028] “MPI”是指“消息传递接口”,它是现有技术中的并行通信库,是用于并行计算机上的数据通信的计算机程序指令模块。现有技术中的可以用于根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的并行通信库的例子包括MPI和“并行虚拟机”(“PVM”)库。由University of Tennessee(田纳西大学)、The OakRidge National Laboratory(橡树岭国家实验室)和Emory University(艾默里大学)开发了PVM。由MPI Forum(MPI论坛)推广了MPI,MPI Forum是一个开放组,具有来自定义和维护MPI标准的许多组织的代表。在该撰写时的MPI是用于在分布式存储器并行计算机上运行并行程序的节点间的通信的事实上的标准。为了便于说明,该规范有时使用MPI术语,但是使用MPI本身不是对本发明的要求或限制。
[0029] 在图1的例子中,使用在计算机机柜104中安装的节点102,实现操作系统服务节点112、114、116。每一操作系统服务节点112、114、116是向在计算节点上安装的内核提供操作系统服务的节点。每一操作系统服务节点可以向在一个或多个计算节点上运行的一个或多个内核提供一个或多个操作系统服务。然而,在具有许多节点的分布式计算系统中,由于系统中节点的充裕,每一操作系统服务节点通常仅提供一个操作系统服务。在图1的例子中,操作系统服务节点112向内核120提供操作系统服务132;操作系统服务节点114向内核120提供操作系统服务134;以及操作系统服务节点116向内核120提供操作系统服务136。
[0030] 为了向内核120提供操作系统服务,图1的每一操作系统服务节点112、114、116在其上安装了操作系统服务服务器。操作系统服务节点112包括服务服务器133,操作系统服务节点114包括服务服务器135,以及操作系统服务节点116包括服务服务器137。每一服务服务器133、135、137是响应于由操作系统的内核发送的请求,或者响应于从系统管理员接收了指令,向内核提供操作系统服务的软件组件。每一操作系统服务服务器133、135、137可以通过向内核传送用于实现所请求的操作系统服务的计算机程序指令,以及允许在其上安装了内核的计算节点执行计算机程序指令,来向内核提供操作系统服务。每一操作系统服务服务器133、135、137也可以通过指示服务器的操作系统服务节点执行用于实现所请求的操作系统服务的计算机程序指令,来提供操作系统服务。内核120可以使用Web服务、调用CORBA对象的成员方法、使用MPI库或本领域的技术人员将会想到的任何其他数据通信实现方式,与操作系统服务服务器133、135、137进行通信。
[0031] 如上所述,操作系统108包括用于一种特定服务类型的两个或多个操作系统服务124。例如,视示例性系统100的配置而定,操作系统108可以包括用于由内核使用的文件系统服务的两种不同的实现方式。在另一例子中,视应用106的需要而定,操作系统108可以包括存储器管理服务的两种不同实现方式。具有用于一种特定服务类型的一个以上的操作系统服务,有利地提供了根据操作系统108所管理的硬件和软件环境优化操作系统的服务算法的灵活性。
[0032] 图1的内核策略122是将操作系统服务124中的一个映射到由内核120使用的一种类型的操作系统服务的表。内核120使用内核策略122来识别对于一种特定服务类型在操作系统中要使用哪一操作系统服务。与操作系统服务124是本地地驻留在计算节点110上还是分布在其他节点、诸如操作系统服务节点112、114、116上无关,内核策略122指定用在操作系统108中的一种特定服务类型的操作系统服务中的一个。当在内核策略中指定的操作系统服务分布在操作系统服务节点112、114、116中的一个上时,内核策略122还指定要提供指定的操作系统服务的操作系统服务节点。使用内核策略122,内核120通过访问在策略122中指定的操作系统服务,根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务。
[0033] 通常,内核策略122将不会指定用于用在操作系统108中的服务类型之一的操作系统服务,或者内核120不能访问在策略122中指定的操作系统服务。在图1的例子中,因此,操作系统108包括缺省的操作系统服务126。缺省的操作系统服务126是当内核策略122没有指定用于特定服务类型的操作系统服务或者内核120不能访问在策略122中指定的操作系统服务时,内核120可以使用的特定服务类型的操作系统服务。例如,假定内核策略122没有指定用于由操作系统108使用的文件系统服务,内核120本身不实现文件系统服务,并且缺省的操作系统服务实现Unix文件系统。因为内核120不实现文件系统服务,并且在内核策略122中未指定文件系统服务,则在该例子中的内核120将使用实现Unix文件系统的缺省操作系统服务126。内核120可以使用进程间通信或缺省操作系统服务API127,访问缺省的操作系统服务126。
[0034] 在图1的例子中,系统管理员130通过管理节点118配置分布式计算系统100。图1的管理节点118是管理图1的计算系统100的配置的计算设备。管理节点118可以被实现为机架104中安装的节点102、连接到节点102的工作站网络、或本领域的技术人员将会想到的任何其他计算机中的一个。
[0035] 在图1的示例性系统100中,管理模块118在其上安装了管理模块128。管理模块128是软件组件,系统管理员130通过它配置示例性计算系统100。通过为系统管理员130提供用户接口来与管理模块128交互,以及通过在一个或多个计算节点、诸如计算节点110上配置由系统管理员130提供的操作系统108和应用106,管理模块128允许系统管理员
130配置示例性计算系统100。管理模块128包括计算机程序指令集,用于根据本发明的实施例通过在计算节点110上建立用于指定用在操作系统108中的服务类型的操作系统服务
124中的一个的内核策略,在计算系统上的操作系统中提供基于策略的操作系统服务。
[0036] 组成图1所示的示例性系统的服务器和其他设备的配置是为了加以说明而不是为了加以限制。根据本发明的各个实施例的有用的数据处理系统可以包括另外的图1中未示出的服务器、路由器、其他设备和对等体系结构,如本领域的技术人员将会想到的那样。这些数据处理系统中的网络可以支持许多数据通信协议,其中包括例如传输控制协议(“TCP”)、网际协议(“IP”)、超文本传输协议(“HTTP”)、无线访问协议(“WAP”)、手持设备传输协议(“HDTP”)、MPI协议以及本领域的技术人员将会想到的其他协议。除图1中所示的那些硬件平台外,本发明的各个实施例还可以在各种硬件平台上实现。例如,用于根据本发明的实施例在操作系统中提供基于策略的操作系统服务的计算系统也可以被实现为诸如IBM的BlueGene/L的并行计算机。
[0037] 根据本发明在计算系统上的操作系统中提供基于策略的操作系统服务通常用计算机、即用自动计算机器来实现。在图1的系统中,例如,所有节点在某种程度上至少被实现为计算机。为了进一步说明,因此,图2阐述了自动计算机器的框图,该自动计算机器包括用在根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统的过程中的示例性计算节点110。图2的计算节点110包括至少一个计算机处理器156或“CPU”,以及随机存取存储器168(“RAM”),该RAM168通过高速存储器总线166和总线适配器158连接到处理器156并且还连接到计算节点的其他部件。
[0038] 在RAM168中存储了应用106,和包括内核120、内核策略122、操作系统服务124以及缺省操作系统服务126的操作系统108。如上所述,应用106是实现用户级数据处理的计算机程序指令集。图2的内核策略122是将操作系统服务124中的一个映射到由内核120使用的一种类型的操作系统服务的表。图2中所示的内核120、操作系统服务124和缺省操作系统服务126是软件组件,即计算机程序指令,其如以上关于计算节点参考图1所述那样进行操作。为了根据本发明在计算系统上的操作系统中提供基于策略的操作系统服务而TM TM TM TM TM改进的操作系统可以包括UNIX 、Linux 、Microsoft NT 、IBM的AIX 、IBM的i5/OS 、以及本领域的技术人员将会想到的其他操作系统。在RAM168中示出了图2的例子中的应用
106和操作系统108,该操作系统108包括内核120、内核策略122、操作系统服务124和缺省操作系统服务126,但是,在非易失性存储器中、例如在盘驱动器170上,通常还存储了许多这种软件组件。
[0039] 图2的示例性计算节点110包括总线适配器158、包含用于高速总线、前端总线162和存储器总线166的驱动电子设备以及用于更慢速扩展总线160的驱动电子设备的计算机硬件部件。用在根据本发明的实施例的计算节点中的总线适配器的例子包括Intel的北桥、Intel的存储器控制集线器、Intel的南桥以及Intel I/O控制集线器。用在根据本发明的实施例的计算节点中的扩展总线的例子包括外围部件互连(“PCI”)总线和PCI Express(“PCIe”)总线。
[0040] 尽管在图2的示例性计算节点110中未描述,但总线适配器158也可以包括用于支持视频适配器和计算节点110的其他部件间的数据通信的视频总线的驱动电子设备。图2未描述这种视频部件,是因为计算节点通常被实现为在不具有专用视频支持的并行计算机中的服务器底座或节点中安装的刀片服务器。然而,读者应当注意到,用在本发明的实施例中的计算节点可以包括这种视频部件。
[0041] 图2的示例性计算节点110还包括通过扩展总线160和总线适配器158连接到处理器156和示例性计算节点110的其他部件的盘驱动器适配器172。盘驱动器适配器172将以盘驱动器170形式的非易失性数据存储设备连接到示例性计算节点110。用在计算节点中的盘驱动器适配器包括集成驱动电子设备(“IDE”)适配器、小型计算机系统接口(“SCSI”)适配器以及本领域的技术人员将会想到的其他适配器。另外,如本领域的技术人员将会想到的那样,对计算节点而言,非易失性计算机存储器可以被实现为光盘驱动器、电可擦可编程只读存储器(所谓的“EEPROM”或“闪速”存储器)、RAM驱动器等。
[0042] 图2的示例性计算节点110包括一个或多个输入/输出(“I/O”)适配器178。计算节点中的I/O适配器通过例如软件驱动程序和计算机硬件实现面向用户的输入/输出,用于控制去往显示设备、诸如计算机显示屏的输出以及来自用户输入设备181、诸如键盘和鼠标的用户输入。尽管在图2的例子中未示出,但是本发明的其他实施例中的计算节点可以包括视频适配器,其是专门为去往显示设备、诸如显示屏或计算机监视器的图形输出而设计的I/O适配器的一个例子。视频适配器通常通过高速视频总线、总线适配器158和也为高速总线的前端总线162连接到处理器156。
[0043] 图2的示例性计算节点110包括用于与其他计算机182进行数据通信和用于与数据通信网络101进行数据通信的通信适配器167。可以通过RS-232连接,通过外部总线、诸如通用串行总线(“USB”),通过数据通信网络、诸如IP数据通信网络,以及以本领域的技术人员将会想到的其他方式,串行地执行这些数据通信。通信适配器实现数据通信的硬件级,通过它,一个计算机将数据通信直接地或者通过数据通信网络发送到另一计算机。用于根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的通信适配器的例子包括用于有线拨号通信的调制解调器,用于有线数据通信网络通信的IEEE802.3以太网适配器,以及适合于无线数据通信网络通信的802.11b适配器。
[0044] 尽管参考示例性计算节点论述了图2,但是读者将会注意到,包括用在根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的过程中的示例性操作系统服务节点和示例性管理节点的自动计算机器与图2的示例性计算节点110类似。即,这些示例性操作系统服务节点和示例性管理节点包括一个或多个处理器、总线适配器、总线、RAM、通信适配器、I/O适配器、盘驱动器适配器和本领域的技术人员将会想到的与图
2的示例性计算节点110类似的其他部件。
[0045] 为了进一步说明,图3阐述一个流程图,其示例说明了一种用于根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的示例性方法。计算系统包括至少一个计算节点。计算节点包括操作系统。操作系统包括内核和一种服务类型的多个操作系统服务。
[0046] 图3的方法包括在计算节点上建立(300)用于指定用在操作系统中的一种服务类型的操作系统服务中的一个的内核策略122。图3的内核策略122是将操作系统服务映射到由内核使用的一种类型的操作系统服务的表。在图3的例子中,内核策略122的每一记录标识对于一种特定服务类型将要在操作系统中使用哪一操作系统服务。为了标识对于一种特定服务类型在操作系统中将要使用哪个操作系统服务,内核策略122的每一个记录包括操作系统服务标识符302和服务类型304。可以在内核策略122中指定的操作系统服务的示例性类型304可以包括任务调度器、文件系统、存储器管理、设备驱动器、I/O调度器、中断/信号处理、安全性、作业提交、tty处理等。对于用在根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的过程中的内核策略122的一个例子,假定下述表:
[0047]
[0048] 在表1的示例性内核策略中,将操作系统服务标识符302的值“UFS_Service”与服务类型304的值“File_System”相关联,指定了当内核需要访问文件系统服务类型时,该内核使用实现Unix文件系统的操作系统服务。将操作系统服务标识符302的值“Round_Robin_MMAlgorithm”与服务类型304的值“Memory_Management”相关联,指定了当内核需要访问存储器管理服务类型时,内核使用实现循环算法的操作系统服务。将操作系统服务标识符302的值“Limited_I/O_Access”与服务类型304的值“I/O_Scheduler”相关联,指定了当内核使用I/O调度器服务类型时,内核使用实现有限I/O访问的操作系统服务。读者将会注意到,上述示例性内核策略122是用于说明而不是为了加以限制。本领域的技术人员将会想到的其他内核策略也可以用在根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的过程中。
[0049] 在图3的方法中,可以通过在管理模块中从系统管理员接收操作系统服务和服务类型间的映射,以及根据该映射通过管理模块在计算节点上创建内核策略122,来执行在计算节点上建立(300)用于指定用在操作系统中的一种服务类型的操作系统服务中的一个的内核策略122。管理模块是系统管理可以用来配置包括计算节点的计算系统的软件组件。管理模块在其上创建内核策略122的特定计算节点通常由系统管理员通过由管理模块提供的用户界面指定。管理模块可以被直接安装在计算节点或连接到计算节点的任何其他计算机网络上。管理模块可以通过使用共享的存储器空间、CORBA框架、JTAG网络、Web服务、MPI库或本领域的技术人员将会想到的任何其他数据通信实现方式实现的数据通信连接,在计算节点上创建内核策略122。
[0050] “JTAG”是用于IEEE1149.1标准的通用名,该IEEE1149.1标准也被称为用于使用边界扫描测试印刷电路板的测试存取端口的标准测试存取端口和边界扫描体系结构(Standard Test Access Port andBoundary-Scan Architecture)。JTAG被广泛采用,使得此时边界扫描或多或少地与JTAG同步。JTAG不仅用于印刷电路板,而且还用于实施集成电路的边界扫描,并且还用作用于调试嵌入式系统的机制,为该系统提供方便的“后门”。通过使用JTAG网络,管理模块可以有效地在用在根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的过程中的计算节点中配置处理器寄存器和存储器。
[0051] 图3的方法包括由内核指定(301)用在操作系统中的服务类型305。通过在沿执行流程的特定点上实现内核的计算机程序指令中包含服务类型305,内核可以根据图3的方法指定(301)用在操作系统中的服务类型305。例如,在沿用于内核的执行流程的特定点上,实现内核的计算机程序指令可以包含表示下述指令的机器代码:
[0052] ·Execute_Service(′File_System′);
[0053] 在上述示例性指令中,函数‘Execute_Service’是指示内核执行在内核策略122中为具有值‘File_System’的服务类型305指定的操作系统服务的函数。在实现内核的计算机程序指令中包括这种示例性指令,指定了操作系统使用文件系统服务类型的服务。读者将会注意到,上述示例性指令是用于说明而不是加以限制。本领域的技术人员将会想到的其他指令也可以用在根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的过程中。
[0054] 图3的方法包括:视指定的服务类型305而定,由内核从内核策略122检索(303)指定的操作系统服务307。通过在内核策略122中查找和具有与指定的服务类型305相同值的服务类型304有关的操作系统服务标识符302,可以执行根据图3的方法视指定的服务类型305而定由内核从内核策略122检索指定的操作系统服务307。
[0055] 图3的方法还包括:由内核确定(306)内核是否能访问所指定的操作系统服务307。通过调用用于该指定的操作系统服务307的API的函数,可以执行根据图3的方法由内核确定(306)该内核是否能访问指定的操作系统服务307。如果函数调用向内核返回错误,那么内核不能访问所指定的操作系统服务。如果函数调用未向内核返回错误,那么内核能访问该指定的操作系统服务。如上所述,用于相同服务类型的操作系统服务可以具有相同的应用编程接口。可以将用于每一服务类型的API编码到实现内核的计算机程序指令中。
[0056] 图3的方法包括:当内核不能访问指定的操作系统服务307时,由计算节点执行(308)用于实现服务类型304的缺省操作系统服务的计算机程序指令。可以通过在缺省服务表312中查找与该服务类型304有关的缺省操作系统服务标识符314,以及调用用于由该缺省操作系统服务标识符314表示的缺省操作系统服务的API的函数,来实现根据图3的方法由计算节点执行(308)实现服务类型304的缺省操作系统服务的计算机程序指令。缺省服务表312与内核策略122类似。缺省服务表312的每一个记录标识对于一种特定服务类型在操作系统中将要使用哪一个缺省操作系统服务。缺省服务表312的每一个记录包括缺省操作系统服务标识符314和服务类型304。尽管在缺省服务表312中指定了图3的缺省操作系统服务,但是读者将会注意到,该实施例是用于说明而不是加以限制。在其他实施例中,内核策略122可以包含指定对于一种特定服务类型在操作系统中使用的缺省操作系统服务的字段,或者可以将用于每一服务类型的缺省服务编码到内核本身中。
[0057] 图3的方法还包括由内核访问(310)指定的操作系统服务307。通过调用用于指定的操作系统服务307的API的函数,可以实现根据图3的方法由内核访问指定的操作系统服务307。调用用于指定的操作系统服务307的API的函数仅仅是用于说明。在另一实施例中,管理模块可以根据内核策略122,修改内核代码中的进入和退出异常指令(hook),以便在执行流程期间,在内核代码中的适当点,将处理器控制从内核转移到操作系统服务。在该例子中,可以简单地通过执行实现内核的计算机程序指令,执行访问(310)用于一种服务类型的指定的操作系统服务。
[0058] 如上所述,操作系统服务可以分布在分布式计算系统中的一个或多个操作系统服务节点中。当操作系统服务分布在一个或多个操作系统服务节点中时,如下文参考图5所述,可以通过从操作系统服务节点检索实现指定的操作系统服务的计算机程序指令,并由计算节点执行实现指定的操作系统服务的计算机程序指令,来实现由内核访问(310)指定的操作系统服务。如下文参考图6所述,也可以通过内核请求操作系统服务节点执行指定的操作系统服务,以及由该操作系统服务节点执行实现指定的操作系统服务的计算机程序指令,来实现由内核访问(310)指定的操作系统服务。
[0059] 如上所述,内核策略是将特定操作系统服务映射到由内核使用的一种类型的操作系统服务的表。然而,内核策略可以不将操作系统服务映射到由内核使用的每一类服务。同样地,内核通常识别内核策略是否指定了用于一种特定服务类型的操作系统服务,并且如果内核策略未指定用于指定服务类型的操作系统服务,则执行实现指定服务类型的缺省操作系统服务的计算机程序指令。为了进一步说明,因此,图4阐述一个流程图,其示例说明了根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的另一示例性方法,该方法包括由内核识别(400)内核策略是否指定了指定服务类型305的操作系统服务。在图4的例子中,计算系统包括至少一个计算节点。计算节点包括操作系统。
操作系统包括内核和一种服务类型的多个操作系统服务。
[0060] 图4的方法与图3的方法的类似之处在于,图4的方法包括:在计算节点上建立(300)用于指定用在操作系统中的服务类型的操作系统服务中的一个的内核策略122,由内核指定(301)用在操作系统中的服务类型305,根据指定的服务类型(305),由内核从内核策略122检索(303)指定的操作系统服务307,以及由内核访问(310)所指定的操作系统服务307。图4的例子与图3的例子的类似之处还在于,内核策略122的每一记录包括操作系统服务标识符302和服务类型304。另外,图4的例子与图3的例子的类似之处在于,图4的例子包括缺省服务表312,并且表312的每一记录包括缺省操作系统服务标识符314和服务类型304。
[0061] 图4的方法包括由内核识别(400)内核策略122是否指定了指定服务类型305的操作系统服务。可以通过在内核策略122中搜索其服务类型304的值与指定服务类型305的值匹配的记录,实现根据图4的方法由内核识别(400)内核策略122是否指定了指定服务类型305的操作系统服务。如果未找到记录,则内核策略122没有指定该指定服务类型305的操作系统服务。如果找到了记录,那么内核策略122的确指定了指定服务类型305的操作系统服务。读者将会注意到,通过在内核策略122中搜索其服务类型304的值与指定服务类型305的值匹配的记录,识别(400)内核策略122是否指定了指定服务类型305的操作系统服务,是用于加以说明而不是用于限制。在本发明的其他实施例中,内核策略122可以包含用于用在操作系统中的每一服务类型的记录。在这些实施例中,可以通过识别内核策略122中的特定记录的操作系统服务标识符302是否包含NULL(空)值,实现识别(400)内核策略122是否指定了指定服务类型305的操作系统服务。
[0062] 图4的方法还包括:当内核策略122没有指定该指定服务类型305的操作系统服务时,由计算节点执行(402)实现指定服务类型305的缺省操作系统服务的计算机程序指令。通过在缺省服务表312中查找与服务类型304有关的缺省操作系统服务标识符314,以及调用用于由缺省操作系统服务标识符314表示的缺省操作系统服务的API的函数,可以实现根据图4的方法由计算节点执行(402)实现指定服务类型305的缺省操作系统服务的计算机程序指令。尽管在缺省服务表312中指定了图4的缺省操作系统服务,但是读者将会注意到,这一实施例是用于加以说明而不是用于限制。在其他实施例中,内核策略122可以包含用于指定对于一种特定服务类型在操作系统中使用的缺省操作系统服务的字段,或者用于每一服务类型的缺省服务可以被编码到内核本身中。
[0063] 如上所述,操作系统服务可以分布在分布式计算系统中的一个或多个操作系统服务节点中。当操作系统服务分布在一个或多个操作系统服务节点中时,可以通过访问操作系统服务节点的所指定的操作系统服务,实现由内核访问所指定的操作系统服务。为了进一步说明,因此,图5阐述了一个流程图,其示例说明了根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的另一示例性方法,该方法包括访问(502)操作系统服务节点的所指定的操作系统服务307。在图5的例子中,计算系统包括至少一个计算节点以及一个或多个操作系统服务节点。计算节点包括操作系统。操作系统包括内核和一种服务类型的多个操作系统服务。在图5的例子中,在操作系统服务节点中分布了一个或多个操作系统服务。
[0064] 图5的方法与图3的方法的类似之处在于,图5的方法包括:在计算节点上建立(300)用于指定用在操作系统中的服务类型的操作系统服务中的一个的内核策略122,由内核指定(301)用在操作系统中的服务类型305,根据指定的服务类型305,由内核从内核策略122检索(303)指定的操作系统服务307,以及由内核访问(310)所指定的操作系统服务307。图5的例子与图3的例子的类似之处还在于,内核策略122的每一记录包括操作系统服务标识符302和服务类型304。然而,在图5的例子中,内核策略122还通过在每一记录中包括操作系统服务节点标识符500,指定将要提供指定的操作系统服务307的操作系统服务节点。在图5的例子中,指定的操作系统服务307分布在操作系统服务节点之一上。
[0065] 在图5的方法中,由内核访问(310)指定的操作系统服务307,包括:访问(502)操作系统服务节点的所指定的操作系统服务307。通过由内核从操作系统服务节点检索(504)实现所指定的操作系统服务307的计算机程序指令506,实现根据图5的方法访问(502)操作系统服务节点的所指定的操作系统服务307。计算机程序指令506表示实现指定的操作系统服务307的机器代码。尽管图5的计算机程序指令506表示机器代码,但这种表示是用于加以说明而不是用于限制。事实上,图5的计算机程序指令506也可以表示用汇编语言或高级语言、诸如Java实现的计算机程序指令。
[0066] 可以通过将操作系统服务请求传送到在其上分布了所指定的操作系统服务307的操作系统服务节点上的服务服务器,以及从服务服务器接收实现指定的操作系统服务的计算机程序指令506,来实现根据图5的方法由内核从操作系统服务节点检索(504)实现所指定的操作系统服务307的计算机程序指令506。操作系统服务请求是用于使操作系统服务节点向内核提供操作系统服务的请求。操作系统服务请求可以包括用于所指定的操作系统服务307的操作系统服务标识符302。通过调用CORBA对象的成员方法、使用MPI库或本领域的技术人员将会想到的任何其他数据通信实现方式,使用Web服务,内核可以将操作系统服务请求传送到操作系统服务节点上的服务服务器,以及检索计算机程序指令506。
[0067] 还可通过由计算节点执行(508)实现所指定的操作系统服务307的计算机程序指令506,实现根据图5的方法访问(502)操作系统服务节点的所指定的操作系统服务307。可以通过调度实现所指定的操作系统服务307的计算机程序指令506用于在计算节点上执行,来实现根据图5的方法由计算节点执行(508)实现指定的操作系统服务307的计算机程序指令506。如上所述,图5的计算机程序指令506可以表示用汇编语言或高级语言、诸如Java实现的计算机程序指令。在该实施例中,可以通过将计算机程序指令506解释成机器代码以及调度该机器代码用于在计算节点上执行,来实现执行(508)实现所指定的操作系统服务307的计算机程序指令506。
[0068] 在图5的方法中,通过在计算节点上执行实现所指定的操作系统服务的计算机程序指令,来实现访问操作系统服务节点的所指定的操作系统服务。然而,也可以通过在操作系统服务节点上执行实现所指定的操作系统服务的计算机程序指令,来实现访问操作系统服务节点的所指定的操作系统服务。因此,为了进一步说明,图6阐述了一个流程图,其示例说明了根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务的另一示例性方法,该方法包括由操作系统服务节点执行(608)实现所指定的操作系统服务307的计算机程序指令606。在图6的例子中,计算系统包括至少一个计算节点以及一个或多个操作系统服务节点。计算节点包括操作系统。操作系统包括内核和一个服务类型的多个操作系统服务。在图6的例子中,在操作系统服务节点中分布了一个或多个操作系统服务。
[0069] 图6的方法与图3的方法的类似之处在于,图6的方法包括:在计算节点上建立(300)用于指定用在操作系统中的服务类型的操作系统服务中的一个的内核策略122,由内核指定(301)用在操作系统中的服务类型305,根据指定的服务类型305,由内核从内核策略122检索(303)指定的操作系统服务307,以及由内核访问(310)所指定的操作系统服务307。图4的例子与图3的例子的类似之处还在于,内核策略122的每一记录包括操作系统服务标识符302和服务类型304。然而,在图6的例子中,内核策略122还通过在每一记录中包括操作系统服务节点标识符500,指定将要提供指定的操作系统服务307的操作系统服务节点。在图6的例子中,指定的操作系统服务307分布在操作系统服务节点之一上。
[0070] 在图6的方法中,由内核访问(310)所指定的操作系统服务307,包括:访问(502)操作系统服务节点的所指定的操作系统服务307。通过由内核请求(600)操作系统服务节点执行指定的操作系统服务,以及由操作系统服务节点接收(604)服务执行请求602,来实现根据图6的方法访问(502)操作系统服务节点的所指定的操作系统服务307。可以通过将服务执行请求602传送到在其上分布了所指定的操作系统服务307的操作系统服务节点上的服务服务器,来实现由内核请求(600)操作系统服务节点执行所指定的操作系统服务。服务执行请求602是用于使操作系统服务节点为内核执行操作系统服务的请求。服务执行请求602可以包括用于所指定的操作系统服务307的操作系统服务标识符302。内核可以通过调用CORBA对象的成员方法、使用MPI库、或本领域的技术人员将会想到的任何其他数据通信实现方式,使用Web服务,将服务执行请求602传送到操作系统服务节点上的服务服务器。
[0071] 还可通过由操作系统服务节点执行实现所指定的操作系统服务307的计算机程序指令606,实现根据图6的方法访问(502)操作系统服务节点的所指定的操作系统服务307。计算机程序指令606表示实现所指定的操作系统服务307的机器代码。可以通过调度实现所指定的操作系统服务307的计算机程序指令606用于在操作系统服务节点上执行,实现根据图6的方法由操作系统服务节点执行(608)实现所指定的操作系统服务307的计算机程序指令606。在执行计算机程序指令606后,操作系统服务节点上的服务服务器可以将一则消息传送到内核以表示执行是否成功。
[0072] 鉴于在本文中所阐述的说明,读者将会意识到,根据本发明的实施例在计算系统上的操作系统中提供基于策略的操作系统服务,提供了下述优点:
[0073] ●基于由操作系统管理的硬件和软件环境,配置用在操作系统中的操作系统服务的能力;以及
[0074] ●通过提供用于由操作系统的内核使用的各种操作系统服务,使操作系统适应新的环境或满足新需求的能力。
[0075] 主要在用于在操作系统中提供基于策略的操作系统服务的全功能计算系统的环境中描述了本发明的示例性实施例。然而,本领域的技术人员将会意识到,本发明也可以用位于用于与任何适当的数据处理系统一起使用的信号承载介质上的计算机程序产品实现。这种信号承载介质可以是用于机器可读信息的传输介质或可记录介质,包括磁性介质、光学介质或其他适当的介质。可记录介质的例子包括硬盘驱动器或磁带盒中的磁盘、用于光学驱动器的紧密盘、磁带和本领域的技术人员将会想到的其他介质。传输介质的例子包括TM
用于语音通信的电话网络以及数字数据通信网络、诸如Ethernets 和利用网际协议和万维网通信的网络,以及无线传输介质、诸如根据IEEE802.11规范系列实现的网络。本领域的技术人员将会意识到,具有适当的编程装置的任何计算机系统都将能执行在程序产品中包含的本发明的方法的步骤。本领域的技术人员将会立即意识到,尽管在本说明书所述的一些示例性实施例是面向在计算机硬件上安装和实现的软件的,但是被实现为固件或硬件的替换实施例也在本发明的范围之内。
[0076] 从上文的描述中将会理解到,在不背离本发明的真实精神的情况下,可以在本发明的各个实施例中做出改进和改变。本说明书中的描述仅用于示例目的,而不应被解释为限制意义。本发明的范围仅通过所附权利要求的语言限制。