CN1983192A - 用于在逻辑分区之间共享操作系统内核的方法和系统 - Google Patents
用于在逻辑分区之间共享操作系统内核的方法和系统 Download PDFInfo
- Publication number
- CN1983192A CN1983192A CNA200610108400XA CN200610108400A CN1983192A CN 1983192 A CN1983192 A CN 1983192A CN A200610108400X A CNA200610108400X A CN A200610108400XA CN 200610108400 A CN200610108400 A CN 200610108400A CN 1983192 A CN1983192 A CN 1983192A
- Authority
- CN
- China
- Prior art keywords
- kernel
- logical partition
- data structure
- computer
- common data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
在逻辑分区之间共享操作系统内核,包括:在分区管理器中安装由多个逻辑分区使用的类型的内核;在分区管理器中安装指明了分配给多个逻辑分区中的每个逻辑分区的计算机资源的通用数据结构;以及由内核依赖于通用数据结构向逻辑分区提供内核服务。
Description
技术领域
本发明的领域涉及数据处理,或者更具体地,涉及用于在逻辑分区之间共享操作系统内核的方法、系统和产品。
背景技术
线程是多线程计算机上的软件执行单位。也就是,线程是计算机系统的可执行工作实体。线程可以看作为可执行计算机程序指令的单独流。在这样的计算机上,软件程序是以称为“进程”的执行单位来执行的,这些进程包括对于软件程序的执行所需要的所有处理器寄存器、代码段和偏移寄存器、数据段和偏移寄存器、堆栈段和偏移寄存器、标志寄存器、指令指针寄存器、程序计数器等。为求效率,“进程”进一步组织为多个线程,其中进程的每个线程各自拥有对于执行所需要的所有属性,例外的是线程在进程的所有其它线程之间共享存储器,由此减少从线程到线程的操作系统切换(“上下文切换”)的开销。
在本说明书中讨论两种多线程模式:即同时多线程(“simultaneousmulti-threading:SMT”)和单线程(“single-threaded:ST”)多线程。ST多线程是时间复用的多线程,也就是,通过使用时间片或时间量子的多线程。在ST模式中,各个线程和虚拟处理器被分配给按时间段分摊(apportion)的处理器计算容量的一部分,每个时间段称作为“时间片”或“时间量子”。
一些处理器同时接受来自多于一个线程的计算机程序指令,该特征称作为“同时多线程”或“SMT”。SMT背后的理念是在多线程工作负荷的多个线程之间共享芯片上的处理器硬件。SMT是让多个独立的线程在单个处理周期中发出指令到单个物理处理器的技术。传统的处理器架构每次仅从一个线程发出指令到处理器。实现如这里所述的SMT的处理器例子是IBM的Power5TM处理器。
SMT是在多个物理处理器上实现的,其中每个物理处理器能同时从多于一个的执行线程接受指令。同样在SMT模式中,虚拟处理器和运行在虚拟处理器上的线程都可以通过时间片来分摊。SMT模式中虚拟处理器上的执行线程可以看作为运行于逻辑处理器上。因此,SMT模式中物理处理器上运行的虚拟处理器可以看作为支持多于一个逻辑处理器。无论线程运行于ST模式还是SMT模式,在逻辑处理器上运行的线程并不知道处理器的逻辑或虚拟性质而且将它看作为传统的处理器。
多处理是在ST模式或SMT模式中逐个分区地支持多个逻辑分区的计算机中实现的。每个分区在传统上实现包括独立内核的完整独立操作系统。甚至内核的单个实例或图像也消耗存储器资源,而且这样的图像的每个附加备份消耗多个存储器资源。当分区数目大而且因此内核图像数目也大时,存储器消耗可以变成系统管理中的限制性因素。
发明内容
公开了用于在逻辑分区之间共享操作系统内核的方法、系统和计算机程序产品,由此减少存储器和其它系统资源的消耗。根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的方法、系统和计算机程序产品通常包括:在分区管理器中安装由多个逻辑分区使用的类型的内核;在分区管理器中安装指明了分配给多个逻辑分区中的每个逻辑分区的计算机资源的通用数据结构;以及由内核依赖于通用数据结构向逻辑分区提供内核服务。
通过以下对如附图中所图示的本发明示例性实施例的更具体说明,本发明的前述和其它目的、特征和优点将变得明显,在附图中,相同的参考标记通常代表本发明示例性实施例的相同部分。
附图说明
图1示出了包括根据本发明的实施例的在多个逻辑分区之间共享操作系统内核时有用的示例性计算机的自动计算机器系统的框图;
图2示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的示例性系统的功能框图;
图3A示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的示例性线程状态的状态图;
图3B示出了描述根据本发明的实施例的用于在共享内核的计算机系统中调度虚拟处理器的示例性虚拟处理器状态的状态图;
图4示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的另一个示例性系统的功能框图;
图5示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的示例性方法的流程图;
图6示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的另一个示例性方法的流程图;
图7A示出了对于内核全局可用的数据结构的示意图,该数据结构用于指明计算机系统上可用于逻辑分区的计算机资源;
图7B示出了指明分配给逻辑分区的计算机资源的通用数据结构的示意图;
图8示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的另一个示例性方法的流程图;以及
图9示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的另一个示例性方法的流程图。
具体实施方式
参考从图1开始的附图来说明根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的示例性方法、系统和产品。根据本发明在逻辑分区之间共享操作系统内核是在自动计算机器系统(也就是,一个或多个计算机)上实现的。图1示出了包括根据本发明的实施例的在逻辑分区之间共享操作系统内核时有用的示例性计算机152的自动计算机器系统的框图。图1的计算机152包括若干个物理处理器156以及通过系统总线160连接到物理处理器和计算机的其它组件的随机存取存储器(“RAM”)168。
存储于RAM 168中的是逻辑分区408、应用程序412、操作系统154、逻辑处理器106、分区管理器422、内核416和虚拟处理器122。逻辑分区(“LPAR”)408是数据结构和服务集,该数据结构和服务集使计算机资源能够分布在单个计算机之内,以使计算机运作,就好像它是两个或更多独立计算机一样。每个逻辑分区分配有它需要来操作的所有资源,就好像它是包括处理器时间、存储器、操作系统等的独立计算机一样。逻辑分区和可通过逻辑分区用于应用的资源有时统称为“虚拟机”。为便于说明,图1的系统仅包括一个逻辑分区,但是根据本发明的实施例的在多个逻辑分区之间共享内核的系统可以支持任意数目的逻辑分区。
应用程序412是用户级计算机程序代码模块,应用程序是必须按照通过操作系统到内核的调用来获得对计算机资源的访问的非特许代码。
操作系统154是系统软件层,该系统软件层调度线程而且提供用于使系统资源可为线程所用的功能,包括存储器存取、对输入/示出资源的访问等。操作系统还控制对于计算机资源访问的分配和授权。操作系统进行低级基本任务,诸如识别来自键盘的输入、发送输出到显示器屏幕、保持对磁盘驱动器上文件和目录的跟踪和控制诸如盘驱动器和打印机的外围设备。操作系统还负责安全,确保未授权用户不得访问系统而且线程仅仅访问它们被授权访问的资源。许多操作系统功能由内核(在此例中为共享内核)实现。根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的操作系统是多线程操作系统,其例子包括UNIXTM、LinuxTM、Microsoft XPTM、AIXTM、IBM的i5os和本领域技术人员将想到的许多其它例子。
逻辑处理器106是用于调度线程用以执行的操作系统结构。也就是,操作系统154调度线程用以在逻辑处理器106上执行,而不是调度线程用以在物理处理器或虚拟处理器上执行。在逻辑处理器上调度线程提供了方便的结构和处理,其中从线程的观点来看,该线程表现为使完整逻辑分区的所有资源在它的支配下。虚拟处理器是物理处理器的分摊小部分(fraction)。然而,逻辑处理器在逻辑上是一个完整处理器,尽管事实上它仅仅与机器上的所有其它执行一样物理上运行在小部分时间片中。因此,在LPAR中的逻辑处理器上运行的线程从它的观点来看表现为具有完整独立计算机的所有资源。也就是,逻辑处理器是如下对象:即在该对象上在分区中运行的操作系统中的调遣器调遣线程;而虚拟处理器是由分区管理器调遣的。在操作于ST模式中的LPAR中,逻辑处理器与虚拟处理器之间的对应是一对一的,每个虚拟处理器对应一个逻辑处理器。在操作于SMT模式中的LPAR中,逻辑处理器与虚拟处理器之间的对应是N对一的,其中N是虚拟处理器上支持的逻辑处理器的数目,也就是,每个虚拟处理器对应N个逻辑处理器。
虚拟处理器122是由数据结构和计算机程序指令组成的子系统,该子系统实现处理器时间向逻辑分区的分配。物理处理器的共享池支持部分物理处理器(在时间片中)向逻辑分区的分配。在时间片中共享的这部分物理处理器称作为‘虚拟处理器’。在共享处理池中保持的物理处理器在逻辑分区之间分享。在本说明书中的例子中,物理处理器是根据处理单位来共享,处理单位表示一个物理处理器的处理容量。将线程分配为在虚拟处理器上运行通常是通过将该线程分配为在虚拟处理器的逻辑处理器上运行来进行的。在ST模式中,每个虚拟处理器具有一个逻辑处理器。然而,在SMT模式中,每个虚拟处理器具有两个逻辑处理器。
图1的分区管理器422是在逻辑分区之下运行的系统软件层。也就是,分区管理器422在逻辑分区与底层计算机硬件(包括物理处理器的物理计算机组件)之间运行。分区管理器支持和实现在多个逻辑分区中建立和运行多个操作系统和应用。特别地,分区管理器支持用户或系统管理员建立分区、虚拟处理器和逻辑处理器。正如支持多个逻辑分区的计算机中的操作系统内核在逻辑处理器上调度和调遣线程一样,分区管理器在物理处理器上调度和调遣虚拟处理器。因为逻辑分区中的操作系统常常用来运行特定应用或应用集,所以使得分区管理器可以在单个计算机中运行多个操作系统及其应用,这减少了整体硬件成本。生产和测试系统可以在相同硬件中同时运行。此外,利用支持多个逻辑分区的分区管理器,诸如Windows和Linux的不同操作系统可以共享相同的底层计算机硬件。分区管理器是有时称作为“超级管理器”、“虚拟化管理器”或“虚拟机监视器”的软件类型。
在图1的例子中,分区管理器422是具有硬件支持的计算机软件模块,该模块包括计算机程序指令,这些指令能够在分区管理器中安装由多个逻辑分区使用的类型的内核416而且在分区管理器中安装指明了分配给多个逻辑分区中的每个逻辑分区的计算机资源的通用数据结构420。分区管理器422包括通用数据结构420,该通用数据结构的内容指明了分配给多个逻辑分区中的每个逻辑分区的计算机资源。通用数据结构420通过使用全局数据结构426来实现。全局数据结构426是有时称作为“设备树”的一类数据结构,即在系统初始程序加载时间从非易失性存储器中存储的信息中加载的结构。例如,在Unix的各种形式中,设备树可以从存储器路径位置‘/设备’和‘/dev.’处的盘上存储的信息中加载。在本例子中,全局数据结构426对于分区管理器中的内核是全局可用的,而且指明了在计算机系统上可用于逻辑分区的计算机资源,也就是,可用于在逻辑分区中运行的应用的计算机资源。全局数据结构426和通用数据结构420的例子将在下面参照图7A和7B更详细地加以说明。
在图1的例子中,分区管理器422包括内核416,该内核如图所示已经从逻辑分区408中的操作系统154移动415到分区管理器。内核是操作系统的核心。内核是有时也称为“系统执行程序”和“系统监视器”的一个或多个特许模块。内核是负责为在应用中和在其它操作系统组件中的执行线程提供对计算机系统硬件的安全访问的软件,所述访问包括对存储器、处理容量、输入/输出资源等的访问。内核还调度构成应用程序以及操作系统进程的执行线程。内核通常还提供对于进程间通信和同步的服务,诸如存储器锁、信号和信号量。内核通常还提供硬件抽象(为某类所有设备所通用的指令集),用以向应用和向操作系统的其它组件隐藏底层复杂性。硬件抽象组件又依赖于软件驱动器来提供为硬件设备的制造规范所特有的功能。简而言之,内核提供了实现如下各项内核服务:
●控制和调解对系统硬件的访问;
●实现和支持基本抽象:进程、线程、文件、设备等;
●分配和调度系统资源:存储器、处理器、盘、文件描述符、进程描述符、线程描述符等;
●加强系统资源的安全和保护;以及
●通过系统调用对用户和应用的服务请求做出响应。
在图1的例子中,内核416根据本发明的实施例改进为依赖于通用数据结构420提供对逻辑分区的内核服务。传统内核在引导时间加载它自己的设备树,该设备树指明了对于在分区中运行的应用和其它操作系统组件可用的所有系统硬件组件和其它资源,其中传统内核安装在操作系统中。然而,内核416不再位于单个分区中。内核416已经移动到分区管理器空间,而且可以由使用同类操作系统和内核的任意数目的逻辑分区使用。每个这样的逻辑分区可以要求不同的计算机硬件补充(complement)。因此,分区管理器422为每个逻辑分区提供通用数据结构420,该通用数据结构指明了可用的并且分配用于每个逻辑分区的计算机硬件和其它资源,而且内核416改进为根据在用于逻辑分区的通用数据结构中为该特定分区指明的硬件和资源来提供内核服务。
在图1的例子中,应用412、逻辑分区408、逻辑处理器106、操作系统154、分区管理器422、虚拟处理器122、内核416等计算机软件组件示出为设置于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网络的数据通信网络和以本领域技术人员将想到的其它方式来进行。通信适配器实现数据通信的硬件级,通过该硬件级,一个计算机直接或经过网络发送数据通信到另一计算机。根据本发明的实施例的用于确定目的地可用性的通信适配器的例子包括用于有线拨号通信的调制解调器、用于有线网络通信的以太网(IEEE 802.3)适配器和用于无线网络通信的802.11b适配器。
为了进一步说明,图2示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的示例性系统的功能框图。图2的系统包括两个逻辑分区,即处于ST模式的一个逻辑分区408和处于SMT模式的一个逻辑分区410。
图2的系统包括六个逻辑处理器,即用于逻辑分区408的两个逻辑处理器106和108,和用于逻辑分区410的四个逻辑处理器110、112、114和116。图2的系统还包括四个虚拟处理器,即分配给逻辑分区408的两个虚拟处理器122和124,和分配给逻辑分区410的两个虚拟处理器126和128。图2的系统还包括三个物理处理器156、130和132。在本例中,三个物理处理器156、130和132的处理容量以如下方式分摊给逻辑分区:
●物理处理器156的所有处理容量完全地分配给虚拟处理器122,使得逻辑处理器106具有整个物理处理器156为它所用。
●物理处理器130的一半处理容量分配给虚拟处理器124,使得逻辑处理器108具有物理处理器130的一半在时间片中可为它所用。
●物理处理器130的一半处理容量分配给虚拟处理器126。虚拟处理器126分配给在SMT模式中运行的逻辑分区410,两个逻辑处理器110和112用于虚拟处理器126。逻辑处理器110和逻辑处理器112各自具有物理处理器130的四分之一处理容量在时间片中可为它所用。
●物理处理器132的所有处理容量分配给虚拟处理器128。虚拟处理器128分配给在SMT模式中运行的逻辑分区410,两个逻辑处理器114和116用于虚拟处理器128。逻辑处理器114和逻辑处理器116各自具有物理处理器132的一半处理容量在时间片中可为它所用。
图2的系统包括分区管理器422。在图2的例子中,分区管理器422包括根据本发明的实施例的能在逻辑分区之间分享操作系统内核的计算机程序指令,这些指令包括在分区管理器中安装由多个逻辑分区408和410使用的类型的内核416和在分区管理器中安装指明了分配给多个逻辑分区中的每个逻辑分区的计算机资源的通用数据结构420和421。
图2的系统包括两个操作系统154和155,分别在逻辑分区408和逻辑分区410中。在本例中,可由应用或用户直接访问的操作系统特征保留在逻辑分区中。这样的特征包括对于图形用户接口(‘GUI’)190和191的支持。这样的特征也包括对外壳(shell)192和193的支持,这些外壳例如提供对操作系统实用程序和库功能的命令行接口。可由应用或用户直接访问的操作系统特征也包括系统实用程序194和195。系统实用程序包括通常可通过GUI或外壳访问的系统管理用程序,诸如,例如用以创建、打开或删除文件的程序、用以创建或导航文件系统目录的程序、用以读取和设置环境变量的程序、搜寻文件内的文本的程序等。
可由应用或用户直接访问的操作系统特征还包括系统调用库196和197。系统调用库显露(expose)应用编程接口(“API”),这些接口通过到内核416内部的特许软件例程中的调用来允许调用程序获得对依赖于硬件的服务和其它受保护的系统资源的访问。对内核空间中特许代码的这样的调用是通过从系统调用库的功能之内调用的中断或软件陷阱(trap)来实现。对系统调用库之内的功能调用的访问通常是通过将一个或多个系统调用库编译到应用或实用程序中或者在运行时间动态可加载的另一库中来实现。
逻辑分区408和410每一个共享相同的内核416,该内核从它在逻辑分区中的传统位置移走并且安装在分区管理器空间中,在这里它可用于要求同类内核的任何逻辑分区。内核416通过使用通用数据结构420,421对逻辑分区提供内核服务,每个逻辑分区可以要求不同的计算机资源,这些通用数据结构指明了分配给使用内核的每个逻辑分区的计算机资源。在本例中,内核416使用两个这样的通用数据结构420和421,分别用于逻辑分区408和410。
在使用通用数据结构来对逻辑分区提供内核服务时,内核416实现间接的存储器寻址以区分通用数据结构中的规范。这样的间接寻址是利用指针来实现的,这些指针是对通用数据结构本身的间接地址参考。以此方式,当分区管理器将逻辑分区的逻辑处理器调遣到运行状态时,分区管理器对内核提供指向通用数据结构的指针,该通用数据结构指明了分配给该逻辑分区的计算机资源。在响应于来自该分区中用户级软件的系统调用而提供内核服务时,内核使用来自指针所寻址的通用数据结构中的用于该分区的资源规范。逻辑处理器是通过分区管理器调用它的底层虚拟处理器来调遣的。在图2的例子中,调遣虚拟处理器122就是调遣逻辑处理器106。然而,调遣虚拟处理器126是调遣逻辑处理器110和112,因为在SMT模式中运行的逻辑分区410对于每个虚拟处理器具有两个逻辑处理器。
针对更具体的例子:当分区管理器422将逻辑分区408的逻辑处理器106调遣到运行状态时,内核416可以通过使用通用数据结构420和421对逻辑分区提供内核服务,这些通用数据结构指明了分配给使用该内核的每个逻辑分区的计算机资源。分区管理器422对内核416提供指向通用数据结构420的指针,该通用数据结构指明了分配给该逻辑分区408的计算机资源。指针510包含通用数据结构420的作为开始地址的地址,而且在响应于来自该逻辑分区408中用户级软件的系统调用而提供内核服务的同时,内核使用来自指针510所寻址的通用数据结构420中的用于该分区的资源规范。
类似地,当分区管理器422将逻辑分区410的逻辑处理器110和112调遣到运行状态时,分区管理器422对内核416提供指向通用数据结构412的指针510,该通用数据结构指明了分配给该逻辑分区410的计算机资源。指针510包含通用数据结构421的作为开始地址的地址,而且在响应于来自该逻辑分区410中用户级软件的系统调用而提供内核服务的同时,内核使用来自指针510所寻址的通用数据结构421中的用于该分区的资源规范。
在每个情况下,为了将内核服务重定向到用于逻辑分区的不同资源规范,在调遣逻辑分区的逻辑处理器时,分区管理器422仅需要维持可为内核所用的指针地址。如果新调遣的逻辑处理器来自与它的紧接前任相同的逻辑分区,则指针地址就已经正确地设置。如果新调遣的逻辑处理器来自与它的紧接前任的逻辑分区不同的逻辑分区,则指针地址重置为指向通用数据结构,该通用数据结构指明了用于新调用的逻辑处理器的逻辑分区的计算机资源。
为了进一步说明,图3A示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的示例性线程状态的状态图。图3A中的泡状区(bubble)表示线程状态。泡状区之间的箭头代表由内核功能实现的状态转变。图3A中代表的线程状态包括创建状态302、就绪状态304、运行状态306、等待状态308和停止状态310。当线程在另一线程的请求下首次创建时,该线程暂时以创建状态302驻留,以赋予内核为线程收集信息和资源的时间。一旦内核将线程预备为运行,就“启动”303,也就是移到就绪状态304。
就绪状态304中的线程在就绪队列(未示出)中排队等待运行机会。确定哪个就绪线程接下来将运行的进程称为“调度”。有许多调度算法,FIFO、轮替(Round Robin)、优先级等,而且它们中的任意算法可以使用在根据本发明的实施例的共享内核的系统中。用于将线程从就绪状态移到运行状态的内核功能称为调遣312。事实上,“调遣的”、“运行中”和“在运行状态”大体上同义。
当线程被调遣也就是在运行状态306中时,该线程当前分配为在逻辑处理器上执行。线程是否在物理上执行依赖于逻辑处理器的虚拟处理器目前是否通过它的分区管理器来调遣,也就是目前是否在物理处理器上的时间片中执行。用于逻辑处理器的就绪队列可以包含在就绪状态中等待在逻辑处理器上运行的一个、两个或更多线程。每次仅一个线程在逻辑处理器上置于运行状态中。
通过抢占或超时314,线程能够失去对逻辑处理器的占用,即从运行状态移动到就绪状态。当具有较高优先级的线程进入用于逻辑处理器的就绪队列时,抢占线程。如果线程在它的整个时间片中保留对逻辑处理器的占用,也就是留在运行状态中,则该线程超时。
线程也可以通过发出系统调用316而且进入等待状态308以等待系统调用的完成来离开运行状态306。这样的系统调用可以是对于由内核提供的任何服务的请求,包括例如用以在某时间段休眠或等待的人为请求、对于从盘中读取数据或向盘中写入数据的请求、对于从输入/输出资源读取或向输入/输出资源写入数据的请求等。
为了进一步说明,图3B示出了描述根据本发明的实施例的用于在计算机系统中调度虚拟处理器的示例性虚拟处理器状态的状态图。图3B中的泡状区表示虚拟处理器状态。泡状区之间的箭头表示由分区管理器的功能实现的状态转变。图3B中表示的虚拟处理器状态包括创建状态322、就绪状态324、运行状态326、等待状态328和停止状态330。当虚拟处理器通常在引导时间首次创建时,该虚拟处理器暂时驻留于创建状态322以赋予分区管理器为虚拟处理器收集信息和资源的时间。一旦分区管理器将虚拟处理器预备为运行,就“启动”232虚拟处理器,也就是移到就绪状态324。
就绪状态324中的虚拟处理器在就绪队列(未示出)中排队等待运行机会。分区管理器根据轮替、优先级等一个或多个调度算法来调度虚拟处理器运行。分区管理器将来自就绪队列的单个虚拟处理器从就绪状态调遣322到运行状态,该单个虚拟处理器当前最有资格实际占用对其分配虚拟处理器的物理处理器。每次仅一个虚拟处理器在物理处理器上置于运行状态。
通过抢占或通过超时334,虚拟处理器能够失去对物理处理器的占用而且从运行状态移动到就绪状态。当具有较高优先级的虚拟处理器进入用于物理处理器的就绪队列时,抢占虚拟处理器。如果虚拟处理器在它的整个时间片中保留对物理处理器的占用,也就是留在运行状态,则该虚拟处理器超时。
虚拟处理器也可以通过发出系统调用而且进入等待状态328以等待系统调用的完成来离开运行状态326。这样的系统调用包括用以在某时间段休眠或等待的人为请求、对于从盘读或向盘写数据的请求、对于从输入/输出资源读取或向输入/输出资源写入数据的请求等。例如,当在虚拟处理器上运行(也就是在逻辑分区的逻辑处理器上运行)的线程发出系统调用以等待键盘输入或从盘读文件时,虚拟处理器可以确定虚拟处理器在键击到达或者盘读取完成之前无需仅仅继续占用物理处理器却什么也不做。在这一环境下,虚拟处理器可以置自身于休眠336一时间段,例如十分之一秒。将虚拟处理器从等待状态返回到就绪状态称作为唤醒338虚拟处理器。
为了进一步说明,图4示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的又一个示例性系统的功能框图。为便于说明,图1的例子仅包括一个逻辑分区。为便于说明,图2的例子仅包括一个共享内核。然而,图4的系统包括在其之间共享三个共享内核的九个逻辑分区,进一步说明根据本发明的实施例的用于共享内核的系统可以在任意数目的逻辑分区之间共享任意数目的内核这一事实。图4的系统包括每个共享内核416的逻辑分区408和410。图4的系统还包括,每个共享内核430的逻辑分区434、436和438。图4的系统也包括每个共享内核432的逻辑分区440、442、444和446。
在图4的系统中,分区管理器422具有中断处理器488,而每个内核416、430和432具有中断处理器450、452和454。中断处理器是受保护的软件例程,该例程截获系统调用而且根据截获类型将它们传递到子例程。请求盘I/O服务的中断传递到盘驱动器器。从键盘请求输入的中断传递到键盘驱动器。依此类推。中断处理器对系统调用的截获由硬件支持,要求其中存储有中断处理器地址的受保护的寄存器或存储器位置——受保护是为了只有特许代码而不是普通用户代码能够许可对受保护的计算机资源的访问。然而,在图4的系统中,由于共享内核不再嵌入于单个逻辑分区的操作系统中,所以在任何特定系统调用与特定内核之间没有固有的一对一关系。因此图4的系统配置为通过它的分区管理器422将用于所有中断处理的受保护的寄存器或存储器变量设置成分区管理器的中断处理器448的起始地址来将所有系统调用456、458和460矢量化。分区管理器的中断处理器448然后将系统调用传递462、464和466到内核的中断处理器,先通过使用如例如在表1中说明的数据结构来确定该中断要传递到的哪个内核:
表1 | ||
逻辑分区 | 内核 | 结构指针 |
408 | 416 | structPtr1 |
410 | 416 | structPtr2 |
434 | 430 | structPtr3 |
436 | 430 | structPtr4 |
438 | 430 | structPtr5 |
440 | 432 | structPtr6 |
442 | 432 | structPtr7 |
444 | 432 | structPtr8 |
446 | 432 | structPtr9 |
表1的每个记录关联了逻辑分区标识符、内核标识符和指向通用数据结构的指针,该通用数据结构指明了分配给特定逻辑分区的具体资源。分区管理器的中断处理器448在截获来自逻辑分区的系统调用时可以通过使用逻辑分区标识符在这样的表中查找将系统调用传递到的内核的标识。
正如它不仅关联了内核标识符而且关联了指向用于逻辑分区的通用数据结构,例如表1的结构可以实现双重任务。当分配管理器将逻辑分区的逻辑处理器调遣到运行状态而且对共享内核提供指向通用数据结构的指针,该通用数据结构指明了分配给该逻辑分区的计算机资源时,分区管理器可以使用逻辑分区的标识来确定将哪个指针值提供给内核。
为了进一步说明,图5示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核416的示例性方法的流程图,该方法包括在分区管理器422中安装402由多个逻辑分区408和410使用的类型的内核416。安装这样的内核可以通过使用分区管理器的子例程来进行,例如这些子例程在盘驱动器上安装具有其引导扇区的内核,使得可以在用于内核的引导时间访问引导扇区。这样的子例程通常是由系统管理员或其它授权用户通过由分区管理器经过主分区而显的GUI工具或命令行接口或者通过直接耦合到分区管理器的命令控制台来访问。
图5的方法还包括在分区管理器422中安装指明了分配给多个逻辑分区中的每个逻辑分区的计算机资源的通用数据结构420。安装通用数据结构可以通过使用为此目的而改进的分区管理器的子例程来进行。分区管理器通常提供用于创建和维持逻辑分区的子例程。这样的子例程根据本发明的实施例改进为包括这样的功能,即这些功能创建通用数据结构而且借助如表1中以及图8和9中的表514所示的逻辑分区标识符将指针关联到通用数据结构。这样的子例程通常是由系统管理员或其它授权用户通过由分区管理器经过主分区而显的GUI工具或命令行接口或者通过直接耦合到分区管理器的命令控制台来访问。
图5的方法还包括由内核416依赖于通用数据结构向逻辑分区提供406内核服务。传统内核在内核本身之内维护指明了分配给分区的计算机资源的数据结构,内核在该分区中作为操作系统的一部分来运行。当内核根据本发明的实施例改进为移到它的操作系统以外而且在分区之间共享时,该内核就改型为从在分区管理器空间中的内核以外建立和维持的通用数据结构访问与用于分区的计算机资源有关的信息。来自在逻辑分区中运行的软件应用412和414的对共享内核416的系统调用通常依赖于由内核保护和管理的计算机资源来请求对服务的访问。这样的共享内核在响应于来自在逻辑分区中运行的软件的系统调用时从通用数据结构420中访问与用于分区的计算机资源有关的所需信息,这些通用数据结构的内容指明了分配用于该分区的计算机硬件和其它资源。
为了进一步说明,图6示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核416的又一个示例性方法的流程图。图6的方法类似于图5的方法。也就是,图6的方法包括以下步骤:在分区管理器422中安装402由多个逻辑分区408和410使用的类型的内核416;在分区管理器422中安装404通用数据结构420,这些通用数据结构指明了分配给多个逻辑分区中的每个逻辑分区的计算机资源;以及依赖于通用数据结构来提供406内核服务,所有这些步骤大体上与上面参照图5的方法所述的步骤一样地操作。
然而,图6的方法还包括:在整个计算机系统的初始程序加载时,在对于分区管理器中的内核全局可用的数据结构426中,指明在计算机系统上可用于逻辑分区的计算机资源。初始程序加载可以出现在功率初始地施加到整个计算机系统时,或者初始程序加载可以出现在整个系统的重置或热重启时。其区别在于:初始程序加载是整个系统(分区管理器和所有现用逻辑分区)的重新加载,而不是此类逻辑分区本身的激活。在本说明书中,调动(bring up)整个系统称作为‘初始程序加载’,而激活逻辑分区称作为“引导”逻辑分区。
为了进一步说明,图7A示出了可全局地为内核所用的数据结构的示意图,该数据结构指明了在计算机系统上可用于逻辑分区的计算机资源。在图7A的数据结构中指明的计算机资源包括盘驱动器、显示器适配器、IDE控制器、1394或‘火线’控制器、键盘、鼠标、调制解调器、监视器等。图7A的数据结构是有时称作为‘设备树’的一类结构,即在系统初始程序加载时间从非易失性存储器中存储的信息中加载的结构。例如,在各种Unix形式中,设备树可以从路径位置‘/设备’和‘/dev.’处的盘上存储的信息中加载。使这样的结构对于根据本发明的实施例的共享内核的系统中的分区管理器中的内核而言是全局可用的,而且该结构指明了在计算机系统上可用于逻辑分区的计算机资源,也就是,可用于在逻辑分区中运行应用和其它软件的计算机资源。
图7A的数据结构被描述为树结构,但是这仅是为了说明而不是限制本发明。指明在计算机系统上可用于逻辑分区的计算机资源的数据结构例如可以实现为C型结构:
struct{
char DiskDrives[256];
char DisplayAdapters[256];
char IDE_Controllers[256];
char IEEE_1394_Controllers[256];
char Keyboards[256];
char MiceAndOtherPointingDevices[256];
char Monitors[256];
char NetworkAdapters[256];
…
}Resources-SystemGlobalStructure;
指明在计算机系统上可用于逻辑分区的计算机资源的数据结构可以实现为诸如C型结构、数组、链接列表和表以及本领域技术人员将想到的其它种类的结构。
此外,在图6的方法中,安装404通用数据结构还包括:依赖于全局地可为分区管理器的所有内核可用的资源规范426,由内核在用于逻辑分区的引导时间在通用数据结构中指明428分配用于所引导的逻辑分区的计算机系统的计算机资源。如上所述,全局地可为分区管理器的所有内核所用的资源规范426是在对于内核全局可用的数据结构中提供的,该数据结构用于指明在计算机系统上可用的计算机资源。
指明428分配用于所引导的逻辑分区的计算机系统的计算机资源可以通过从全局数据结构中提取在表示逻辑分区的数据结构中识别的资源规范来进行。当通过由分区管理器经过主分区而显的GUI工具或命令行接口或者通过直接耦合到分区管理器的命令控制台来限定每个逻辑分区时,表示每个逻辑分区的数据是由系统管理员或其它授权用户创建。在本例中,内核的引导例程改进为通过以下步骤来指明428分配用于所引导的逻辑分区的计算机系统的计算机资源:通过在诸如图7A中所示那样的全局数据结构中提取在表示逻辑分区的数据结构中识别的资源规范,并且将资源规范安装在用于逻辑分区的通用数据结构,诸如图7B中所示的通用数据结构中。
为了进一步说明,图7B示出了指明分配给逻辑分区的计算机资源的通用数据结构的示意图。类似于图7A的结构,图7B的数据结构是有时称作为‘设备树’的一类数据结构,即在内核引导时间从非易失性存储器中存储的信息中加载的结构。例如,在各种Unix形式中,设备树可以从路径位置‘/设备’和‘/dev.’处的盘上存储的信息中加载。
图7B的数据结构被描述为树结构,但是这仅仅是为了说明而不是限制本发明。指明分配给逻辑分区的计算机资源的数据结构例如可以实现为C型结构:
struct{
char DiskDrives[256];
char DisplayAdapters[256];
char IDE_Controllers[256];
char IEEE_1394_Controllers[256];
char Keyboards[256];
char MiceAndOtherPointingDevices[256];
char Monitors[256];
char NetworkAdapters[256];
…
}Resources-PartitionGenericStructure;
在每个结构为了对分区管理器的所有共享内核的数据访问而提供相同接口这一意义上,这样的结构是通用的。如果将紧邻的上部的C型结构看作为指明了分配给逻辑分区的计算机资源的通用数据结构的例子,则每个内核可以拥有如下创建的指向这样的结构的指针:
struct*structPtr=&Resources-PartitionGenericStructure;
然后,每个内核可以例如通过如下来访问用于逻辑分区的显示器适配器规范:
char*displayAdapterInfo=strcpy(structPtr->DisplayAdapters);
而且,每个内核可以例如通过如下来访问用于逻辑分区的盘驱动器规范:
strcpy(diskDriveInfo,structPtr->DiskDrives);
而且,每个内核可以例如通过如下来访问用于逻辑分区的具有集成驱动电子设备(‘integrated drive electronic IDE’)的盘驱动器的规范:
strcpy(IDE_Info,structPtr->IDE_Controllers);
依此类推,对同类信息的所有参考都以相同的句法来实现,尽管通过参考而取回的信息将因逻辑分区而各异。从逻辑分区到逻辑分区的变动是通过改变structPtr的值来实现的。structPtr的值对于每个逻辑分区都是不同的,因为structPtr的值是由分区管理器设置成指向用于每个逻辑分区的不同通用数据结构。在本例中,使用名为‘structPtr’的指向通用数据结构的指针,每当分区管理器调遣了使用内核的逻辑分区的逻辑处理器时,就由分区管理器检查用于共享内核的structPtr的值。
除了实现为C型结构之外,指明分配给逻辑分区的计算机资源的通用数据结构例如可以实现为数组,该数组具有对子数组的标准化偏移,每个子数组包含分配给逻辑分区的资源类型的规范。指明分配给逻辑分区的计算机资源的通用数据结构可以实现为C型结构、数组、链接列表、表以及本领域技术人员将想到的其它种类的结构。
为了进一步说明,图8示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核416的又一个示例性方法的流程图。图8的方法类似于图5的方法。也就是,图8的方法包括以下步骤:在分区管理器422中安装402由多个逻辑分区408和410使用的类型的内核416;在分区管理器422中安装指明了分配给多个逻辑分区中的每个逻辑分区的计算机资源的通用数据结构420;以及依赖于通用数据结构来提供406内核服务,所有这些步骤大体上与上面参照图5的方法所说明的步骤一样地操作。
然而,图8的方法还包括:由分区管理器422将使用内核416的逻辑分区408的逻辑处理器506调遣502到运行状态。分区管理器通过如下步骤来调遣逻辑处理器:根据调度算法来选择在用于物理处理器的就绪队列中在等待状态等待的对应虚拟处理器而且许可虚拟处理器占用物理处理器。
在响应于通过在新调遣的逻辑处理器上的逻辑分区中运行的线程来实现的系统调用时,内核将需要知道多种通用数据结构中的哪一种指明了用于新调遣的逻辑处理器的逻辑分区的计算机资源。因此,图8的方法还包括向内核提供504指向分区管理器通用数据结构420的指针510,该通用数据结构指明了分配给逻辑分区(也就是新调遣的逻辑处理器的逻辑分区)的计算机资源。如果新调遣的逻辑处理器来自于与其紧接前任相同的逻辑分区,也就是如下逻辑处理器,该逻辑处理器的虚拟处理器刚失去对其上现在运行对应虚拟处理器的物理处理器的占用,则指针地址已经正确地设置。如果新调遣的逻辑处理器来自与其紧接前任的逻辑分区不同的逻辑分区,则指针地址重置为指向通用数据结构,该通用数据结构指明了用于新调遣的逻辑处理器的逻辑分区的计算机资源。分区管理器可以通过在数据结构中依赖于逻辑分区的标识对用于指针的正确值进行查找来知道该值,该数据结构关联了指针值和分区标识,诸如上面在表1中或者例如在图8和9中的表514中所示的数据结构。
图8的方法还包括:通过分区管理器422将来自在逻辑分区408和410中运行的应用程序412和414的对内核的内核服务418的系统调用矢量化512。分区管理器可以通过在用于所有中断处理的受保护寄存器或受保护存储器变量中设置如下指针来将对于内核的系统调用矢量化,该指针指向了分区管理器的中断处理器(图4中的448)的起始地址。然后,分区管理器的中断处理器将系统调用传递到内核的中断处理器(图4中的450、452、454),首先通过使用如例如上面在表1中或者在图8和9中、的表514中所示那样的数据结构来确定该中断要传递到的那个内核。表1的每个记录关联了逻辑分区标识符和内核标识符。分区管理器的中断处理器在截获来自逻辑分区的系统调用时可以通过使用逻辑分区的标识在这样的表中查找要将系统调用传递到的内核的标识。
为了进一步说明,图9示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核416的又一个示例性方法的流程图。图9的方法类似于图5的方法。也就是,图9的方法包括以下步骤:在分区管理器422中安装402由多个逻辑分区408和410使用的类型的内核416;在分区管理器422中安装404通用数据结构420,这些通用数据结构420指明了分配给多个逻辑分区中的每个逻辑分区的计算机资源;以及依赖于所述通用数据结构来提供406内核服务,所有这些步骤大体上与上面参照图5所说明的步骤一样地操作。然而,图9的方法还包括以下步骤:为多个逻辑分区408和410中的一个或多个逻辑分区更新904内核416,包括更新904数据结构514中的内核标识符518,该数据结构514将内核标识符与受到更新的逻辑分区的标识符516相关联。
参照图4进一步说明为逻辑分区更新内核。图4示出了描述根据本发明的实施例的用于在逻辑分区之间共享操作系统内核的示例性系统的功能框图,其中该示例性系统包括在其之间共享三个共享内核的九个逻辑分区。出于说明之目的,假设内核430是用于操作系统版本的内核,而内核432是用于相同操作系统的较迟更高级版本的内核。旧内核满足于在逻辑分区434,436中运行的应用。然而,系统管理员判定在逻辑分区438中运行的应用将受益于对内核的较迟版本的更新特征的访问。管理员可以通过更新数据结构中的内核标识符来为逻辑分区438来更新904内核,该数据结构将内核标识符与受到更新的逻辑分区的标识符相关联。该更新可以通过系统管理员登陆到分区管理器的控制台来实现,该控制台提供了用以更新诸如表1中所示那样的数据结构的GUI工具。表2说明了更新后的关联数据值:
表2 | ||
逻辑分区 | 内核 | 结构指针 |
408 | 416 | structPtr1 |
410 | 416 | structPtr2 |
434 | 430 | structPtr3 |
436 | 430 | structPtr4 |
438 | 432 | structPtr5 |
440 | 432 | structPtr6 |
442 | 432 | structPtr7 |
444 | 432 | structPtr8 |
446 | 432 | structPtr9 |
表1与表2之间的唯一差别在于与逻辑分区438相关联的内核标识符的值,该值从430更新到432。请注意:无需更新指向通用数据结构的指针,该通用数据结构指明了分配用于受到更新的逻辑分区的的计算机资源;该指针仍然设置成‘structPtr4’。更新到内核较迟版本的逻辑分区438继续使用相同的通用数据结构来指明它在更新之前使用的它的计算机资源。
在用于在逻辑分区之间共享操作系统内核的完全功能计算机系统的上下文中大体描述了本发明的实施例。然而,本领域技术人员将认识到:本发明也可以实施于在用于与任何适当的数据处理系统一起使用的信号承载介质上设置的计算机程序产品中。这样的信号承载介质可以是传输介质或用于机器可读信息的可记录介质,包括磁介质、光介质或其它适当的介质。可记录介质的例子包括硬驱动器或软盘中的磁盘、用于光驱的致密盘、磁带以及本领域技术人员将想到的其它例子。传输介质的例子包括用于语音通信的电话网络以及数字数据通信网络,诸如,例如EthernetsTM和互联协议和万维网通信的网络。本领域技术人员将立即认识到:具有适当编程装置的任何计算机系统将能执行如在程序产品中实施的本发明方法的步骤。本领域技术人员将认识到:尽管在本说明书中说明的一些示例性实施例是面向在计算机硬件上安装和执行的软件,但是实现为固件或硬件的备选实施例仍在本发明的范围之内。
从前面的说明中将理解到:在不脱离本发明的真实精神情况下,可以在其各种实施例中进行改型和变化。本说明书中的说明仅仅出于说明之目的而不应在限制性意义上来理解。本发明的范围仅仅由所附权利要求书的语言来限制。
Claims (13)
1.一种用于在逻辑分区之间共享操作系统内核的方法,该方法包括:
在分区管理器中安装由多个逻辑分区使用的类型的内核;
在该分区管理器中安装指明了分配给所述多个逻辑分区中的每个逻辑分区的计算机资源的通用数据结构;以及
由该内核依赖于所述通用数据结构向所述逻辑分区提供内核服务。
2.权利要求1的方法,还包括:
由该分区管理器将使用该内核的逻辑分区的逻辑处理器调遣到运行状态;以及
向该内核提供指向该分区管理器的通用数据结构的指针,该通用数据结构指明了分配给该逻辑分区的计算机资源。
3.权利要求1的方法,还包括:通过该分区管理器将来自在所述逻辑分区中运行的应用程序的对该内核的内核服务的系统调用矢量化。
4.权利要求1的方法,还包括:在整个计算机系统的初始程序加载时,在对于该分区管理器中的内核全局可用的数据结构中指明在该计算机系统上可用于逻辑分区的计算机资源。
5.权利要求1的方法,其中安装通用数据结构还包括:由该内核依赖于对于该分区管理器的所有内核全局可用的资源规范,在用于逻辑分区的引导时间,在通用数据结构中指明分配用于所引导的逻辑分区的该计算机系统的计算机资源。
6.权利要求1的方法,还包括:为所述多个逻辑分区中的一个或多个逻辑分区更新该内核,包括更新数据结构中的内核标识符和指向通用数据结构的指针,该数据结构将内核标识符与受到该更新的所述逻辑分区的标识符相关联,该通用数据结构指明分配用于受到该更新的每个逻辑分区的计算机资源。
7.一种用于在逻辑分区之间共享操作系统内核的系统,该系统包括计算机处理器和可操作地耦合到该计算机处理器的计算机存储器,该计算机存储器在其之内设置有能执行如下步骤的计算机程序指令:
在分区管理器中安装由多个逻辑分区使用的类型的内核;
在该分区管理器中安装指明了分配给所述多个逻辑分区中的每个逻辑分区的计算机资源的通用数据结构;以及
由该内核依赖于所述通用数据结构向所述逻辑分区提供内核服务。
8.权利要求7的系统,还包括能执行如下步骤的计算机程序指令:
由该分区管理器将使用该内核的逻辑分区的逻辑处理器调遣到运行状态;以及
向该内核提供指向该分区管理器的通用数据结构的指针,该通用数据结构指明了分配给该逻辑分区的计算机资源。
9.权利要求7的系统,还包括能执行如下步骤的计算机程序指令:通过该分区管理器将来自在所述逻辑分区中运行的应用程序的对该内核的内核服务的系统调用矢量化。
10.权利要求7的系统,还包括能执行如下步骤的计算机程序指令:在整个计算机系统的初始程序加载时,在对于该分区管理器中的内核全局可用的数据结构中指明在该计算机系统上可用于逻辑分区的计算机资源。
11.权利要求7的系统,其中安装通用数据结构还包括:由该内核依赖于对于该分区管理器的所有内核全局可用的资源规范,在用于逻辑分区的引导时间,在通用数据结构中指明分配用于所引导的逻辑分区的该计算机系统的计算机资源。
12.权利要求7的系统,还包括能执行如下步骤的计算机程序指令:为所述多个逻辑分区中的一个或多个逻辑分区更新该内核,包括更新数据结构中的内核标识符和指向通用数据结构的指针,该数据结构将内核标识符与受到该更新的所述逻辑分区的标识符相关联,该通用数据结构指明分配用于受到该更新的每个逻辑分区的计算机资源。
13.一种用于在逻辑分区之间共享操作系统内核的计算机程序产品,该计算机程序产品设置于信号承载介质上,该计算机程序产品包括能实现前述方法权利要求的任一项所述的方法的计算机程序指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/301,113 US9189291B2 (en) | 2005-12-12 | 2005-12-12 | Sharing a kernel of an operating system among logical partitions |
US11/301,113 | 2005-12-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1983192A true CN1983192A (zh) | 2007-06-20 |
CN100495345C CN100495345C (zh) | 2009-06-03 |
Family
ID=38140966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200610108400XA Active CN100495345C (zh) | 2005-12-12 | 2006-08-03 | 用于在逻辑分区之间共享操作系统内核的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9189291B2 (zh) |
KR (1) | KR101020392B1 (zh) |
CN (1) | CN100495345C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103262025A (zh) * | 2010-10-01 | 2013-08-21 | Flex Electronics ID Co.,Ltd. | 使用应用空间api的跨环境通信 |
CN104220987A (zh) * | 2012-04-18 | 2014-12-17 | 国际商业机器公司 | 应用安装 |
CN106020829A (zh) * | 2009-07-20 | 2016-10-12 | 谷歌技术控股有限责任公司 | 在多环境操作系统中多个环境之间切换的系统和方法 |
US9678810B2 (en) | 2010-10-01 | 2017-06-13 | Z124 | Multi-operating system |
CN109375949A (zh) * | 2012-09-27 | 2019-02-22 | 英特尔公司 | 具有多个核、共享的核扩展逻辑及共享的核扩展利用指令的处理器 |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7840763B2 (en) * | 2004-03-12 | 2010-11-23 | Sca Technica, Inc. | Methods and systems for achieving high assurance computing using low assurance operating systems and processes |
US9189291B2 (en) | 2005-12-12 | 2015-11-17 | International Business Machines Corporation | Sharing a kernel of an operating system among logical partitions |
US9201703B2 (en) * | 2006-06-07 | 2015-12-01 | International Business Machines Corporation | Sharing kernel services among kernels |
JP2008033392A (ja) * | 2006-07-26 | 2008-02-14 | Nec Corp | 仮想計算機システム及びその動作方法 |
US7711946B2 (en) * | 2006-08-07 | 2010-05-04 | Oracle America, Inc. | Method and apparatus for using filesystem operations to initiate device naming |
US8024738B2 (en) * | 2006-08-25 | 2011-09-20 | International Business Machines Corporation | Method and system for distributing unused processor cycles within a dispatch window |
US8032899B2 (en) * | 2006-10-26 | 2011-10-04 | International Business Machines Corporation | Providing policy-based operating system services in a hypervisor on a computing system |
US8694999B2 (en) * | 2006-12-07 | 2014-04-08 | Wind River Systems, Inc. | Cooperative scheduling of multiple partitions in a single time window |
WO2008115012A1 (en) * | 2007-03-20 | 2008-09-25 | Sanggyu Lee | Movable virtual machine image |
US10452820B2 (en) * | 2007-06-26 | 2019-10-22 | International Business Machines Corporation | Thread-based software license management |
WO2009039376A2 (en) * | 2007-09-20 | 2009-03-26 | C & S Operations, Inc. | Computer system with tunneling |
US8424078B2 (en) * | 2007-11-06 | 2013-04-16 | International Business Machines Corporation | Methodology for secure application partitioning enablement |
US20100017026A1 (en) * | 2008-07-21 | 2010-01-21 | Honeywell International Inc. | Robotic system with simulation and mission partitions |
US8843927B2 (en) * | 2009-04-23 | 2014-09-23 | Microsoft Corporation | Monitoring and updating tasks arrival and completion statistics without data locking synchronization |
US8505003B2 (en) * | 2010-04-28 | 2013-08-06 | Novell, Inc. | System and method for upgrading kernels in cloud computing environments |
WO2012044546A2 (en) * | 2010-10-01 | 2012-04-05 | Imerj, Llc | Auto-waking of a suspended os in a dockable system |
US8919848B2 (en) | 2011-11-16 | 2014-12-30 | Flextronics Ap, Llc | Universal console chassis for the car |
US9262196B2 (en) * | 2010-11-30 | 2016-02-16 | International Business Machines Corporation | Virtual machine deployment planning method and associated apparatus |
US8490091B2 (en) | 2011-03-28 | 2013-07-16 | International Business Machines Corporation | Virtual machine placement to improve memory utilization |
US9122551B2 (en) * | 2011-06-17 | 2015-09-01 | The Boeing Comapny | Methods and systems for generating read-only operating systems |
KR101859188B1 (ko) * | 2011-09-26 | 2018-06-29 | 삼성전자주식회사 | 매니코어 시스템에서의 파티션 스케줄링 장치 및 방법 |
US9116803B1 (en) * | 2011-09-30 | 2015-08-25 | Symantec Corporation | Placement of virtual machines based on page commonality |
WO2014141419A1 (ja) * | 2013-03-14 | 2014-09-18 | 株式会社日立製作所 | 仮想計算機システムおよびスケジューリング方法 |
US9772867B2 (en) * | 2014-03-27 | 2017-09-26 | International Business Machines Corporation | Control area for managing multiple threads in a computer |
US9569195B2 (en) | 2014-05-13 | 2017-02-14 | Zscaler, Inc. | Systems and methods for live operating system upgrades of inline cloud servers |
US20160110235A1 (en) * | 2014-10-17 | 2016-04-21 | D2 Technologies Inc. | Electronic device for Internet Protocol Communications |
DE102016200777A1 (de) * | 2016-01-21 | 2017-07-27 | Robert Bosch Gmbh | Verfahren und Vorrichtung zum Überwachen und Kontrollieren quasi-paralleler Ausführungsstränge in einem ereignisorientierten Betriebssystem |
CN109070345B (zh) * | 2016-02-23 | 2021-08-06 | Abb瑞士股份有限公司 | 机器人控制器系统及方法 |
US9928056B1 (en) | 2016-10-10 | 2018-03-27 | International Business Machines Corporation | Operating system update management |
US10235083B1 (en) * | 2017-08-16 | 2019-03-19 | Veritas Technologies Llc | Systems and methods for efficiently moving data within a filesystem |
KR20200065244A (ko) * | 2018-11-30 | 2020-06-09 | 주식회사 알티스트 | 시공간 파티셔닝 커널을 위한 파티션 간 통신의 동시성 분석 방법 |
US11960596B2 (en) * | 2021-03-11 | 2024-04-16 | Xilinx, Inc. | Network interface device |
US20230134872A1 (en) * | 2021-10-29 | 2023-05-04 | Blackberry Limited | Thread state transitions |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3304524B2 (ja) | 1993-08-11 | 2002-07-22 | 富士通株式会社 | システムコール関数処理装置 |
US5909545A (en) * | 1996-01-19 | 1999-06-01 | Tridia Corporation | Method and system for on demand downloading of module to enable remote control of an application program over a network |
US5956507A (en) * | 1996-05-14 | 1999-09-21 | Shearer, Jr.; Bennie L. | Dynamic alteration of operating system kernel resource tables |
JP2000512044A (ja) * | 1996-06-07 | 2000-09-12 | エイ・ティ・アンド・ティ・コーポレーション | インターネット・ファイル・システム |
US6075939A (en) * | 1997-09-27 | 2000-06-13 | Lynx Real-Trime Systems, Inc. | Tightly coupled, scalable module based micro-kernel operating system architecture |
US6647508B2 (en) * | 1997-11-04 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation |
US6571274B1 (en) * | 1998-11-05 | 2003-05-27 | Beas Systems, Inc. | Clustered enterprise Java™ in a secure distributed processing system |
US6691146B1 (en) * | 1999-05-19 | 2004-02-10 | International Business Machines Corporation | Logical partition manager and method |
US6279046B1 (en) * | 1999-05-19 | 2001-08-21 | International Business Machines Corporation | Event-driven communications interface for logically-partitioned computer |
US7219354B1 (en) * | 2000-12-22 | 2007-05-15 | Ensim Corporation | Virtualizing super-user privileges for multiple virtual processes |
US7461148B1 (en) * | 2001-02-16 | 2008-12-02 | Swsoft Holdings, Ltd. | Virtual private server with isolation of system components |
US8549114B2 (en) * | 2002-06-12 | 2013-10-01 | Bladelogic, Inc. | Method and system for model-based heterogeneous server configuration management |
ATE409904T1 (de) * | 2003-04-09 | 2008-10-15 | Jaluna Sa | Betriebssysteme |
US20040226017A1 (en) * | 2003-05-09 | 2004-11-11 | Leonard Ozgur C. | Mechanism for associating resource pools with operating system partitions |
US20050125486A1 (en) * | 2003-11-20 | 2005-06-09 | Microsoft Corporation | Decentralized operating system |
JP2005151497A (ja) * | 2003-11-20 | 2005-06-09 | Sharp Corp | 情報処理装置,情報処理システム,及びそれらの制御プログラム |
US7392524B2 (en) * | 2004-04-06 | 2008-06-24 | International Business Machines Corporation | Method, system, and storage medium for managing computer processing functions |
US7120753B2 (en) * | 2004-04-20 | 2006-10-10 | International Business Machines Corporation | System and method for dynamically adjusting read ahead values based upon memory usage |
US7249208B2 (en) | 2004-05-27 | 2007-07-24 | International Business Machines Corporation | System and method for extending the cross-memory descriptor to describe another partition's memory |
US20060010446A1 (en) * | 2004-07-06 | 2006-01-12 | Desai Rajiv S | Method and system for concurrent execution of multiple kernels |
US9189291B2 (en) | 2005-12-12 | 2015-11-17 | International Business Machines Corporation | Sharing a kernel of an operating system among logical partitions |
WO2007115425A1 (en) * | 2006-03-30 | 2007-10-18 | Intel Corporation | Method and apparatus for supporting heterogeneous virtualization |
-
2005
- 2005-12-12 US US11/301,113 patent/US9189291B2/en active Active
-
2006
- 2006-08-03 CN CNB200610108400XA patent/CN100495345C/zh active Active
- 2006-11-30 KR KR1020060119607A patent/KR101020392B1/ko active IP Right Grant
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106020829A (zh) * | 2009-07-20 | 2016-10-12 | 谷歌技术控股有限责任公司 | 在多环境操作系统中多个环境之间切换的系统和方法 |
CN103262025A (zh) * | 2010-10-01 | 2013-08-21 | Flex Electronics ID Co.,Ltd. | 使用应用空间api的跨环境通信 |
US9678810B2 (en) | 2010-10-01 | 2017-06-13 | Z124 | Multi-operating system |
CN104220987A (zh) * | 2012-04-18 | 2014-12-17 | 国际商业机器公司 | 应用安装 |
CN109375949A (zh) * | 2012-09-27 | 2019-02-22 | 英特尔公司 | 具有多个核、共享的核扩展逻辑及共享的核扩展利用指令的处理器 |
CN109375949B (zh) * | 2012-09-27 | 2023-05-16 | 英特尔公司 | 一种具有多个核的处理器 |
US12086603B2 (en) | 2012-09-27 | 2024-09-10 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
Also Published As
Publication number | Publication date |
---|---|
US9189291B2 (en) | 2015-11-17 |
CN100495345C (zh) | 2009-06-03 |
KR20070062412A (ko) | 2007-06-15 |
KR101020392B1 (ko) | 2011-03-08 |
US20070136721A1 (en) | 2007-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100495345C (zh) | 用于在逻辑分区之间共享操作系统内核的方法和系统 | |
CN100501681C (zh) | 用于在内核间共享内核服务的方法和系统 | |
US8612977B2 (en) | Wake-and-go mechanism with software save of thread state | |
US8341635B2 (en) | Hardware wake-and-go mechanism with look-ahead polling | |
CN102341783B (zh) | 用于各个处理器的辅助中断虚拟化的访客中断控制器 | |
US8386822B2 (en) | Wake-and-go mechanism with data monitoring | |
US8250396B2 (en) | Hardware wake-and-go mechanism for a data processing system | |
CN100570565C (zh) | 在管理程序中提供基于策略的操作系统服务的方法和系统 | |
US8452947B2 (en) | Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms | |
US8516484B2 (en) | Wake-and-go mechanism for a data processing system | |
US8880853B2 (en) | CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock | |
US8312458B2 (en) | Central repository for wake-and-go mechanism | |
CN101118503B (zh) | 再分配处理环境的物理处理器的方法和系统 | |
US8788795B2 (en) | Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors | |
US8640141B2 (en) | Wake-and-go mechanism with hardware private array | |
US8171476B2 (en) | Wake-and-go mechanism with prioritization of threads | |
US8145849B2 (en) | Wake-and-go mechanism with system bus response | |
CN100533393C (zh) | 用于在多处理器环境中管理对共享资源的存取的方法 | |
US8732683B2 (en) | Compiler providing idiom to idiom accelerator | |
US7941624B2 (en) | Parallel memory migration | |
US20090199028A1 (en) | Wake-and-Go Mechanism with Data Exclusivity | |
US20100293341A1 (en) | Wake-and-Go Mechanism with Exclusive System Bus Response | |
US20100199062A1 (en) | Managing requests of operating systems executing in virtual machines | |
US20100287341A1 (en) | Wake-and-Go Mechanism with System Address Bus Transaction Master | |
US20120159126A1 (en) | Programming Language Exposing Idiom Calls |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |