用于在内核间共享内核服务的方法和系统的制作方法

文档序号:6609090阅读:233来源:国知局
专利名称:用于在内核间共享内核服务的方法和系统的制作方法
技术领域
本发明的技术领域是数据处理,或更具体地,是用于在内核间共享内核服务的方法、装置和产品。
背景技术
线程是在多线程计算机上软件的执行单元。即,线程是计算机系统中的作业的可执行实体。可将线程视作可执行计算机程序的分立的流。在这样的计算机上,软件程序在被称为“进程”的执行单元中执行,“进程”包括所有软件程序执行所需要的处理器寄存器、代码段和偏移寄存器、数据段和偏移寄存器、堆栈段和偏移寄存器、标志寄存器、指令指针寄存器、程序计数器等等。为了提高效率,“进程”被进一步组织为线程,其中除了有的线程与进程的其他所有线程共享存储器之外,进程的每个线程单独地拥有执行所需的全部属性,因而降低了操作系统从线程切换到线程(“上下文切换”)的开销。
在本说明书中讨论了两种模式的多线程同步多线程(“SMT”)和单线程化(“ST”)的多线程。ST多线程是时分复用多线程,即,通过使用时间片或时间量而进行的多线程。在ST模式中,将单独的线程和虚拟处理器二者分配给在时间片断内所分派的处理器计算能力分区,其中每个时间片段被称为“时间片”或“时间量”。
一些处理器同时接受来自多于一个线程的计算机程序指令,这种特征被称为“同步多线程”或“SMT”。SMT背后的思想是在多线程化的工作负载的多个线程之间共享芯片上的处理器硬件。SMT是一种允许多个独立线程在单一处理周期内向单一物理处理器发布指令的技术。传统的处理器体系结构是在某一时刻仅从一个线程向处理器发布指令。实现了此处所描述的SMT的处理器的示例是IBM的Power5TM处理器。
SMT实现于物理处理器中上,该物理处理器的每一个都能够同时接受来自多于一个的执行线程的指令。在SMT模式中,也可将虚拟处理器和运行于虚拟处理器上的线程二者通过时间片分派。在SMT模式中,可将在虚拟处理器上执行的线程视作运行于逻辑处理器中。因而,在SMT模式中可将运行于物理处理器中的虚拟处理器视为支持多于一个逻辑处理器。不论线程运行于ST模式或SMT模式,运行于逻辑处理器之上的线程意识不到该处理器本质上是逻辑的还是虚拟的,并且将其视作传统处理器。
多重处理实现于逐分区地支持在ST模式或SMT模式中的多个逻辑分区的计算机中。每个分区传统上实现整个包括单独的内核的单独的操作系统。内核通过提供内核服务支持运行于逻辑分区中的应用。尽管由内核提供的服务类型通常类似,但不同的内核可用不同的方式实现服务。由于这样的原因,在提供特定内核服务上,一些内核可能比其他内核更好。然而,在传统技术中,具有较好服务的内核无法同另一个内核,甚至另一个同类型内核共享此类服务。举例而言,具有较好的磁盘I/O驱动的Unix内核实例传统上无法将其磁盘I/O驱动用于运行于另一Unix内核的执行线程,即使该另一Unix内核具有完全相同的类型和版本。

发明内容
公开了用于在内核之间共享内核服务的方法、装置和计算机程序产品,包括由分区管理器从逻辑分区中的应用接收对来自第一内核的内核服务的第一系统调用,第一系统调用具有与第一内核兼容的形态和内容;根据第一系统调用而生成对来自第二内核的内核服务的第二系统调用,第二系统调用具有与第二内核兼容的形态和内容;以及,通过分区管理器向第二内核发送第二系统调用以供执行。
通过下面对在附图中所示出的对本发明示例性实施方式更具体的描述,本发明的前述以及其他目标、特征和优点将变得显而易见,在附图中,相同的参考数字一般表示本发明的示例性实施方式中的相同部分。


图1示出了根据本发明的实施方式的包含示例性的可用于在内核间共享内核服务的计算机的自动化计算机器的框图;图2示出了根据本发明的实施方式的展示了用于在内核间共享内核服务的示例性系统的功能框图;图3A示出了根据本发明的实施方式的展示了用于在内核间共享内核服务的示例性线程状态的状态图;图3B示出了根据本发明的实施方式的展示了用于调度共享内核的计算机系统中的虚拟处理器的示例性虚拟处理器状态的状态图;图4A示出了根据本发明的实施方式的展示了用于在内核间共享内核服务的进一步示例性系统的功能框图;图4B示出了根据本发明的实施方式的展示了用于在内核间共享内核服务的进一步示例性系统的功能框图;图5示出了根据本发明的实施方式的展示了用于在内核间共享内核服务的示例性方法的流程图;图6示出了根据本发明的实施方式的展示了用于在内核间共享内核服务的进一步示例性方法的流程图;以及图7示出了根据本发明的实施方式的展示了用于在内核间共享内核服务的进一步示例性方法的流程图。
具体实施例方式
由图1开始并结合附图,描述了根据本发明的实施方式的用于在内核间共享内核服务的示例性方法、装置和产品。根据本发明的在内核间共享内核服务实现于自动化计算机器之上,即,一台或多台计算机。图1示出了根据本发明的实施方式的包含示例性的可用于在内核间共享内核服务的计算机(152)的自动化计算机器的框图。图1中的计算机(152)包括一些物理处理器(156)以及通过系统总线(160)连接到该物理处理器以及计算机的其他组件的随机访问存储器(“RAM”)(168)。
存储于RAM(168)中的是逻辑分区(114)、应用程序(108)、操作系统(110)、逻辑处理器(106)、分区管理器(112)、两个或更多内核(102、104)、虚拟处理器(122)以及内核共享接口(124)。逻辑分区(“LPAR”)(114)是一组数据结构和服务,其支持在单一计算机内进行计算机资源的分发,以使得该计算机的功能如同是两台或更多台独立的计算机。每个逻辑分区被赋予其运行所需的全部资源,如同该逻辑分区是包括处理器时间、存储器、操作系统等的独立的计算机。逻辑分区和通过逻辑分区而对应用可用的该资源有时被统称作“虚拟机”。为便于解释,图1的系统仅包括一个逻辑分区,但根据本发明的实施方式,在内核间共享内核服务的系统可支持任意数量的逻辑分区。
应用程序(108)是用户级计算机程序代码的模块。应用程序是非特权代码,其必须通过对操作系统内核的调用而获得对计算机资源的访问。
操作系统(110)是系统软件层,其调度线程,并为使系统资源对线程可用而提供包括存储器访问、对输入/输出资源的访问等等的功能。操作系统还控制用于计算机资源的访问的分配和授权。操作系统实现诸如识别来自键盘的输入、向显示屏发送输出、跟踪磁盘驱动器上的文件和目录,以及控制诸如磁盘驱动器和打印机的外围设备等的低层次基本任务。操作系统还负责安全,确保未经授权的用户无法访问系统,并确保线程仅能访问其被授权访问的资源。许多操作系统功能由内核实现,在本例中,内核是主内核(102)或共享内核(104)。根据本发明的实施方式,可用于在内核间共享内核服务的操作系统是多线程操作系统,其示例包括UNIXTM、LinuxTM、Microsoft XpTM、ADCTM、IBM的i5/OSTM以及其他那些本领域技术人员将意识到的操作系统。
逻辑处理器(106)是用于为在逻辑分区中的执行而调度线程的操作系统的结构。即,操作系统(110)在逻辑处理器(106)上调度用于执行的线程,而不是在物理处理器或虚拟处理器上调度用于执行的线程。在逻辑处理器上调度线程提供了方便的结构和处理,在该结构和处理中,从线程的视角看,该线程呈现出具有可由其支配的整个逻辑分区的全部资源。虚拟处理器是物理处理器被分派的分片。尽管事实上,逻辑处理器仅像机器上的其他执行那样物理地运行于部分时间片中,然而,逻辑处理器在逻辑上是完整的处理器。因而,运行于LPAR中的逻辑处理器之上的线程,从线程的视角看,呈现出具有完整的独立计算机的全部资源。即,逻辑处理器是一个对象,在该对象上运行于分区中的操作系统中的递派器(dispatcher)递派线程;而虚拟处理器是由分区管理器递派的。在运行于ST模式中的LPAR中,逻辑处理器和虚拟处理器之间的对应是一对一的,对于每个虚拟处理器有一个逻辑处理器。在运行于SMT模式中的LPAR中,逻辑处理器和虚拟处理器之间的对应是N对一,其中N是虚拟处理器上所支持的逻辑处理器的数量,即,对于每个虚拟处理器有N个逻辑处理器。
虚拟处理器(122)是由数据结构和计算机指令组成的子系统,其实现将处理器时间向逻辑分区的分配。物理处理器的共享池支持将部分物理处理器(以时间片)向逻辑分区的该分配。此种以时间片共享的部分物理处理器被称为“虚拟处理器”。在逻辑分区之间共享在共享处理器池中所持有的物理处理器。在本说明书的示例中,根据具有代表一个物理处理器的处理能力的1.0处理单元而共享物理处理器。典型地,通过分配线程以在虚拟处理器的逻辑处理器上运行而实现分配线程以在虚拟处理器上运行。在ST模式中,每个虚拟处理器具有一个逻辑处理器。然而,在SMT模式中,在这些示例里,每个虚拟处理器有两个逻辑处理器。
图1的分区管理器(112)是在逻辑分区下运行的系统软件层。即,分区管理器(112)运行于逻辑分区和包括物理处理器(156)的底层硬件(物理计算机组件)之间。分区管理器支持并允许在多个逻辑分区中建立并运行多个操作系统和应用。其中,该分区管理器支持用户或系统管理员建立分区、虚拟处理器以及逻辑处理器。恰如同支持多个逻辑分区的计算机中的操作系统内核在逻辑处理器上调度并递派线程,该分区管理器在物理处理器上调度并递派虚拟处理器。由于通常使用在逻辑分区中的操作系统来运行特定应用或应用组,分区管理器使得在单一计算机上运行多个操作系统及其应用成为可能,并减少了整体硬件成本。产品和测试系统可同时运行在相同硬件上。此外,通过支持多个逻辑分区的分区管理器,诸如WindowsTM和LinuxTM的不同操作系统可以共享相同的底层计算机硬件。分区管理器是一种有时被称为“系统管理程序”、“虚拟化管理器”或“虚拟机监视器”的软件。
在图1的示例中,分区管理器(112)包括内核(102、104)。内核是操作系统的核心。内核是特权级模块,或者有时被称作“系统执行”或“系统监视器”的模块。内核作为在应用以及其他操作系统组件中执行的线程的代理的软件,负责提供对计算机系统硬件的安全访问,包括对存储器、处理能力、输入/输出资源等的访问。内核还调度构成应用程序以及操作系统的进程的执行线程。典型地,内核还提供用于进程间通信和同步的诸如存储器锁、信号以及信号量的服务。典型地,内核还提供硬件抽象(对特定类型的所有设备通用的一组指令)以向操作系统的应用和其他组件隐藏底层复杂度。硬件抽象组件进而依赖软件驱动来提供对硬件设备的制造规范专用的功能。总之,内核提供的内核服务用于·控制和仲裁对系统硬件的访问;·实现并支持基本的抽象进程、线程、文件、设备等;·分配和调度系统资源存储器、处理器、磁盘、文件描述符、进程描述符、线程描述符等;·加强安全性和对系统资源的保护;以及·通过系统调用响应针对服务的用户和应用请求。
读者中的本领域技术人员将理解,典型地安装在操作系统内部的操作系统内核(102,104)在本例中安装于分区管理器(112)中,使得来自应用程序的对内核服务的系统调用通过分区管理器而被导引。在分区管理器中安装内核通过允许多于一个逻辑分区使用相同内核的实例而保存系统资源。在申请号为11/301,113,名称为“Sharing A Kernel OfAn Operating System Among Logical Partitions”,代理人卷号为No.AUS920050439US1的美国专利申请中详细描述了在分区管理器中安装内核,此处通过引用将其整体并入。
在图1的示例中,分区管理器(112)暴露内核共享接口(124)。根据本发明的实施方式,内核共享接口(124)是应用编程接口或“API”,其为被实现为例如计算机程序指令库的计算机软件模块,并被配置为便于在内核之间共享内核服务。内核共享接口(124)包括计算机程序指令,该计算机程序指令能够从逻辑分区(114)中的应用(108)中接收对来自第一内核(102)的内核服务的第一系统调用,根据第一系统调用,生成对来自第二内核(104)的内核服务的第二系统调用,以及通过分区管理器(112)向第二内核(104)发送第二系统调用以供执行。在本例中的内核共享接口(124)还包括计算机程序指令,该计算机程序指令能够接收来自提供内核服务的内核(104)的响应,并向在逻辑分区(114)中的应用(108)发送该响应。内核共享接口(124)可包括能够确保该响应具有与第一内核(102)兼容的形态和内容的计算机程序指令。
将图1的示例中的计算机软件组件、应用(108)、逻辑分区(114)、逻辑处理器(106)、操作系统(110)、分区管理器(112)、虚拟处理器(122)、内核(102,104)等展示为部署在RAM(168)中。然而,读者将意识到,此类软件的许多组件也可以存储在非易失性存储器(166)中。图1的计算机(152)包括通过系统总线(160)耦接到物理处理器(156)和计算机(152)的其他组件的非易失性计算机存储器(166)。可将非易失性计算机存储器(166)实现为硬盘驱动器(170)、光盘驱动器(172)、电可擦除可编程只读存储器空间(所谓的“EEPROM”或“闪”存)(174)、RAM驱动器(未示出),或者本领域技术人员可意识到的其他种类的非易失性存储器。
图1中的示例性计算机包括一个或多个输入/输出接口适配器(178)。在计算机中的输入/输出接口适配器通过例如软件驱动和计算机硬件来实现面向用户的输入/输出,以控制通往诸如计算机显示屏的显示设备(180)的输出,以及控制来自诸如键盘和鼠标的用户输入设备(181)的用户输入。
图1中的示例性计算机(152)包括用于实现同其他计算机(182)进行数据通信(184)的通信适配器(167)。例如可通过诸如IP网络的数据通信网络,以及本领域技术人员将意识到的其他方式来实现此类数据通信。通信适配器实现硬件级的数据通信,通过该通信适配器,一台计算机直接地或通过网络向另一台计算机发送数据通信。根据本发明的实施方式,可用于在内核之间共享内核服务的通信适配器的示例包括用于有线拨号通信的调制解调器,用于有线网络通信的以太网(IEEE802.3)适配器,以及用于无线网络通信的802.11b适配器。
为了进一步解释,图2示出了根据本发明实施方式的展示了用于在内核间共享内核服务的示例性系统的功能框图。图2的系统包括两个逻辑分区,一个处于ST模式(202)而一个处于SMT模式(204)。图2的系统包括六个逻辑处理器,两个(230、232)用于逻辑分区(202),而四个(234,236,238,240)用于逻辑分区(204)。图2的系统还包括四个虚拟处理器,两个(242,244)被赋予逻辑分区(202),而两个(246,248)被赋予逻辑分区(204)。图2的系统还包括三个物理处理器(250,252,254)。在本例中,三个物理处理器(250,252,254)的处理能力按如下方式被分派给逻辑分区·将物理处理器(250)的全部处理能力整体上赋予虚拟处理器(242),这样逻辑处理器(230)具有对其可用的物理处理器(250)的全部。
·将物理处理器(252)的一半处理能力赋予虚拟处理器(244),这样逻辑处理器(232)按时间片具有对其可用的物理处理器(252)的一半。
·将物理处理器(252)的一半处理能力赋予虚拟处理器(246)。将虚拟处理器(246)赋予逻辑分区(204),该逻辑分区运行在对于虚拟处理器(246)有两个逻辑处理器(234,236)的SMT模式中。逻辑处理器(234)和逻辑处理器(236)的每一个按时间片具有对其可用的物理处理器(252)的处理能力的四分之一。
·将物理处理器(254)的全部处理能力赋予虚拟处理器(248)。将虚拟处理器(248)赋予逻辑分区(204),该逻辑分区运行在对于虚拟处理器(248)有两个逻辑处理器(238,240)的SMT模式中。逻辑处理器(238)和逻辑处理器(240)的每一个按时间片具有对其可用的物理处理器(254)的处理能力的一半。
图2的系统包括分区管理器(112)。该分区管理器是在逻辑分区下运行的系统软件层。即,分区管理器(112)运行于逻辑分区和包括物理处理器(250,252,254)的底层硬件(物理计算机组件)之间。分区管理器支持并允许在多个逻辑分区中建立并运行多个操作系统和应用。其中,分区管理器支持用户或系统管理员建立分区、虚拟处理器以及逻辑处理器。恰如同支持多个逻辑分区的计算机中的操作系统内核在逻辑处理器上调度并递派线程,分区管理器在物理处理器上调度并递派虚拟处理器。由于通常使用在逻辑分区中的操作系统来运行特定应用或应用组,所以分区管理器使得在单一计算机中运行多个操作系统及其应用成为可能,并减少了整体硬件成本。产品和测试系统可同时运行在相同硬件上。此外,通过支持多个逻辑分区的分区管理器,诸如WindowsTM和LinuxTM的不同操作系统可以共享相同的底层计算机硬件。
在图2的示例中,分区管理器(112)包括内核共享接口(124)。根据本发明的实施方式,内核共享接口(124)是应用编程接口或“API”,其被实现为例如计算机程序指令库的计算机软件模块,并被配置为便于在内核间共享内核服务。内核共享接口(124)包括计算机程序指令,该计算机程序指令能够从逻辑分区(202,204)中的应用(206,208)中接收对来自第一内核(102)的内核服务的第一系统调用,根据第一系统调用,生成对来自第二内核(104)的内核服务的第二系统调用,以及通过分区管理器(112)向第二内核(104)发送第二系统调用以供执行。内核共享接口(124)还可以包括计算机程序指令,该计算机程序指令能够接收来自提供内核服务的内核(104)的响应,并向发送第一系统调用的逻辑分区(202,204)中的应用(206,208)发送响应。内核共享接口(124)可包括能够确保该响应具有与第一内核(102)兼容的形态和内容的计算机程序指令。
图2的系统包括两个操作系统(210,220),其分别在逻辑分区(202)和逻辑分区(204)中。在本例中,对应用或用户直接可访问的操作系统特征仍然在该逻辑分区中,而将操作系统内核(102,104)安装在分区管理器(112)中。此类特征包括对图形用户接口(“GUI”)(212,222)的支持。这些特征还包括对提供例如对操作系统应用程序和库函数的命令行接口的外壳(214,224)的支持。对应用或用户可直接访问的操作系统功能还包括操作系统工具程序(216,226)。系统应用程序包括用于系统管理的程序,其典型地可通过GUI或外壳访问,这些程序例如是创建、打开或删除文件的程序,创建并浏览文件系统目录的文件夹的程序,读取并设置环境变量的程序,对文件中文本的搜索等。
对应用或用户直接可访问的操作系统特征可包括以及可实现为系统调用的库(218,228)。系统调用库暴露应用编程接口(“API”),其允许通过对内核(102,104)内部的特权级软件例程的调用而在调用程序以获得对依赖于硬件的服务和其他受保护的系统资源的访问。通过在该系统调用库函数内部调用的中断或软件陷阱来实现此类对内核空间的特权级代码的调用。典型地通过将一个或多个系统调用库编译进应用或应用程序,或编译进在运行时动态可加载的另一种库——动态链接库或“DLL”——而实现对系统调用库内部的函数调用的访问。
为了进一步的解释,图3A示出了根据本发明实施方式的展示了用于在内核间共享内核服务的示例性线程状态的状态图。图3A中的圆圈代表线程状态。圆圈之间的箭头代表为内核函数所影响的状态迁移。在图3A中表示的线程状态包括创建状态(302)、就绪状态(304)、运行状态(306)、等待状态(308)以及停止状态(310)。当由于另一个线程的请求而最初创建线程时,线程临时地处于创建状态(302),以便为内核提供收集用于线程的信息和资源的时间。一旦内核为线程的运行做好准备,则“启动”(303)该线程,即,将该线程转移到就绪状态(304)。
在等待机会运行的就绪队列(未示出)中对处于就绪状态(304)的线程进行排队。确定接下来将运行哪个就绪线程的处理被称为“调度”。有许多种调度算法,FIFO、轮转(Round Robin)、优先级等,并且根据本发明的实施方式,在内核间共享内核服务的系统中可使用这些算法中的任意一种。用于将线程从就绪状态转移到运行状态的内核函数被称为“递派”(312)。事实上,“被递派”、“运行”和“处于运行状态”大体上是同义的。
当线程被递派,即,处于运行状态(306),则当前将线程赋予以在逻辑处理器上执行。线程是否物理上执行取决于逻辑处理器的虚拟处理器当前是否通过其分区管理器而被递派,即,当前在物理处理器的时间片上执行。用于逻辑处理器的就绪队列可包括一个、两个或更多处于就绪状态而等待在逻辑处理器上运行的线程。通常,在某一时刻,在逻辑处理器上只将一个线程置于运行状态。
通过抢占(preemption)或超时(314),线程会失去对逻辑处理器的占有,即被从运行状态移回到就绪状态。当具有较高优先级的线程进入逻辑处理器的就绪队列时,线程被抢占。如果线程保持对逻辑处理器的占有,即,在其全部时间片上保持为运行状态,则该线程会超时。
通过发出系统调用(316)并进入等待系统调用完成的等待状态(308),线程也可以离开运行状态(306)。此类系统调用可以是对由内核提供的任何服务的请求,该请求包括例如休眠或等待一段时间的意向性(intentional)请求、对从磁盘读取或向磁盘写入数据的请求、对从输入资源读取或向输出资源写入数据的请求等。
为进一步解释,图3B示出了根据本发明实施方式的展示了用于调度共享内核的计算机系统中的虚拟处理器的示例性虚拟处理器状态的状态图。在图3B中的圆圈代表虚拟处理器状态。圆圈之间的箭头代表为分区管理器的函数所影响的状态迁移。在图3B中表示的虚拟处理器状态包括创建状态(322)、就绪状态(324)、运行状态(326)、等待状态(328)以及停止状态(330)。当最初创建虚拟处理器时(典型地在引导时间内)虚拟处理器临时地处于创建状态(322),以便为分区管理器提供收集用于虚拟处理器的信息和资源的时间。一旦分区管理器为虚拟处理器的运行做好准备,则“启动”(323)虚拟线程,即,将该线程转移到就绪状态(324)。
在等待机会运行的就绪队列(未示出)中对处于就绪状态(324)的虚拟处理器进行排队。分区管理器根据轮转、优先级等一种或多种调度算法来调度虚拟处理器运行。分区管理器将就绪队列中当前最有对虚拟处理器所赋予的物理处理器的实际占有资格的单一虚拟处理器从就绪状态递派到运行状态(332)。通常,在某一时刻,在物理处理器上只将一个虚拟处理器置于运行状态。
通过抢占或超时(334),虚拟处理器会失去对物理处理器的占有,并被从运行状态移回到就绪状态。当具有较高优先级的虚拟处理器进入物理处理器的就绪队列时,虚拟处理器被抢占。如果虚拟处理器保持对物理处理器的占有,即,在其全部时间片上保持为运行状态,则虚拟处理器会超时。
通过发布系统调用(336)并进入等待系统调用完成的等待状态(328),虚拟处理器也可以离开运行状态(326)。此类系统调用包括对休眠或等待一段时间的意向性请求、对从磁盘读取或向磁盘写入数据的请求、对从输入资源读取或向输出资源写入数据的请求等。当运行于虚拟处理器之上,即,运行于逻辑分区的逻辑处理器上的线程发布例如等待键盘输入或从磁盘读出文件的系统调用时,虚拟处理器可确定在按键到来前或磁盘读出完成前虚拟处理器无需继续占用物理处理器却无事可做。在此情况下,虚拟处理器将其自身休眠一段特定时间,例如十分之一秒。将虚拟处理器从等待状态返回到就绪状态称为“唤醒”(338)该虚拟处理器。
为了进一步解释,图4A示出了根据本发明实施方式的展示了用于在内核间共享内核服务的进一步示例性系统的功能框图。图4A的系统包括全都运行在计算机(152)中的运行应用(108)的逻辑分区(114)、分区管理器(112)、共享内核服务(404,406)的内核(102,104)、以及内核共享接口(402)。
在图4A的系统中,应用(108)通过内核共享接口(402)向在分区管理器(112)中的内核(102)发送系统调用。内核共享接口(402)是分区管理器(112)的软件模块,其指引来往于分区管理器中的内核(102,104)的通信,并将通信转换为对于接收方适合的形态和内容。在本例中,应用程序(108)向内核(102)产生对内核服务(404)的系统调用(434),内核(102)被配置为从内核(104)获得内核服务(404)。系统调用(434)被中断引导通过分区管理器(112)并通往内核(102)。内核(102)接收具有与内核(102)兼容的形态和内容(参数值和参数序列)的系统调用,并确定由系统调用所请求的内核服务将由第二内核(104)提供。内核(102)通过向内核(104)发送该系统调用的指令而向内核共享接口(402)发送对内核(104)所提供的内核服务的系统调用。
响应于从内核(102)向内核(104)发送系统调用的指令,内核共享接口(402)生成对来自内核(104)的内核服务的第二系统调用。内核共享接口(402)对内核(104)生成具有与内核(104)兼容的形态和内容(参数值和参数序列)的系统调用。内核共享接口(402)向内核(104)发送第二系统调用以供执行。
响应于接收到第二系统调用,内核(104)提供内核服务(406)。如果内核服务(406)生成响应,内核(104)向内核共享接口(402)发送(418)响应。由内核(104)生成的该响应具有与内核(104)兼容的形态和内容。
当接收到来自内核(104)的响应,内核共享接口(402)生成第二响应。由内核共享接口(402)生成的第二响应具有与内核(102)兼容的形态和内容。内核共享接口(402)向内核(102)发送(412)第二响应。内核(102)向进行调用的应用(108)返回(436)第二响应。
为了进一步的解释,图4B示出了根据本发明实施方式的展示了用于在内核间共享内核服务的进一步示例性系统的功能框图。图4B的系统包括全部运行在计算机(152)中的运行应用(108)的逻辑分区(114)、分区管理器(112)以及共享内核服务(406)的内核(102,104)。
在图4B的系统中,应用(108)向在分区管理器(112)中的内核(102)发送(438)系统调用。内核(102)包括共享模块(420)以及内核共享接口(422)。共享模块(420)是内核(102)的软件模块,其确定在系统调用中被调用的内核服务是否将由另一个内核提供。内核共享接口(422)是内核(102)的软件模块,其指引来往于内核(102,104)的通信,并将通信转换为对于该通信的接收方适合的形态和内容。共享模块(420)确定从应用(108)所接收的系统调用是否请求了将由第二内核(104)提供的内核服务。如果从应用(108)接收到的系统调用包括对将由第二内核(104)所提供的内核服务的调用,则内核共享接口(422)生成具有与第二内核(104)兼容的形态和内容的第二系统调用。内核共享接口(422)向内核(104)发送第二系统调用。
在图4B的示例中,内核(104)包括内核共享接口(424)。内核共享接口(424)调用(428)内核服务(406),并且如果该内核服务生成了响应,则内核共享接口接收(430)来自内核服务(406)的响应。由内核服务(406)生成的响应具有与内核(104)兼容的形态和内容。内核共享接口(424)生成具有与内核(102)兼容的形态和内容的第二响应。内核共享接口(424)向内核(102)发送(432)第二响应。内核(102)接收第二响应,并向进行调用的应用(108)返回(440)第二响应。
为了进一步解释,图5示出了根据本发明实施方式的展示了用于在内核间共享内核服务的示例性方法的流程图。图5的方法可在计算机(152)中实现,计算机(152)具有一个或多个逻辑分区(114)、运行于一个或多个逻辑分区(114)中的一个或多个应用(108)、分区管理器(112)、以及在分区管理器(112)中的两个或更多内核(102,104)。在图5的示例中,当该逻辑分区被引导时,分区管理器(112)向逻辑分区赋予资源。在逻辑分区(114)的引导时间中,分区管理器(112)将第一内核(102)作为赋予逻辑分区(114)的资源,以向运行于逻辑分区(114)中的应用(108)提供内核服务。
图5的方法包括由分区管理器(112)从逻辑分区(114)中的应用(108)中接收对来自第一内核(102)的内核服务(522)的第一系统调用(502)。在图5的示例中,系统调用是由应用或由应用通过系统调用库函数向内核发布用以执行内核服务的指令。
第一系统调用(502)具有与第一内核(102)兼容的形态(504)和内容(506)。在图5的示例中,系统调用(502)的形态(504)是调用参数序列,而系统调用(502)的内容(506)是该系统调用的标识和调用参数的值。可由系统调用的名称或中断向量的值来代表该系统调用的标识。从应用(108)的角度来看,因为逻辑分区(114)呈现为仅具有一个提供内核服务的内核的完整计算机,所以系统调用(502)的形态和内容与第一内核(102)兼容。应用(108)和逻辑分区(114)不会意识到内核(102)之外的其他任何内核,因此,应用(108)和逻辑分区(114)向内核(102)提供具有与内核(102)兼容的形态和内容的系统调用。
图5的方法也包括根据第一系统调用来生成对来自第二内核(104)的内核服务(522)的第二系统调用(512)。第二系统调用(512)具有与第二内核(104)兼容的形态(514)和内容(516)。在图5的示例中,由分区管理器(112)实现对来自第二内核(104)的内核服务(522)的第二系统调用(512)的生成(510)。通过例如使用诸如在表1中示出的数据结构,分区管理器(112)可生成第二系统调用。

表1的每条记录将逻辑分区标识符、主内核标识符、共享内核标识符以及所接收的系统调用关联于所生成的系统调用,所生成的系统调用指定将被发送到共享内核的系统调用的形态和内容。在表1中,所接收的系统调用具有例如在该调用中指定的参数及其顺序的形态以及用于调用函数的关键字和参数的值内容二者。例如,在表1的第一记录中,所接收的调用的形态包括顺序为“x,y,z”的参数“x,y,z”,以及内容包括命令关键字“F”和x、y和z的值。在图5的示例中,内核(102)是主内核,因为它是所赋予的用于向逻辑分区(114)提供内核服务的内核。内核(104)在图5的示例中是共享内核,因为它是共享其服务之一的内核。系统调用(502)在图5的示例中是所接收的调用,而第二系统调用(512)是所生成的调用。当从在逻辑分区中的应用接收到系统调用时,分区管理器可以通过使用关联于该逻辑分区的主内核标识符,在诸如表1的数据结构中,查找所接收的系统调用以识别所生成的系统调用所需的形态和内容。继而,该分区管理器可通过用恰当关键字、参数等形成指令来产生第二系统调用,从而给出与共享内核兼容的形态和内容而生成第二系统调用。
图5的方法还包括向第二内核(104)发送(518)第二系统调用(512)以供执行。在图5的示例中,已生成第二系统调用(512)的分区管理器(112)向第二内核(104)发送系统调用。分区管理器可通过参考诸如表1的数据结构而识别第二内核(104)。例如在表1的第一记录中,用于从带有逻辑分区标识符“114”的逻辑分区接收的,通往带有主内核标识符“102”的主内核的具有形态和内容“F(x,y,z)”的系统调用的共享内核,对应于带有共享内核标识符“104”的共享内核。因此,在本例中的分区管理器生成具有形态和内容“F(y,x,z)”的调用,并将所生成的调用发送给内核(104)以供执行。可通过使用如上面关于图2、图4A和图4B中的参考(124,402,422,424)所描述的内核共享接口而实现向第二内核(104)发送(518)第二系统调用(512)以供执行。
图5的方法还包括通过第二内核(104)提供(520)内核服务(522)。在图5的示例中的第二内核(104)通过执行具有由第二系统调用(512)的内容(516)所指定的参数的第二系统调用(512)来提供内核服务。
图5的方法还包括提供(550)对第二系统调用(512)的响应作为提供(520)内核服务(522)的一部分。例如,如果内核服务(522)生成了响应,则内核(104)可提供响应作为提供内核服务的一部分。将从本说明书中获益的本领域技术人员将认识到并非所有内核服务都对系统调用生成响应。然而,不提供响应的内核服务是在本发明的范围内的。
在图5中的方法,由内核(104)所提供的响应(522)具有与内核(104)兼容的形态(554)和内容(556)。在图5中的方法,内核(104)提供响应(522)仿佛第二系统调用(512)是来自使用内核(104)以提供内核服务的应用的系统调用一样。因此,内核(104)提供具有形态(554)和内容(556)的响应(522),因而,为内核服务而使用内核(104)的应用将期待来自内核(104)的响应,即,具有与内核(104)兼容的形态和内容的响应。
图5的方法还包括接收(558)来自内核(104)的第一响应(552)并生成(560)第二响应(526)。在图5的示例中,分区管理器(112)接收(558)来自内核(104)的响应并生成(560)第二响应(526)。由分区管理器(112)所生成的第二响应(526)具有与内核(102)兼容的形态(528)和内容(530)。因为应用(108)在期待来自内核(102)的对系统调用(502)的响应,并因而期待该响应具有与内核(102)兼容的形态和内容,所以第二响应(526)具有与内核(102)兼容的形态(528)和内容(530)。
图5的方法还包括向在逻辑分区(114)中的应用(108)发送(524)响应(526)。在图5的示例中,由分区管理器(112)实现向在逻辑分区(114)中的应用(108)发送(524)响应(526)。从应用(108)的角度看是内核(102)提供内核服务(522)。
为了进一步解释,图6示出了根据本发明实施方式的展示了用于在内核间共享内核服务的进一步示例性方法的流程图。图6的方法类似于图5的方法。即,图6的方法包括通过分区管理器(112)从逻辑分区(114)中的应用(108)中接收(508)对来自第一内核(102)的内核服务(522)的第一系统调用(502),第一系统调用具有与第一内核(102)兼容的形态(504)和内容(506)。类似于图5的方法,图6的方法包括根据第一系统调用(502)而生成(510)对来自第二内核(104)的内核服务(522)的第二系统调用(512),其中第二系统调用(512)具有与第二内核(104)兼容的形态(514)和内容(516)。类似于图5的方法,图6的方法包括向第二内核(104)发送(518)第二系统调用(512)以供执行,以及提供(520)所述内核服务包括提供(550)响应(808),通常,所有这些如上面参考图5的方法所描述的而运行。然而,在图6的方法中,与图5的方法不同的是,第一内核(102)生成第二系统调用(512)。
图6的方法还包括通过第一内核(102)接收(602)第一系统调用(502)。在图6的示例中,分区管理器接收(508)第一系统调用(502),确定内核(102)向生成系统调用的应用提供内核服务,并向内核(102)发送该系统调用。
图6的方法还包括通过第一内核(102)确定(604)第二内核(104)将提供内核服务(522)。内核(102)可通过例如使用诸如在表2中示出的数据结构来确定将由内核(104)提供内核服务(522)。

表2中的每条记录关联于所接收的对共享内核的系统调用,该共享内核将提供在系统调用中标识的内核服务,并且表2中的每条记录指定了对该共享内核的内核服务的系统调用的形态和内容。如果所接收的系统调用以此数据结构关联于共享内核,则内核(102)可确定由该系统调用所调用的内核服务将由第二内核,即,由共享内核提供。
图6的方法还包括根据第一系统调用(502),由第一内核(102)生成(510)对来自第二内核(104)的内核服务(522)的第二系统调用(512)。内核(102)可通过参考诸如在表2中示出的数据结构而生成第二系统调用(512)。在表2中,所接收的系统调用具有例如在该调用中所指定的参数及其顺序的形态,以及例如用于调用函数的命令关键字和参数的值的内容。例如,在表2的第一记录中,所接收的调用的形态包括顺序为“x,y,z”的参数“x,y,z”,以及内容包括命令关键字“F”以及x,y,和z的值。在图6的示例中,内核(102)是主内核,因为它是所赋予的用于向逻辑分区(114)提供内核服务的内核。内核(104)在图6的示例中是共享内核,因为它是共享其服务之一的内核。系统调用(502)在图6的示例中是所接收的系统调用,而第二系统调用(512)是所生成的系统调用。当接收到来自分区管理器(112)的系统调用时,内核(102)可通过使用所接收的系统调用标识符而在诸如表2的数据结构中查找提供内核服务的共享内核的标识,以及用于所生成的对共享内核的内核服务的系统调用的形态和内容。继而,内核(102)可通过以与共享内核兼容的正确形态的恰当关键字和参数形成指令而生成第二系统调用(512)。
图6的方法包括由第二内核(104)提供(520)内核服务(522),包括提供(550)由该内核服务所生成的响应。在本例中,第二内核(104)向第一内核(102)提供对第二系统调用(512)的响应(808),其中该响应(808)具有与第一内核(102)兼容的形态(810)和内容(812)。因而在本例中,内核(104)配备有足以允许其阐明与内核(102)兼容的响应的信息。可选地,内核(104)可提供具有与内核(104)兼容的形态和内容的响应,并且可配置内核(102)以将该响应转换为具有与内核(102)兼容的形态和内容。以任一种方式,到该响应回到进行调用的分区和进行调用的应用为止,该响应将具有与内核(102)兼容的形态和内容,因为内核(102)兼容的返回数据正是进行调用的应用所期待的。
图6的方法还包括接收(814)第一内核(102)中的响应(808),并向应用(108)发送(816)来自第一内核(102)的该响应。由于在本例中,响应(808)已经具有与内核(102)兼容的形态(810)和内容(812),所以可通过经由内核(102)向应用(108)传递无需调整的响应而实现向应用(108)发送(816)来自第一内核(102)的该响应。
为了进一步解释,图7示出了根据本发明实施方式的展示了用于在内核间共享内核服务的进一步示例性方法的流程图。图7的方法类似于图5的方法。即,图7的方法包括通过分区管理器(112)从逻辑分区(114)中的应用(108)中接收(508)对来自第一内核(102)的内核服务(521)的第一系统调用(502),第一系统调用具有与第一内核(102)兼容的形态(504)和内容(506),以及根据第一系统调用(502),生成(510)对来自第二内核(104)的内核服务(522)的第二系统调用(704)。在本例中,内核服务(521)和内核服务(522)是等同的内核服务,例如磁盘I/O请求、存储器分配请求等。内核服务(521)具有如内核(102)所提供的服务的形态,而内核服务(522)具有如内核(104)所提供的相同服务的形态。内核(102)被配置为根据请求来获取来自内核(104)的服务(521)所表示的服务类型。根据本发明的实施方式,将内核(104)配置为共享内核服务(522)。
然而,在图7的方法中,不同于图5的方法,第一内核(102)生成第二系统调用(704)。而且在图7的方法中,通过生成(702)普通(generic)系统调用(704)而实现根据第一系统调用(502)来生成(510)对来自第二内核(104)的内核服务(522)的第二系统调用。在本例中的普通系统调用(704)是具有普通形态(706)和普通内容(708)的系统调用。在本例中,该普通形态和内容是被接受为可由多个内核(在此实例中包括第二内核(104))兼容的形态和内容。
图7的方法还包括向第二内核(104)发送(518)第二普通系统调用(704)以供执行。在图7的示例中,已生成第二普通系统调用(704)的分区管理器(112)向第二内核(104)发送(518)普通系统调用(704)。分区管理器可通过参考诸如图1的数据结构而标识第二内核(104)。可通过使用如上面关于图2、4A和4B中的参考(124,402,422,424)所描述的内核共享接口而实现向第二内核(104)发送(518)第二普通系统调用(704)以供执行。
在图7的通过第二内核(104)提供(710)内核服务(522)的方法中,包括通过第二内核(104)提供对普通系统调用(704)的普通响应(714)。在本例中的普通响应(714)是具有普通形态(716)和普通内容(718)的响应。该普通形态和内容是被接受为可由多个内核(在此实例中包括第一内核(102))兼容的形态和内容。
主要在用于内核间共享内核服务的全功能计算机系统的情况中描述了本发明的示例性实施方式。然而,读者中的本领域技术人员将意识到本发明也可以实施于在与任何适当数据处理系统一起使用的信号承载介质上设置的计算机程序产品中。此类信号承载介质可以是用于机器可读信息的传输介质或可记录介质,包括磁介质、光介质或其他合适介质。可记录介质的示例包括在硬盘驱动器中的磁盘或软盘,用于光驱动器的压缩盘、磁带、以及本领域技术人员将意识到其他可记录介质。传输介质的示例包括用于语音通信的电话网络以及诸如以太网以及用网际协议与万维网通信的网络之类的数字数据通信网络。本领域技术人员将立刻意识到具有合适的编程手段的任何计算机系统将能够执行实施在程序产品中的本发明的方法的步骤。本领域技术人员将立即意识到,尽管在此说明书中所描述的示例性实施方式中的一些是面向在计算机硬件上安装并执行的软件,然而,以固件或硬件实现的可选实施方式也落入本发明范围。
从上文中的描述应该理解,可在本发明多种实施方式中做出调整和改变而不脱离本发明的真实精神。本说明书中的描述仅是出于描述的目的,而不应理解为限制的含义。本发明的范围仅由所附权利要求书的语言来限制。
权利要求
1.一种在内核间共享内核服务的方法,所述方法包括由分区管理器从逻辑分区中的应用接收对来自第一内核的内核服务的第一系统调用,所述第一系统调用具有与所述第一内核兼容的形态和内容;根据所述第一系统调用,生成对来自第二内核的所述内核服务的第二系统调用,所述第二系统调用具有与所述第二内核兼容的形态和内容;以及通过所述分区管理器向所述第二内核发送所述第二系统调用以供执行。
2.根据权利要求1所述的方法,进一步包括由所述第二内核提供所述内核服务;以及向所述逻辑分区中的所述应用发送响应,所述响应具有与所述第一内核兼容的形态和内容。
3.根据权利要求1所述的方法,进一步包括由所述第一内核接收所述第一系统调用;以及由所述第一内核来确定所述内核服务将由所述第二内核提供;其中,根据所述第一系统调用生成对来自第二内核的所述内核服务的第二系统调用包括根据所述第一系统调用由所述第一内核生成对来自所述第二内核的所述内核服务的所述第二系统调用。
4.根据权利要求1所述的方法,其中根据所述第一系统调用生成对来自第二内核的所述内核服务的第二系统调用包括生成普通系统调用。
5.根据权利要求1所述的方法,进一步包括由所述第二内核提供所述内核服务,包括由所述第二内核提供对所述第二系统调用的普通响应。
6.根据权利要求1所述的方法,进一步包括由所述第二内核提供所述内核服务,包括由所述第二内核向所述第一内核提供对所述第二系统调用的响应,所述响应具有与所述第一内核兼容的形态和内容。
7.一种用于在内核间共享内核服务的装置,所述装置包括计算机处理器和有效地地耦接到所述计算机处理器的计算机存储器,所述计算机存储器具有设置于其中的计算机程序指令,所述计算机程序指令能够由分区管理器从逻辑分区中的应用接收对来自第一内核的内核服务的第一系统调用,所述第一系统调用具有与所述第一内核兼容的形态和内容;根据所述第一系统调用,生成对来自第二内核的所述内核服务的第二系统调用,所述第二系统调用具有与所述第二内核兼容的形态和内容;以及通过所述分区管理器向所述第二内核发送所述第二系统调用以供执行。
8.根据权利要求7所述的装置,进一步包括计算机程序指令,其能够由所述第二内核提供所述内核服务;以及向所述逻辑分区中的所述应用发送响应,所述响应具有与所述第一内核兼容的形态和内容。
9.根据权利要求7所述的装置,进一步包括计算机程序指令,其能够由所述第一内核接收所述第一系统调用;以及由所述第一内核来确定所述内核服务将由所述第二内核提供;其中,根据所述第一系统调用生成对来自第二内核的所述内核服务的第二系统调用包括根据所述第一系统调用由所述第一内核生成对来自所述第二内核的所述内核服务的所述第二系统调用。
10.根据权利要求7所述的装置,其中根据所述第一系统调用生成对来自第二内核的所述内核服务的第二系统调用包括生成普通系统调用。
11.根据权利要求7所述的装置,进一步包括计算机程序指令,其能够由所述第二内核提供所述内核服务,包括由所述第二内核提供对所述第二系统调用的普通响应。
12.根据权利要求7所述的装置,进一步包括计算机程序指令,其能够由所述第二内核提供所述内核服务,包括由所述第二内核向所述第一内核提供对所述第二系统调用的响应,所述响应具有与所述第一内核兼容的形态和内容。
13.一种用于在内核间共享内核服务的计算机程序产品,所述计算机程序产品设置于信号承载介质上,所述计算机程序产品包括计算机程序指令,其能够执行权利要求1-6中任一项所述的步骤。
全文摘要
在内核间对内核服务进行共享包括由分区管理器从逻辑分区中的应用中接收对来自第一内核的内核服务的第一系统调用,第一系统调用具有与第一内核兼容的形态和内容;根据第一系统调用,生成对来自第二内核的内核服务的第二系统调用,第二系统调用具有与第二内核兼容的形态和内容;以及,通过分区管理器向第二内核发送第二系统调用以供执行。
文档编号G06F9/46GK101086712SQ20071010387
公开日2007年12月12日 申请日期2007年5月17日 优先权日2006年6月7日
发明者D·G·弗莱明, A·邓谢伊 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1