单个计算机系统上运行的多个内核之间的一致同步的制作方法

文档序号:6479126阅读:225来源:国知局
专利名称:单个计算机系统上运行的多个内核之间的一致同步的制作方法
技术领域
本发明涉及计算系统。更具体地,本发明涉及为执行多个操作系统的计算系统上 的进程分配资源。
背景技术
计算机所使用的资源是变化的,并且分布在计算环境中,但是需要这些资源来完 成作业。当多个进程同时执行时(这是常见的情况),会导致资源的瓶颈。这些瓶颈可能出 现在1/0总线控制器处,在交换序列期间出现在存储器控制器中,或者出现在由于程序在 存储器转储已经启动时请求存储器载入而使该程序被占先时。瓶颈以及由此产生的进程饥饿的出现在执行多个操作系统的系统上会更严重。在 这些系统上执行的额外进程增加了进程同时请求相同资源或者等待彼此释放资源的进程 饥饿的概率。

发明内容
在本发明的第一方面,一种计算机系统,包括多个资源;以及包含多个操作系统 的存储器。每个操作系统包含内核调度器,其配置用于为计算机系统上执行的进程协调资 源的分配。在一个实施方式中,计算机系统还包括多个中央处理单元,每个中央处理单元执 行多个操作系统中不同的一个。多个资源是以下任意两个或更多键盘控制器、视频控制 器、音频控制器、网络控制器、磁盘控制器、通用串行总线控制器和打印机。优选地,多个内核调度器配置用于使用通信协议来共享与资源相关的信息。在 一个实施方式中,通信协议配置用于访问共享存储器。备选地,通信协议包括进程间通 信或者协议栈、传输控制协议/网际协议(TCP/IP)。备选地,通信协议包括访问信号量 (semaphore)、管道、信号、消息队列、对数据的指针和文件描述符。在一个实施方式中,进程 包括彼此通信的至少三个进程。在一个实施方式中,多个内核调度器中的每一个包括协调资源分配的关系管理 器。多个关系管理器中的每一个包括资源管理器,其配置用于确定与一个或者多个资源有 关的资源信息。资源信息是到资源变为可用时的估计时间。在本发明的第二方面,一种计算机系统,包括包含内核调度器的存储器;以及配 置用于访问多个资源的多个操作系统内核。内核调度器配置用于将从多个资源请求资源的 进程指派给多个操作系统内核中相应的一个。该系统还包括多个处理器,每个处理器执行多个操作系统中相应的一个。在一个实施方式中,内核调度器基于多个处理器上的负载在多个操作系统内核上 调度进程。在一个实施方式中,计算机系统还包括进程表,其对资源请求与多个操作系统内 核中的一个或者多个进行匹配。在另一实施方式中,计算机系统还包括多个操作系统内核 对之间的通信通道。多个操作系统内核配置用于交换与处理器负载、资源可用性以及资源 变为可用的估计时间有关的信息。在本发明的第三方面,一种内核调度系统,包括多个处理器和指派模块。多个处理 器中的每一个执行被配置用于访问一个或者多个资源的操作系统内核。指派模块被编程用 于将请求资源的进程与多个操作系统内核之一进行匹配,并且将进程分派给匹配的操作系 统内核。优选地,多个处理器中的每一个由相应的处理器调度器来控制。在本发明的第四方面,一种为操作系统内核指派资源的方法,包括基于操作系统 内核访问资源的能力,从多个操作系统内核中选择操作系统内核;以及向选择的操作系统 内核指派资源。多个操作系统内核全部在单个存储器内执行。在本发明的第五方面,一种在单个计算机系统的存储器上的第一操作系统和第二 操作系统之间共享进程执行的方法,包括在第一操作系统的控制下执行存储器内的进程; 以及向存储器内的第二操作系统移交该进程的控制。以此方式,进程在第二操作系统的控 制下在存储器内执行。在第一操作系统和第二操作系统的控制下执行进程都访问单个资 源。在一个实施方式中,该方法还包括使用共享存储器、进程间通信和信号量之一在第一 操作系统与第二操作系统之间交换进程信息。


图1是根据本发明一个实施方式的内核操作调度器(KOS)的抽象示意图。图2是根据本发明另一实施方式的内核操作调度器(KOS)的抽象示意图。图3示出了根据本发明一个实施方式的内核进程调度的状态图。图4示出了根据本发明一个实施方式的在KOS设计中具有附加特征的系统。图5示出了根据本发明一个实施方式的系统内部的星型核心内核配置。图6是根据本发明一个实施方式的在通道上通信的多个内核的高层框图。图7示出了根据本发明一个实施方式的用于在内核调度器之间通信的共享存储
ο图8示出了根据本发明一个实施方式的提供用于捕获资源进程的过滤器的内核
调度器。图9示出了星型配置中的K0S,配置用于将进程指派给多个资源。图10是根据本发明一个实施方式的示出本发明的实施方式如何部署操作系统的 功能的流程图。图11示出了根据本发明一个实施方式的内核调度器,信令编码协议。图12是示出根据本发明一个实施方式的进程如何通过通信端口进行通信的框 图。图13示出了根据本发明一个实施方式的将资源映射到操作系统的表。
图14示出了使用共享存储器来交换资源信息的单独内核调度器。图15A-图15D示出了多个操作系统中每一个中的表,其示出了其余操作系统的状 态。图16示出了根据本发明一个实施方式的由单独内核调度器使用和交换的资源信 肩、ο图17是示出根据本发明一个实施方式的单独内核调度器如何交换资源信息的高 层示意图。图18是示出根据本发明一个实施方式的如何通过操作系统内核将进程指派给资 源的高层示意图。图19是命令内核、其关系管理器和三个资源的高层框图。图20示出了根据本发明一个实施方式的进程表,其存储有进程标识符、进程被指 派给的资源以及进程的优先级。图21示出了根据本发明一个实施方式的向操作系统指派资源的方法的步骤。图22是根据本发明一个实施方式的使用标准来向操作系统内核指派进程的方法 的流程图。图23是示出根据本发明一个实施方式的向操作系统指派进程的流序列。
具体实施例方式根据本发明,多个操作系统协作运行,共享分配给请求资源的进程的资源,由此减 少瓶颈以及资源竞争的其他问题。在一个实施方式中,使用中央内核操作调度器来集中地 分配资源,该中央内核操作调度器协调操作系统向请求资源的进程分配资源。在另一实施 方式中,以点对点方式提供资源,操作系统自己来协调资源的分发。在该实施方式中,操作 系统使用建立良好的协议进行通信。根据本发明,计算系统上执行的某些操作系统专用于执行特定任务。专用于执行 针对特定资源分配的请求的操作系统接收到针对具有其他已积压请求的资源的请求时,仅 由资源操作系统而不是集中式操作系统来对该溢出请求进行排队。进程管理内核的主要任务是允许应用的执行,以及利用诸如硬件抽象的特征来支持应用。 进程定义了应用可以访问哪些存储器部分(在本说明书中,“进程”、“应用”和“程序”作为 同义词使用)。内核进程管理必须考虑用于存储器保护的硬件内置设备。为了运行应用,内核通常为应用建立地址空间,将包含该应用的代码的文件载入 存储器中(可能经由请求页面调度),为程序建立栈,以及转到程序内部的给定位置,由此 开始其执行。多任务内核能够给用户这样的感觉,即在计算机上同时运行的进程的数目大于计 算机物理上能够同时运行的进程的最大数目。通常,系统可以同时运行的进程的数目等于 所安装CPU的数目(然而,如果处理器支持同步多线程,则情况可能不是这样)。在抢占式多任务系统中,内核将给予每个进程一个时间片,并且非常快地在进程 间切换,以使得用户看起来好像这些进程是同时执行的。内核使用调度算法来确定接下来 运行哪个进程以及给予该进程多少时间。所选择的算法可以允许一些进程比其他进程具有更高的优先级。内核通常还为这些进程提供通信的方法;这称为进程间通信(IPC),并且主 要途径是共享存储器、消息传递和远程过程调用。其他系统(特别是在较小、较弱的计算机上)可以提供协同多任务,其中允许每 个进程不间断地运行直到其进行特殊的请求以告知内核其可以切换至另一进程。此类请 求称为“让出(yielding) ”,并且通常响应于进程间通信或者等待事件发生的请求而发生。 Windows和Mac OS的较老版本都使用协同多任务,但是随着其目标计算机的能力增强,都 切换到抢占式方案。操作系统还可以支持多进程(SMP或者非一致存储器访问);在该情况下,不 同的程序和线程可以在不同的处理器上运行。此类系统的内核必须设计为可重入的 (re-entrant),这意味着其可以安全地同时运行其代码的两个不同部分。这通常意味着提 供同步机制(诸如,自旋锁),以保证两个处理器不会同时试图修改相同的数据。存储器管理操作系统通常具有内核,其是作为计算机的中央核心运行的一组集中式控制程 序。这些控制程序中包括调度器程序,其负责调度CPU时间的下一联机进程。本发明使用 在多个CPU之上运行的多个操作系统,每个CPU —个操作系统。每个操作系统都具有专用 的内核,其具有称为内核操作调度器(KOS)的唯一调度器程序。每个KOS都有能力在初始 化期间对其自身进行配置,以“系统生成(sysgen) ”计算机系统上板载的每个CPU的操作系 统内核的二进制拷贝(“Sysgen”是指通过组合分离的软件组件来创建特定的、唯一指定的 操作系统或者其他程序)。一旦每个内核就绪并且与每个CPU建立了联系,KOS调度器便在 每个内核之间建立通信,并且确定哪些内核控制哪些资源。针对内核的设计方法自然,以上列出的任务和特征可以在设计和实现彼此不同的多种方法中提供。机制(mechanism)和策略(policy)分离的原理是微内核和单体内核的思想之 间的根本差别。此处,机制是允许多种不同策略的实现的支持,而策略是特定的“操作模 式”。在最小化微内核中,仅包括一些非常基本的策略,并且其机制允许在内核上运行的部 分(操作系统的其余部分以及其他应用)决定采用哪些策略(诸如存储器管理、高层进程 调度、文件系统管理等)。相反,单体内核趋向于包括多种策略,因此将系统的其余部分限制 于依赖这些策略。无法适当地实现该分离是现有操作系统缺乏实质创新的主要原因之一, 这是计算机架构中的共同问题。单体设计由“内核模式”/“用户模式”架构性保护方法(技 术上称为层级式保护域)引起,这在传统的商业系统中是常见的。因此,实际上,需要保护 的每个模块优选地包括到内核中。单体设计与“特权模式”之间的这一链接可以重新引导 到机制_策略分离的关键问题;实际上,“特权模式”架构方法将保护机制与安全策略结合 在一起,而基于能力的寻址这一主要备选的架构性方法显然在两者之间有所区分,这自然 地导致了微内核设计(参见保护和安全的分离)。单体内核在相同的地址空间(内核空间)中执行其所有的代码,而微内核试图在 用户空间中运行其多数服务,旨在改进代码库的可维护性和模块性。多数内核并不严格符 合这些分类之一,而是在这两种设计之间。这称为混合内核。诸如超微内核和外核的更新 的设计是可用的,但是很少用于生产系统。例如,Xen管理程序是外核。单体内核
单体内核的框图在单体内核中,所有的OS服务随同主内核线程运行,由此也处于相同的存储器空 间中。该方法提供了丰富和强大的硬件访问。一些开发商(诸如UNIX开发商Ken Thompson) 认为单体系统比其他方案更加易于设计和实现。单体内核的主要缺点在于系统组件之间的 相关性(设备驱动器中的错误可能使整个系统崩溃),以及大内核可能变得维护非常困难 的事实。微内核在微内核方法中,内核本身仅提供允许执行服务程序的基本功能、承担之前内核 功能的单独程序(诸如,设备驱动器、GUI服务程序等)等。微内核方法包括利用一组原语或者系统调用在硬件上定义简单抽象,以实现诸如 存储器管理、多任务和进程间通信的最小化OS服务。其他服务(包括通常由诸如网络的内 核提供的那些服务)在用户空间的程序中实现,称为服务程序。微内核比单体内核更易维 护,但是大量的系统调用和上下文切换可能使系统变慢,因为其通常比普通函数调用生成 更多的开销。微内核允许操作系统的其余部分实现为使用高级语言编写的常规应用程序,并且 在同一不变的内核之上使用不同的操作系统。还可以在操作系统之间动态地切换,以及同 时具有不止一个活跃的操作系统。单体内核与微内核的对比随着计算机内核的发展,多个问题变得显而易见。最明显的问题之一是存储器使 用量增加。这可以通过完善虚拟存储器系统得到一定程度的缓解,但是并非所有的计算机 架构都具有虚拟存储器支持。为了减少内核使用量,需要执行大量的编辑以仔细地移除不 需要的代码,当具有上百万行代码的内核部分之间的相关性不明显时,这可能是非常困难 的。由于单体内核带来的问题,其早在20世纪90年代即被考虑废弃。因此,使用单体内核而 不是微内核的Linux设计是Linus Torvalds和Andrew Tanenbaum之间著名口水战的话题。 Tanenbaum/Torvalds争论的辩论双方都有优点。诸如早期的UNIX开发商Ken Thompson的 一些开发商争论虽然微内核设计更富美感,但是单体内核更易于实现。然而,单体系统的错 误通常使整个系统崩溃,而这在具有独立于主线程运行的服务器的微内核中不会发生。单 体内核支持者争辩不正确的代码不属于内核,并且微内核对于正确的代码来说几乎没有优 势。微内核通常用于嵌入式机器人或者医疗计算机中,其中抗崩溃能力较重要,并且多数OS 组件存在于其自身私有的受保护存储空间中。这对于单体内核甚至现代的模块加载内核而 言是不可能的。性能单体内核被设计为使其所有的代码处于相同的地址空间(内核空间)中,以提高 系统的性能。诸如UNIX开发商Ken Thompson的一些开发商认为,如果编写良好,单体系统 是效率极高的。单体模型趋向于通过使用共享内核存储器而不是微内核设计中较慢的进程 间通信(IPC)系统(其通常基于消息传递)而变得更加高效。20世纪80年代以及20世纪90年代早期构造的微内核的性能较差。凭经验测量 那些特定微内核中的某些微内核的性能的研究没有分析此类低效率的原因。对性能的解释 留给了 “坊间传言”,常见但未经证实的看法是,这是由于从“内核模式”切换到“用户模式”的频率增加(但是保护的此类层级式设计不是微内核中固有的),进程间通信的频率增加 (但是IPC可以以比之前认为的更快的数量级实现),以及上下文切换的频率增加。实际上, 如在1995年所推测的,性能较差的原因也可能是(1)整个微内核方法的实际低效率,(2) 微内核中实现的特定概念,以及(3)上述概念的特定实现。因此,仍有待研究的是与之前 尝试不同的、建立高效微内核的方案是否在于应用正确的构造技术。另一方面,导致单体内核设计的层级式保护域架构,在每次保护的不同层之间存 在交互时(即,在进程需要操作“用户模式”和“管理模式”两者中的数据结构时)具有显 著的性能缺陷,因为其需要通过值的消息拷贝。在20世纪90年代中期,多数研究者已经放 弃准确调节可以显著减少该开销的看法,但是最近,较新的微内核已经对性能进行了优化。混合内核混合内核方法尝试将单体内核的速度和较简单设计与微内核的模块性和执行安 全结合起来。混合内核本质上是单体内核方法和微内核方法的折衷。这意味着在内核空间中运 行一些服务(诸如网络栈或者文件系统)将减少传统微内核的性能开销,但是仍然在用户 空间中将内核代码(诸如,设备驱动器)作为服务程序来运行。超微内核超微内核将几乎所有的服务,甚至包括类似于中断控制器或者计时器的最基本的 服务,委托给设备驱动器,以使得内核存储器需求比传统的微内核更小。外核外核是不将硬件抽象到理论模型中的一类内核。相反,其将物理硬件资源(诸如 处理器时间、存储页面和磁盘块)分配给不同的程序。在外核上运行的程序可以链接到使 用外核来仿真公知OS的抽象的库操作系统,或者其可以开发应用特定的抽象以用于更好 的性能。调度调度是计算机多任务和多处理操作系统设计以及实时操作系统设计中的关键概 念。它是指为进程指派优先级队列中的优先级的方式。该指派通过称为调度器的软件来实 现。在诸如工业中用于自动控制的移动设备(例如机器人)的实时环境中,调度器还 必须保证进程可以满足时限;这对于保持系统稳定来说是关键的。调度的任务可以发送至 移动设备,并且通过管理后端来管理。操作系统调度器的类型操作系统可以具有高达3种不同类型的调度器长期调度器(也称为“准入调度 器”)、中期或者中间期调度器和短期调度器(也称为“分派器”)。长期调度器或称准入调度器确定哪些作业或者进程将被许可进入就绪队列;也 即,当尝试执行程序时,该尝试进入当前执行进程集合的准入由长期调度器授权或者延迟。 由此,该调度器指定什么进程将在系统上运行以及在任意时刻支持的并发度(即,将同时 执行的进程的量是高还是低),以及如何处理I/O密集型进程和CPU密集型进程之间的划 分。通常对于台式计算机来说,不存在此类长期调度器,并且进程自动地准入系统。然而, 此类调度对于实时系统是非常重要的,因为由于准入多于系统可以安全处理的进程而造成的速度降低和竞争可能损害系统满足进程时限的能力。中期调度器存在于具有虚拟存储器的所有系统中,其从主存储器中暂时移除进 程,并且将其放置在第二存储器(诸如磁盘驱动器)上,反之亦然。这通常称为“换出”或 者“换入”(也可不恰当地称为“页面调出”或者“页面调入”)。中期调度器可以决定换出 一段时间内不活跃的进程、具有较低优先级的进程、频繁页面出错的进程或者占用大量存 储器的进程,以便为其他进程释放主存储器;当之后较多存储器可用时,或者在进程已经解 锁并且不再等待资源时,将进程换回。在当前的多种系统(那些支持将虚拟地址空间映射至次级存储而不是交换文件 的系统)中,中期调度器可以通过在二进制文件执行时将其作为“换出进程”来处理,而实 际上充当长期调度器的角色。以这种方式,当需要二进制段时,其可以即时换入,或者“惰性 (lazy)加载”。短期调度器(也称为“分派器”)决定在时钟中断、I/O中断、操作系统调用或者其 他形式的信号之后将执行哪个就绪的、存储器中的进程(分配CPU)。由此,短期调度器比长 期调度器或者中期调度器更加频繁地做出调度决策-调度决策至少将在每个时间片之后 做出,并且这些时间片是非常短的。该调度器可以是抢占式的,这意味着在其决定为一个进 程分配CPU时,其能够强行地从CPU移除另一进程;或者可以是非抢占式的,在这种情况下 调度器不能“强制”进程离开CPU。调度规则调度规则是用于在同时、异步地请求资源的部分之间分发资源的算法。调度规则 在路由器(以处理分组业务)以及操作系统(以在线程和进程之间共享CPU时间)中使用。调度算法的主要目的在于最小化资源饥饿,以及保证使用资源的部分之间的公平 性。操作系统调度器实现不同的计算机操作系统实现不同的调度方案。较早的MS-DOS和Microsoft Windows系统是非多任务的,因此不具有调度器。基于Windows 3. 1的操作系统使用单个 非抢占式调度器,其需要程序指示其进程“让出”(放弃CPU)以便其他进程得到一些CPU时 间。这提供了针对多任务的原语支持,但是没有提供更高级的调度选项。基于Windows NT 4. 0的操作系统使用多层反馈队列。基于Windows NT 4. 0的系 统中的优先级的范围从1到31,其中优先级1到15是“正常”优先级,而优先级16到31是 软实时优先级,需要指派特权。用户可以从任务管理器应用中或者通过线程管理API来选 择这些优先级中的5个,以指派给运行的应用。早期的Unix实现使用具有多层反馈队列的调度器,该多层反馈队列在每个反馈 队列中具有轮转(round robin)选择。在该系统中,进程开始于高优先级队列(给予诸如 单个鼠标移动或者击键中所涉及的新进程以较快的响应时间),并且随着这些进程在系统 中花费了较多时间,其被多次抢占并且放置在较低优先级队列中。遗憾的是,在该系统中, 较老的进程可能由于新进程的持续进入而缺乏CPU时间,但是如果系统处理新进程的速度 不能快于新进程的到达,则饥饿无论如何是不可避免的。进程优先级可以在Unix下明确设 置为40个值中的一个值,但是多数现代的Unix系统具有更高范围的可用优先级(Solaris 具有160个)。代替低优先级进程饥饿的Windows NT4. 0方案(将进程辗转到轮转队列的前端,其应当会饥饿),早期的Unix系统使用更加精细的优先级提升系统,用以缓慢增加饥 饿进程的优先级直到其被执行,于是其优先级将重新设置为其在开始饥饿之前的任何优先 级。Linux内核曾经使用0(1)调度器直到2. 6. 23,在此时其转换到完全公平调度器。调度算法在计算机科学中,调度算法是给予线程或者进程对系统资源(通常是处理器时 间)的访问的方法。这通常是为了有效地对系统进行负载均衡。由于多数现代系统执行多 任务或者同时执行多于一个进程,因此对调度算法的需求应运而生。调度算法通常仅在时 间片复用内核中使用。原因在于为了有效地对系统进行负载均衡,内核必须能够强行挂起 线程的执行以便开始下一线程的执行。所使用的算法可以简单如轮转,其中每个进程在循环列表中被给予相等的时间 (例如1ms,通常在Ims与IOOms之间)。所以,进程A执行1ms,然后进程B,然后进程C,然 后返回进程A。更高级的算法将进程优先级或者进程的重要性纳入考虑。这允许一些进程比其 他进程使用更多的时间。需要注意,内核总是使用其需要的任何资源来保证系统的正常 运行,因此可以称为具有无限的优先级。在对称多处理器(SMP)系统中,处理器亲和力 (affinity)被认为提高了整体系统性能,即使其可能导致进程本身运行较慢。这通常通过 减少高速缓存颠簸(thrashing)来改进性能。I/O 调度本部分是关于I/O调度的,其不应当与进程调度混淆。“I/O调度”是用于描述计 算机操作系统用来决定将阻塞的I/O操作提交至磁盘子系统的顺序的方法。I/O调度有时 称为“磁盘调度”。目的根据I/O调度器的目标,I/O调度器可以具有多种目的,一些常见目标是 最小化硬盘搜寻所耗费的时间。 为特定进程的I/O请求设定优先级。·使每个运行进程共享盘带宽。 保证特定请求将在特定时限之前发出。实现I/O调度通常需要与硬盘协作,其共同具有的特性是远离磁头当前位置的请求 的访问时间较长(该操作称为寻道)。为了最小化这对于系统性能的影响,多数I/O调度器 实现电梯算法的变体,其将传入的随机排列的请求重新排列为将在磁盘中对其进行查找的 顺序。常见磁盘调度规则 随机调度(RSS) 先进先出(FIFO),也称为先到先服务(FCFS) 后进先出(LIFO) 最短搜寻优先,也称为最短搜寻/服务时间优先(SSTF)·电梯算法,也称为SCAN(包括其变体C-SCAN、LOOK和C-L00K)
· N步扫描,一次N个记录的扫描· FSCAN,步进式扫描,其中N等于SCAN周期开始时的队列大小 完全公平队列(Linux) 预期调度图1示意性地示出了根据本发明一个实施方式的KOS调度器操作系统100。KOS 调度器操作系统100包括多个操作系统101-106,多个操作系统101-106在单个存储器中执 行,都与壳(shell) 115指示的应用对接。图2示意性地示出了根据本发明另一实施方式的KOS调度器操作系统120。KOS 调度器操作系统120包括多个操作系统121-126,多个操作系统121-126在单个存储器中执 行,与壳130指示的资源对接,壳130继而与壳135指示的应用对接。多OS KOS 系统多任务内核能够给用户这样的感觉,S卩,同时在计算机上运行的进程的数目高于 计算机物理上能够同时运行的进程的最大数目。本发明实际上建议,通过将处理器的数目 从一个增加到两个或者更多,以及在事件指示针对资源的请求时增加实际在计算机系统上 的、共同使用特别设计的调度器软件来全部同时工作以通信、调度、委托、路由和外包事件 的操作系统的数目的KOS设计,这种感觉将消除。通常,系统可以同时运行的进程的数目等 于安装的CPU的数目(然而,当处理器支持同时的多线程时,情况可能并非如此)。本发明 的优选实施方式需要安装多于一个CPU,而同时协同工作的操作系统的数目应当等于安装 的CPU数目,以便实现最大性能。UNIX-KOS设计还建议,继续在每个操作系统内核内实现多 线程,同时由KOS调度器根据应用所需要的资源以及每个操作系统支持的资源来传送、外 包、路由去往和来自每个安装的操作系统的应用程序。KOS 概念分布式内核操作调度器(KOS)是用于按照与其他内核操作调度器同步的方式来 进行操作的分布式操作系统。每个KOS与其他类似的KOS并行操作;并且虽然可以存在两 个或者更多计算机操作在任何给定的计算机系统环境内,并且任何特定计算机可以驻留两 个或者更多CPU,但是该环境被视作单个计算机。在一些命名法中,分布式计算可以定义 为跨多个不同的计算机平台并且在一个操作主题下全部共同协同工作的计算资源的分布。 KOS是类似的,区别仅仅在于分布式KOS在单个计算机系统环境中,其彼此非常接近地操作 并且作为单个计算机。每个KOS在单个内核之内。每个内核具有单个调度器,在KOS设计 为具有与此类型的其他类似KOS通信以调度事件的通信设施之前,该单个调度器由KOS取 代。数据的处理可以分解为一系列事件,其中每个事件需要特定的计算机资源来完 成。调度器是内核中的重要程序,其任务是向事件分配CPU时间、资源和优先级。由此,当 在时间共享情境下调度CPU时间资源时,为事件提供诸如存储器、临时I/O总线优先级等其 他资源以及完成特定事件所需的任何资源。根据本发明,KOS是内核操作调度器,而每个单 个系统存在多个K0S,并且每个KOS同时运行并且管理需要计算机资源来完成的同时事件 的执行。但是,每个KOS可能需要类似的资源,而当此类资源可能受到限制或者供应不足 时,此类资源由内核环境空间内或者存储器的共享部分内的信号量来控制。KOS是分布式的 OS,并且在其核心处,调度器是与通用CPU硬件相联系的分布式计算,其中每个调度器在初始化时具有唯一的id,而此类ID被指派到每个K0S。Unix 系统 IPCIPC设备和协议栈IPC设备和协议栈驻留于UNIX构造,并且已经集成为工具。这些工具用于提供当 前构造下的操作系统之间的通信。表1将KOS类型映射至其支持的特定资源。参考表1中的信息,IPC的前7种形 式用作本地内核和调度器操作系统内的进程之间的通信,并且最后两种用于相同计算机上 但是跨相同计算机系统上的CPU分布的操作系统之间的通信。表1 Linux对STREAMS的支持在单独的、可选的称为“LIS”的包中可得。表1中IPC的前7种形式通常限制于相同主机操作系统上的进程之间的IPC。最 后两行一套接字和STREAMS-是通常支持用于不同主机上的进程之间的IPC的仅有两个。内核调度器内核调度器提供过滤和选择确定当前处理应当在哪里进行所需要的资源的特征。每个CPU例如通常是通用CPU,而每个KOS是比较特定的。存储器的一部分在每个KOS之间 共享,以使得在每个KOS之间传递指针和文件描述符而非传递实际文件数据。IPC设施用于 允许特定进程跨CPU、跨KOS通信,由此以进程之间事务协议的形式来传送所需要的事务。本发明的一个实施方式允许诸如语音合成器的应用使用如下KOS在特定CPU上不 间断地并由此连续地运行,该KOS利用I/O资源的排他性,同时阻挡中断、队列以及必须换 出以允许抢占。根据另一实施方式,应用是DVD格式的视频流,而视频流允许使用特定CPU、 存储器和KOS来运行而无需面对集中调度器,而在以下情境中将面对集中调度器,即其必 须被不时地换出以实现集中式OS内的进程之间的最优性。共享存储器共享存储器是当前UNIX操作系统构造的非常主要的部分,并且虽然目前被提供 以用于特定约定,但是其也可以按照特定方式来实现,以用于当前约定的KOS下的分布式 OS之目的。根据本发明的一个实施方式,每个操作系统内核具有调度器,而调度器是每个内 核中重要和关键的组件参与者。每个分布式操作系统的KOS成为KOS调度器。存在具有四 个此类调度器的四个此类操作系统,而每个调度器设计用于使得其与其他操作系统中的其 他调度器通信。通信被设计为允许共享其他调度器的资源。每个调度器具有附加给其的特 定资源组,其可以包括诸如磁盘访问、互联网访问、电影DVD播放器、音乐DVD、键盘通信等 典型计算机资源。这些资源附于操作系统内核调度器的给定集合上,每个给定集合能够在 特定的给定点向其他CPU上的其他KOS操作外包或者卸荷需要特殊资源的特定处理。每个调度器被指派以存储器的一部分。调度器及其内核连同其他KOS及其CPU被 一起映射到主存储器中。TCP/IP 协议簇TCP和IP本地可以用作在CPU与KOS之间传送数据和应用文件的资源。每个KOS 对于其自身相应的CPU来说是本地的,其可以具有或者不具有独立的存储器映射I/O。在一 个实施方式中,使用多个UNIX系统中存在的TCP端口回环设备,其配置用于在KOS系统配 置下,在其他操作系统之间发送和接收数据文件。UDP协议结构用户数据报(UDP)用户定义协议是TCP/IP协议簇的一部分,并且可以配置用于在 KOS约定下在独立的CPU与操作系统之间导入或者导出数据文件。UDP还可以建立为在独 立的CPU常驻操作系统之间传递消息。基于I/O (输入/输出)CPU的操作系统1/0(输入/输出)总线控制器充当专用设备,但是也引导任务特定的任务,包括 磁盘操作或者处理从主存储器输入或者输出的通道数据。此类控制器可以简单地由专用 CPU来替代,而其将提供更多的功能能力,并且允许诸如KOS的常驻软件提供可重新配置的 应用而不是那些硬连接至特定控制器的应用。在本发明的实施方式中,I/0CPU或者处理器 将具有驻留在其中的I/O操作系统,该I/O操作系统具有被特别设计为通常仅处理系统I/ 0功能的调度器。这将允许总线数据避免控制器处的瓶颈,因为这样CPU将能够在必要时形 成I/O队列。表2列出了特定的KOS类型,以及每种类型专门用来支持的具体资源。例如,表2 示出了诸如当运行CD DVD时(第4列,第5行),媒体OS(第1列,第5行)专门用于执行视频I/O。类似地,表2示出了诸如当通过通道总线通信时(第2列,第7行),磁盘OS(第 1列,第7行)专门用于执行磁盘I/O。表2 本发明的一个实施方式部署对构造的使用,其中操作系统的功能基于便携的概 念,可以将其功能性分为线程,其中每个线程彼此独立地操作。以这种方式,每个线程能够 在不同的、独立的调度器下独立地执行操作。不同的进程状态在状态图中显示,其中箭头指示状态之间的可能的转移一可以 看出,一些进程存储在主存储器中,而一些进程存储在次级(虚拟)存储器中。图3示出了内核进程调度的状态图200。状态图包括“创建”状态201、“等待”状 态207、“运行”状态205、“阻塞”状态209、“换出并阻塞”状态213、“换出并等待”状态211 以及“终止”状态203。以下对这些状态进行全面描述。本发明的实施方式通过使得多个操作系统彼此依次工作而消除了“换出和等待, 换出和阻塞”状态的需要,并且变得更加专用于其管理的资源,由此使用等待状态作为传入 “接收到的”外包或者外发路由(out-routed)事件的队列。本发明的实施方式保留了部署 多线程的能力,换出等待/阻塞部署为用于完成本设计的其他实现的设备。主进程状态以下典型的进程状态在所有种类的计算机系统上都是可能的。在这些状态中的多 数状态中,进程“存储”在主存储器中。创建(也称为“新建”)。当进程第一次被创建时,其具有“创建”或者“新建”状态。在 该状态中,进程等待对“就绪”状态的准入。该准入将通过长期调度器或者准入调度器来批 准或者延迟。通常在多数台式计算机系统中,该准入将自动地批准,然而对于实时操作系 统,该准入可以延迟。在实时操作系统(RTOS)中,使过多进程准入到“就绪”状态可能导致系统资源的过饱和以及过度竞争,从而导致不能满足进程时限的需要。就绪(也称为“等待”或者“可运行”)。“就绪”或者“等待”的进程已经被加载到主存 储器中,并且其等待在CPU上执行(将由分派器或者短期调度器上下文切换至CPU)。在系 统执行的任何时刻可能存在多个“就绪”进程。例如,在单处理器系统中,在任何时刻仅可 以执行一个进程,而所有其他的“并发执行”进程等待执行。运行(也称为“活跃”或者“执行”)。“运行”、“执行”或者“活跃”的进程是当前在CPU 上执行的进程。从该状态,进程可能超过其分配的时间片并且由操作系统上下文切换出并 且回到“就绪”。进程可以指示其已经结束并且终止,或者其可能在一些需要的资源(诸如 输入/输出资源)上阻塞并且移至“阻塞”状态。阻塞(也称为“休眠”)。如果进程在资源(诸如,文件、信号量或者设备)上“阻塞”,其 将从CPU被移除(因为阻塞的进程不能继续执行)并且将处于阻塞状态。进程将保留“阻 塞”直到其资源变得可用,然而这可能导致死锁。从阻塞状态,操作系统可以阻止进程的资 源的可用性通知给该进程阻塞(可以通过中断来向操作系统本身提示资源可用性)。一旦 操作系统得知进程不再阻塞,则进程再次“就绪”,并且可以从那里分派至其“运行”状态。从 那里,进程可以使用其新可用的资源。终止进程可以通过完成其执行或者被显式地杀死(kill)而从“运行”状态终止。在这 两种情况的任意一种中,进程移至“终止”状态。如果在进入该状态之后,进程没有从存储 器中移除,则该状态还可以称为“僵死”(zombie)。附加进程状态对于支持虚拟存储器的系统中的进程,两个附加的状态是可用的。在这两个状态 中,进程都“存储”在次级存储器(通常是硬盘)上。换出和等待(也称为“挂起和等待”)。在支持虚拟存储器的系统中,可以将进程换出,即通过 中期调度器将其从主存储器中移除并且放置到虚拟存储器中。进程可以由此换回到等待状 态中。换出和阻塞(也称为“挂起和阻塞”)。阻塞的进程也可以被换出。在这种情况下,进程可以同 时换出和阻塞,并且可以在与换出和等待进程相同的条件下被再次换入(但是在这种情况 下,进程将移至阻塞状态,并且可能仍然等待资源变得可用)。调度多任务内核(如Linux)允许在任何给定时刻存在不止一个进程,并且允许每个进 程如同它是系统上唯一的进程那样运行。进程不需要知道任何其他进程,除非将其明确设 计为那样。这使得程序更加易于开发、维护和移植。虽然系统中的每个CPU每次只能执行进 程中的一个线程,但是看似可以同时执行来自多个进程的多个线程。这是因为,线程被调度 为运行非常短的时间段,然后给其他线程运行的机会。内核的调度器强制执行线程调度策略,包括线程可以执行的时间、线程可以执行多久以及在一些情况下线程可以在何处(SMP 系统上)执行。通常,调度器在其自身的线程中运行,其由计时器中断唤醒。否则,其经由系 统调用或者希望让出系统的另一内核线程来调用。线程将被允许执行特定的时间量,然后 将发生到调度器线程的上下文切换,随后发生到调度器选择的线程的另一上下文切换。该 循环继续进行,并且以这种方式,实现了 CPU使用的特定策略。CPU限制和I/O限制的线程执行的线程倾向于是CPU限制的或者是I/O限制(输入/输出限制)的。也就是, 一些线程耗费大量时间来使用CPU执行计算,而其他的线程耗费大量时间来等待相对较慢 的I/O操作完成。例如,排序DNA的线程将是CPU限制的。获取字处理程序输入的线程将 是I/O限制的,因为其耗费了其多数时间用于等待人的键入。线程是否应当视为CPU限制 或者I/O限制并非总是清楚的。如果调度器非常关注于此,则其最好的做法是猜测。很多 调度器确实关心线程是否应当视为CPU限制或者I/O限制,因此,用于将线程分类为这一种 或者另一种的技术是调度器的重要部分。调度器倾向于给I/O限制的线程访问CPU的优先 级。接受人的输入的程序倾向于是I/O限制的-即使是最快的打字员在每次击键之间也具 有相当多的时间量,在此期间,他或者她进行交互的程序仅在等待。对与人交互的程序给予 优先级是重要的,因为当人在期待立即响应时,速度和响应性的缺乏将更容易被感觉到。轮转调度算法调度是将任务指派给一组资源的过程。这在诸如计算和生产过程的多种领域中是 很重要的概念。调度是多任务和多处理操作系统设计以及实时操作系统设计中的关键概念。调度 是指为进程指派优先级队列中优先级的方法。该指派由称为调度器的软件来实现。在通用操作系统中,调度器的目的是均衡处理器负载,并且防止任何一个进程独 占处理器或者缺乏资源。在诸如工业中的自动控制设备(例如机器人)的实时环境中,调 度器还需要保证进程可以满足时限;这对于保持系统稳定是关键性的。轮转是对于操作系统中的进程最简单的调度算法。该算法以相同的份额和顺序将 时间片指派给每个进程,将所有的进程处理为具有相同的优先级。在设置有优先级的调度 系统中,通常以轮转方式来寻址相同优先级的进程。该算法起始于PDB (进程描述符块)列 表的开始,当时间片变得可用时,给予每个应用以相同的CPU机会。轮转调度具有易于在软件中实现的巨大优势。因为操作系统必须具有对列表开始 的引用以及对当前应用的引用,所以其可以只通过沿着PDB数组或者链表找到下一元素, 来容易地决定接下来运行哪一个。一旦到达数组的结尾,将选择重置回数组的开始。必须 对PDB进行检查以保证不会疏忽地选择阻塞的应用,因为这将不必要地浪费CPU时间,或者 更严重地,使得任务认为其已经找到其资源,而实际上其还应当等待。术语“轮转”来自其 他领域所公知的轮转原理,其中每个人依次得到对某个事物的平等共享。简言之,每个进程被指派以某个时间间隔,其被称为其定额,在这段时间期间允许 该进程运行。如果进程在其定额结束时仍然在运行,则CPU被抢占并给予另一进程。如果 在定额结束之前进程已经阻塞或者结束,则在进程阻塞时进行CPU切换。按照调度算法如何处理时钟中断,可以将调度算法分为两类。非抢占式调度
如果一旦将CPU给予进程,该进程就将保持该CPU,则调度规则是非抢占式的。以 下是非抢占式调度的一些特性1.在非抢占式系统中,较长的作业使得短作业等待,但是所有进程的综合处理是 公平的。2.在非抢占式系统中,响应时间更加可预测,因为传入的高优先级的作业不可以 替换等待的作业。3.在非抢占式调度中,调度器在以下两种情况下执行作业a.当系统从运行状态切换至等待状态时。b.当进程终止时。抢占式调度如果一旦将CPU给予进程,CPU可以被夺走,则调度规则是抢占式的。允许逻辑上 可运行的进程暂时挂起的策略称为抢占式调度,并且与“运行直至完成”方法相对。轮换调度是抢占式的(在时间片的末端);因此,其在时间共享环境中是有效的, 在该环境中,系统需要保证交互式用户的合理的响应时间。轮换方案最令人关注的问题是定额的长度。定额设置得过短会导致过多的上下文 切换并且降低CPU效率。另一方面,定额设置得过长可能导致较差的响应时间,并且接近于 先到先服务(FCFS)。这在以下示例中示出。假设任务切换花费2msec。如果定额为8msec,则可以保证非常良好的响应时间。 在该示例中,20个用户全部登录到一个CPU服务器上;每个用户同时发起请求。每个任务最 多花费IOmsec (8msec定额+2msec开销),并且第20个用户在200msec (10msec*20)即1/5 秒内得到响应。另一方面,效率是可用时间总时间=8ms/10ms = 80%,即20%的CPU时间浪费在开销上。对于200msec 的定额,效率是 200msec/202msec =约 99%但是,如果20个用户同时发起请求,则响应时间是202*20 = 4040msec,或者> 4 秒,该响应时间不佳。为了全面了解真实情况,考虑参数定义 响应时间进程完成的时间。OS可能想要倾向于特定类型的进程,或者最小化 平均时间之类的统计属性。 实现时间这包括算法和维护的复杂度 开销决定要调度哪个进程以及收集做出选择所需的数据的时间 公平性对不同的用户进程进行不同对待的程度所以,较大的定额保证更加有效,而较小的定额保证较好的响应时间。吞吐量和周 转取决于系统中作业的数目和每个任务的I/O使用。轮转显然是公平的。在任何情况下,轮转调度下的平均等待时间通常是相当长的_进程可能使用小于 其时间片的时间片(例如,阻塞信号量或者I/O操作)。除非没有其他任务运行,否则闲置 任务不应当得到CPU (其不应当参加轮转)。多数目前的主要操作系统运行轮转的变体,并且它们带来的最重要的改进可能是 进程的优先级类别。设置这些类别的简单算法是将优先级设置1/f,其中f是进程使用的最后定额的部分。仅使用了其100msec共享中的2msec的进程将得到优先级等级50,而在阻塞前使用 了 50msec的进程将得到优先级等级2。因此,使用了其全部100msec定额的进程将得到最
低的优先级(其将是1,在其他系统上,优先级是C语言风格的W......99],而不像Linux
将其设置为从1到99)。对于KOS调度器,可察觉地存在三种操作系统设计的配置。图1示出了紧密集群 KOS配置,其中资源如同所有其他传统的操作系统一样沿外周长分布。图4示出了具有在KOS概念设计下可行的若干附加特征的系统300。这些附加特 征包括中央路由OS设施301,其仅被指定用于如下目的从输入设备接收事件并且将其路 由至适当的分布OS以得到对资源的访问。在这种设计下,每个操作系统具有嵌入其存储器 使用的有限数目的资源,对于这些资源,操作系统可以立即到达以获得对向其指派的每个 事件的完全解析。在外周长中的是附加资源,其可以被认为是这样的系统资源,即每个内核 OS必须共享该系统资源,并且可以为扩展事件(需要扩展资源来完成的作业)而预留。如图4所示,系统300在OS设施301周围还包括多个操作系统310-316。操作系 统310-316示意性地被示为由资源的壳330包围,该资源的壳330继而由应用的壳340包 围。内核操作调度器的配置的一种方法是星型配置。在星型配置下,一个内核配置用 于充当中央分派器,其作用是接受就绪状态的进程;为这些进程挑选(screen)需要的资 源,诸如额外的存储器分配、栈需求或者鲁棒的I/O业务等;以及将进程分派到配置用于支 持此类请求的适当操作系统环境。在星型配置下,没有进程会阻塞或者休眠,业务流仅使用 三个状态运行状态、等待状态和切换状态。系统S1内的星型核心内核配置充当核心的内核由η个其他内核包围。图5示出了根据本发明一个实施方式的系 统S1内的星型核心内核配置350。该配置包括具有KOS 360的中央路由操作系统,其由内 核操作系统351-356包围,该内核操作系统351-356由应用的壳363包围。包围操作系统 351-356中每一个的壳对应于操作系统351-356中每一个的可用资源。中央路由操作系统 执行以下典型的进程状态1.当进程第一次在系统S1内被创建时,其具有新建进程状态,其中其挑选需要的 资源(参见系统资源部分)。一旦确定了所需要的资源,核心即查找可能满足这些资源需求 的操作系统(其可能理想地处于闲置状态),诸如I/O操作系统(参见I/O操作系统)。一 旦确定了的适当0S,便将进程移至切换状态(通常不是就绪状态),并且在时钟的下一个周 期将进程分派给系统S1内的适当操作系统。2.核心具有“运行状态”,其用于基于已经被分派并且当前应当运行的进程来与所 有其他的运行状态通信。核心的运行状态主要是不只是静止的通信状态或者虚拟运行状 态,其并不实际运行进程,而是记录系统S内所有运行进程的情况并且将每个状态通告给 控制台。3.刚刚创建的进程的就绪状态,其在星型核心内核下是充当分类状态或者挑选状 态的状态,而在星型内核下的任何外围内核中,其充当等待状态或者可运行状态,与其在传 统的进程状态下一样。图6是在通信通道C 680上通信的多个内核601、630和640的高层框图,每个内核具有切换出的应用程序A和切换入的应用程序B。例如,内核601由中央处理单元602 执行并且包含调度器607、KOS 610,该KOS 610具有运行状态611、等待状态612以及用于 切换应用程序A 615的切换状态613。图6示出了切换出的应用A 615和切换入的应用B 605。内核630和640与内核601类似地操作,此处将不再描述。通信通道C 680在内核中 的KOS调度器之间并且跨越CPU。共享的存储器图7示出了系统700,该系统700包括由Σ ^20, Σ 2721、Σ 3722和Σ 4724指示的 共享存储器,以及操作系统环境710-713。参考图7,共享存储器是Unix操作系统的一部 分,并且虽然提供的概念是在特定的约定中使用,但是根据本发明的实施方式,其也可以按 照特定方式来实现以用于分布式操作系统之目的。如果每个操作系统内核变为专用调度 器,并且存在具有这些专用调度器的四个此类操作系统,则每个操作系统这样来设计,使得 其按照允许共享其他调度器的资源的方式来与其他调度器通信。如果在每个调度器初始化 (启动)时已经将其他调度器所知的特定资源附于其上,则每个调度器在其操作中的给定 点可以将不是其所提供的资源类别一部分的操作外包给其他调度器。每个调度器被指派以其与其他调度器共享的存储器的一部分,并且在将操作外包 给需要利用待访问和操作的数据集来运行程序以便完成的其他调度器时,外包调度器仅向 接收调度器传送指针和文件描述符,而不是传送数据量本身。可以在接收调度器上对指针 和文件描述符进行排队,以便在其CPU上处理。IPC设施和协议栈IPC设施以及协议栈两者都与UNIX OS构造隔开,并且已经适当地集成为工具。这 些工具对于本发明也是有用的。这些工具可以配置用于基本上以其预定的形式来提供集群 中的操作系统之间的通信,只不过现在分布式计算并入特定计算机系统而不是跨过若干平台。IPC调度器图8示出了作为一个资源的网络控制器,示出了向网络操作系统(NOS) 755传送的 数据分组751。参考图8,内核调度器提供了针对资源进程获取的过滤,并且内核调度器首 先选择确定处理应当在哪里发生所需要的资源。每个CPU是通用CPU,而每个操作系统的 内核变得更加特定,并且专用于资源分组或者集合的分配。图8示出了根据本发明使用的 特定和专用操作系统的一个实施方式。NOS 755能够使用FTP、PPP、调制解调器、Airport、 TCP/IP、NFS和Appletalk协议中的任意一种或者多种协议,并且使用具有代理选项的端可以理解,存储器被划分为象限,并且存储器的部分在每个操作系统之间划分,而 可以通过指派在系统间传递指针和文件描述符,而不是移动大量数据。IPC设施被用来允许 进程传送消息,以便以事务协议的形式传送所需要的事务。在一个实施方式中,诸如语音合成器的应用能够使用特定I/00S而在CPU上连续 运行,而没有中断使该处理中断。在另一实施方式中,允许诸如视频流的应用使用特定CPU、 存储器和OS运行,不受到在其生命过程期间换入和换出程序的调度器的控制。图9示出了根据本发明一个实施方式的KOS 790,其用于向I/O键781、I/O视频 783、I/O盘784、I/O通用串行总线785、I/O辅助端口 786、打印OS 787以及I/O网络控制器788指派进程。参考图9,I/O总线具有控制器,并且该控制器是总线上资源的管理器。 资源需要将数据沿总线来回移动。因为I/O是每个计算机的基本功能,所以其不应当再是 操作系统的子功能。根据本发明的一个实施方式,操作系统协调多个全部并行并且异步操 作的从属操作系统。I/O操作系统I/O操作系统执行从集中式异步中央OS的数据获取,并且执行控制器功能,该功 能确定如何以及何时传送数据。根据本发明,部署一种构造,其中,基于便携概念的操作系统的功能可以将其功能 分为线程,其中线程类似于进程,但是可以与其他线程代码、数据和其他资源共享。在一个实施方式中,如图10所示,构造部署有操作系统801、803、805、807、812和 814的功能,而系统调用全部形成异步操作系统810和816,其使用线程化通信来一起操作。 具有其自己独立内核的每个操作系统被专门设计用于两个专用功能和队列管理。该布置 通过将所有的任务分布在计算机中来拆解周期时间,并且使用多个CPU。每个内核依赖于 CPU,而控制器由CPU或者专用控制器代替。主KOS进程状态以下典型的进程状态在所有种类的计算机系统上都是可行的。在这些状态中的多 数状态中,进程“存储”在主存储器上。创建(也称为“新建”)。当打开应用时,进程被第一次创建,其具有“创建”或者“新建” 状态。在该应用状态中,进程等待准入至“就绪”运行状态。该准入将由长期或者准入KOS 调度器来批准或者延迟。在准入期间,检查该进程所需要的资源,其后将其准入到运行状 态;或者可以将其重新指派为切换状态,以切换至具有该进程运行所需的适当资源的另一 CPU操作系统。就绪(等待)该状态类似于以上所述的“就绪”主进程状态。运行该状态类似于以上所述的“运行”主进程状态。切换(之前称为阻塞)(之前也称为“休眠”)。代替使进程“阻塞”在资源(诸如文件、信号量或者设备) 上,进程从当前CPU和操作系统被移除(因为阻塞的进程不能继续执行)并且处于阻塞状 态,移至其需要的资源连续可用的另一 CPU和操作系统。在单个CPU/单个OS情况下,进程 将保持“阻塞”,直到其资源变得可用,这可能会遗憾地导致死锁。从阻塞状态,操作系统可 以将使进程阻塞的资源的可用性通知给该进程(通过中断向操作系统本身提示资源可用 性)。一旦进程到达其资源可用的适当操作系统,进程即再次准入到“就绪”,并且可以从“就 绪”被分派至其“运行”状态,此后进程可以使用其新的可用资源。终止该状态类似于以上所述的“终止”主进程状态。附加进程状态两种附加状态对于支持虚拟存储器的系统中的进程是可用的。在这两种状态中,进程“存储”在次级存储器(通常是硬盘)上。换出和等待该状态类似于以上所述的“交换和等待”主进程状态。换出和阻塞该状态类似于以上所述的“换出和阻塞”主进程状态。图11示出了支持信令的协议。例如,协议KC可以用于同步多个内核Ks_852、 κι/0文件系统I853、K应用力54、K控制855禾Π K总线控制856。 讨论了用于同步三个或者更多内核以与 操作环境中的中央和核心内核同步工作的方法。UNIX操作系统通常由称为内核的核心组 成,而内核执行所有的中央命令并且跨过执行实现操作的特定任务的环境来分布多个处理 或者节点。此处描述的方法的不同之处在于首先允许中央核心内核将所有的输入和输出 操作中的大部分外包给I/O内核,然后该I/O内核将执行此操作的其余部分而不对中央内 核或者核心造成进一步负担。在操作系统内,文件1/0(即,去往和来自存储器的数据传送)占用了传统内核的 比例较大的操作,并且当传统的内核可以从此类繁重任务(也即,I/O)中解放出来时,由内 核执行的操作(诸如,应用和中断命令的管理,以及诸如在特定CPU上调度处理时间的其他 核心布置)将以降低的延迟完成。该方法描述了中央层级式内核与若干从属和/或异步内核的操作之间的任务分 离。一种对称内核处理环境,其中对称内核使用环境变量来异步地处理共享信息,以控制 和指出可能在此类环境一致性下另外发生的冲突。该方法还描述了对称的、形而上的类轮 (wheel-like)设备上的多个轮换(rotating)内核,其全部通过环境变量来共享信息,这些 环境变量用于控制内核与其操作的命令和数据之间的冲突。通信协议根据本发明的实施方式,通信协议被定义为在环境下运行的内核之间的通信,以 及在那些内核下运行的进程之间的通信协议。通过使通信由所考虑的特定类型通信外部的 进程来管理,通信协议允许两个或者更多进程存在并且在每个进程之间同时通信。根据配 置架构的类型,可以不同地设计通信协议。进程排队至通信端口而不是用于进程之间通信的表。如图12所示,进程911-916 都尝试访问通信端口 910。在释放请求和资源时,进程管理器管理进程之间的通信。在该 类似端口的通信过程期间,相对于标准IPC表配置而提供的多个优点之一在于不止两个 进程可以同时通信。另一个优点在于所有的通信由进程之间的协议而不是握手概念来管 理。当六个或者更多进程排队以建立彼此之间的通信时,每个进程需要建立其自身与一个 或者多个其他进程之间的直接连接。例如,在图12中,进程911具有要释放的资源A,并且进程912开始请求资源A。 在进程911与912之间建立了通信,通过该通信它们具有与资源A的共享关系,其由进程管 理器来管理,该进程管理器执行两个进程之间的通信。如果在给定情况下,进程911和进程 912都请求资源C,并且进程911在请求资源C的同时正在释放资源A,而进程915没有开始 释放资源C,则阻塞进程912的请求,直到进程911获取资源C并释放它。该给定情况由以 下事实决定存在多个请求资源的进程,并且可能可用资源不足。根据按照本发明的KOS的实施方式,以下所述的管理器都被使用,包括但不限于关系管理器、处理器管理器、线程管理器、资源管理器和资源分配管理器。以下的讨论描述 了这些管理器以及K0S的其他组件如何运作。关系管理器关系管理器管理在任意给定时刻环境中运行的多个内核之间的关系。虽然每个内 核可以负责执行其内核代码的任意数目的给定线程,但是该因素不进入由关系管理器执行 的任务内。根据本发明的实施方式,由关系管理器执行的任务是涉及内核及其彼此关系的 那些任务。取决于配置的类型,每个关系管理器使用特定的已建立协议来通信,以便在洋葱 圈(Ring-Onion)内核系统内组织的内核之间或者跨四个配置架构中每一个内的操作系统 来共享信息。这在图13中示出,其示出了资源管理器921和资源分配管理器922。在图13 内,称为资源共享的协议{A1}表示从关系管理器发送出的、请求驻留在环境中的特定资源 的知识的协议数据。本图中并且在相同资源管理器下的{B1}表示完全相同的协议的另一 层,其通告与资源空出或者到资源被释放的估计时间有关的信息。{C1}是第三参数和协议 层,其指示接收到的与已经被请求的、空出的资源或者特定资源驻留在哪里有关的信息。在另一示例中,关系管理器RM1产生针对关系管理器RM2下的资源A1的请求。 如果关系管理器冊2知道A1正在被使用,则关系管理器RM2可能通过进行其资源管理器 RsMgr2的请求来估计释放A1的时间长度,由此通过层级式协议的系统向请求的源发回信 肩、o一旦RM1得知A1的释放,RM1即使用例如特定协议层来向RM3发送信号。只要RM3 得知其内核或者其内核的线程之一占用了 A1资源,则如果在环形架构中,RM3信号通知环 境中所有操作内核或者操作系统的资源分配管理器;如果在星型中心架构下,RM3仅信号 通知命令控制操作系统或者内核。任务分布的配置虽然驻留在所有内核上的调度器对于如何在任何执行中分布任务来说是集中式 的,这些调度器对于本发明以及如何实现工作流来说也是集中式的。存在四种或者更多类 型的配置,在所述配置下,本发明的实施方式执行被指派给环境的任务,并且将其确定为环 境的中心命令结构,这些配置命名如下架构1.层级式结构在多个内核在本发明下的环境中同时运行的层级式结构中,主机内核对于所有的 控制是集中式的,并且接收所有传入的将要由该环境执行的作业或者任务。命令内核为任 务挑选所需要的资源,并且将特定任务指派到适当内核,所述任务将在该适当内核处执行 直到完成。命令内核之下是关系管理器,其管理命令内核与环境中运行的后续内核之间的 关系。关系管理器通过类似于以上所述的控制协议结构来管理其他内核。关系管理器记录 并且均衡在环境内运行的其他内核中的每个内核之间的资源请求和资源需求。为了执行这 一事务,关系管理器必须理解所有的任务和作业最初指派至何处以及为什么将其指派给特 定内核。在层级式结构下,将安装在环境中的资源指派给特定内核;例如,将打印机指派给 特定内核,而将视频屏幕指派给另一内核。由于获得特定资源的延迟,需要特定I/O驱动任 务的任务将不会中断视频/音频驱动任务。
2.轮转轮转配置由以预定顺序被指派给内核的任务组成。在这种情况下,如果内核不包 含执行任务所需要的资源,则关系管理器负责按顺序将该任务转发给下一个内核。根据本 发明,轮转配置可以适合多种不同的情况,然而,在其他情况中,其可能不受益于本发明预 期的所期望的益处。在轮转配置下,每个内核在环境中彼此异步地运行,并且由关系管理器链接,该关 系管理器由此与每个相应内核下的每个资源管理器通信。轮转配置不具有控制的中心点。 在该配置中,不存在命令内核。将每个内核视为在抽象环形配置中,并且通过其相应的关系 管理器连接至其他内核。3.先进先出在FiFo配置下,每个内核在先到先服务的基础上执行呈现给环境的每个任务。如 果需要将特定任务呈现给内核,并且内核空出足以接受给定任务,则任务将驻留在该内核 直到任务变为针对资源阻塞的。4.星型中心星型中心架构通过具有围绕中央命令内核的多个内核的环来定义。中央命令内核 是控制内核,其使用其设施来接收和组织针对星型配置下其他内核的任务请求。星型配置 根据环境内的资源而将从属内核分组为星座。考虑操作系统,其中给定任务需要使用给定 资源,而其他的任务通常在该资源上阻塞,直到一个任务完成其使用。根据本发明,在克服 此类瓶颈中,内核线程专用于运行特定内核的拷贝,同时允许其他内核使用其相应的线程。 针对多个操作系统的多个条件之一是允许专用内核使用如下能力来处理特定资源,即挤 出(thread out)其代码的拷贝来处理特定类型的多个附加资源;由此,多个内核不仅在多 个CPU上运行,而且在跨CPU的多重性的其本身的多个拷贝上运行。5.洋葱圈内核系统在洋葱圈内核系统中,多个卸下(strip-down)内核在操作系统的服务结构内同 时工作。操作系统的服务结构是指构成服务的特定操作系统集合的所有附属和辅助文件。 这些服务可以是共享的。在该架构下,给定设计的多样性,诸如内核代码外部的系统调用设 施和其他机制可能影响特定需求下的性能。在洋葱圈内核系统的情况下,内核全部执行单 个操作系统内核的任务,但是相对于彼此异步地执行,并且在分离的CPU上执行,同时共享 附属文件和设备。上面的图1示出了洋葱圈内核系统,其中内核的系统异步地执行任务,但是共享 相同的服务和设施。虽然每个内核在其本地空间内具有一组即时服务设施,但是更广泛的 服务在环境内的所有内核之间共享。虽然图1示出所有内核在没有命令和控制内核的情况下彼此异步地操作,但是根 据本发明的架构也允许安装命令和控制内核,由此,星型中心系统架构的类似规范将适用 于洋葱圈架构一致地应用。多处理器同步在传统同步模型中成立的一个基本假设是线程保持内核的专有权和使用(除了 中断),直到其准备离开内核或者在资源上阻塞。对多处理器而言这不再是有效模型,因为 每个处理器可能同时执行内核代码。在使用多线程的多处理器模型下,当每个处理器能够执行其内核代码的拷贝时,所有类型的数据都需要保护。在本发明下,这些类型的保护是有 效的,因为环境内存在多个内核,并且每个内核具有多个线程,这是利用全部运行其自己的 内核代码拷贝的多个进程来进行操作的结果。处理器管理器处理器(此后称为CPU)成为要进行管理的资源,如同本发明的其他资源一样。更 具体地,处理器管理器是管理CPU的数目及其对环境下运行的内核的分配的进程,或者是 管理内核线程使用的内核特定进程的拷贝。针对将要执行特定内核代码的拷贝以使用特定 资源的内核线程的使用的每个请求,都受到处理器管理器的管理。处理器的数目需要由处 理器管理器来编目和分配给当前环境中执行的每个线程。一个示例提供了对进程进行通信的进程间通信表的访问,特别是存在于现代内核 中的进程间通信表。该数据结构不是由中断处理程序来访问,并且不支持可能阻塞访问该 数据结构的进程的任何操作。因此,在单处理器系统上,内核可以在不锁定表的情况下对其 进行操作。然而,在多处理器系统下,情况可能并非如此。因此,在本发明中,在创建运行其 驻留内核代码的多个拷贝的进程之间的协作,并且需要使用附加到其他内核上的多个资源 的多个内核时,此类表需要进行扩展。根据本发明,一旦两个进程同时访问此类表以便在 进程之间通信,则该表必须被锁定,并且建议对当前抽象进行修改,以允许对此类表的管 理由处理器管理器来执行。当两个或者更多进程试图同时访问IPC表时,处理器管理器必 须实现对表的锁定,直到一个或者多个进程终止其通信链接,此后另一进程访问方被允许 访问该表。虽然锁定机制在IPC通信中是原语,但是在本发明中,其可以根据多处理器系统 IPC的原语进行扩展,以便允许三个或者更多进程在任何时间进行通信。进程间通信表内核间通信表在传统的内核系统下,内核仅仅检查已锁定标志并且将其置位到锁定位置以便对 表进行锁定,或者在对表进行解锁时将其重置。在本发明中,IPC和IKT相应地成为系统中 待管理的另一资源。表的复杂度导致了系统环境的复杂等级。如在本发明中,也如在多处 理器系统中,在不同的处理器上运行但是由处理器管理器来管理的两个线程,可以同时检 测针对相同资源的单个已锁定标志。如果两者都发现其未被置位,则两者将同时试图访问 特定的资源。因此,根据本发明,仅一个进程执行标志的检测,并且在这种情况下,如果资源 是处理器,则此类检测由处理器管理器来执行,如果资源是处理器以外的资源,则由资源管 理器来执行。管理器的这种设置是同时访问可能导致不可预知结果的情况下的一种预防措 施。线程管理器根据本发明,线程管理器定义为一种在这种本地内核下运行的进程,其记录指派 给在该内核下运行的轻量级进程(LWP)和其他进程的线程的所有使用。线程管理器将该信 息报告给运行以协助多个内核环境的同步的其他管理系统。如果MKE按照以上五种配置之 一来组织,则可以改变线程管理器的报告以满足特定环境的需求。这对于线程管理器来说 是重要的,例如用于报告所指派的线程的数目,以便较好地记录特定系统下给定的资源。资 源的报告由资源管理器负责;因此资源管理器据此依靠线程管理器来提供该类型的信息。资源管理器
根据本发明,资源管理器定义为被视为存在于环境内的资源的管理者。资源例如 被视为对于任何操作系统环境的主要组成部分,由此在存在或者可以存在多个驻留内核的 系统下,声明承担了重要意义。资源管理器管理驻留在本地内核等级的资源,并且每当特定 任务需要特定资源时,其请求经由资源管理器,并且如果请求针对特定内核上的不可用资 源,则资源管理器将联系关系管理器以便建立需要资源的任务与具有该特定资源的内核之 间的关系。资源分配管理器根据本发明,资源分配管理器执行对已经在如下进程间分配的所有资源的记录, 这些进程已经启动了在一个内核上发起、但是需要可能附加于另一内核上的资源的任务。 在这种情况下,资源管理器可能需要联系资源分配管理器,以便查找特定资源,或者清查环 境内所有可用的资源。在这种情况下,管理所有资源在内核之间的分配的资源分配管理器 向资源管理器提供必要的信息。在特定架构下,资源分配管理器和资源管理器可以存在于OS或者内核系统中,而 不是存在于环境内的命令内核系统或者操作系统中。为了讨论本发明的实施方式的目的, 资源分配和资源管理器都作为命令操作和内核系统的一部分而存在。附加示例图14-图23示出了本发明的实施方式的更加详细的示例。根据本发明的一个实 施方式,KOS在个体操作系统内非集中地执行。进程交换诸如使用共享存储器的信息,以通 知其他进程资源何时可用或者资源何时可能变得可用。作为一个示例,图14示出了两个进 程1001和1010,其交换关于使用共享存储器1015的资源Rl的信息。共享存储器1015包 含指示进程101等待的资源Rl现在可用的信息。进程1010现在可以诸如通过产生对资源 的调用来请求该资源。可以理解,虽然图14示出了包含关于一个资源的信息的共享存储器,但是在其他 实施方式中,共享存储器包含关于多个资源的信息。共享存储器还能够包含与图14中示出 的不同的信息,或者附加到图14所示的信息。在另一实施方式中,每个KOS包含指示其他KOS和每个支持的资源的表。该表还 指示资源如何调用(诸如,通过入口点或者对操作系统的系统调用),以及当前执行特定操 作系统的处理器上的负载。例如,在三处理器环境中,每个处理器执行KOS并且支持不同资 源,图15A-图15C示出了存储在每个KOS中的表。图15A示出了存储在操作系统OS 1中 的表。图15A中的行1101示出操作系统0S2具有入口点P2,支持资源R2和R3,并且具有 10%的系统(处理器)负载。行1102示出操作系统0S3具有入口点P3,支持资源R3,并且 具有10%的负载。针对0S2的图15B中的表以及针对0S3的表15C的解释是类似的,并且此处将不 再描述。在操作中,操作系统周期性地交换信息,诸如在特定时间或者当其资源参数改变超 过预定阈值时。图16示出了以不同格式存储资源信息、将资源映射至操作系统的表。例如,图16 的表中的行1202示出资源Rl当前通过OS 1可访问,行1202示出资源R2通过0S2和OSl 可访问,而行1203示出资源R3通过0S2和0S3可访问。图15A-图15C和图16中的表仅是示意性的。本领域技术人员将认识到,根据本
26发明的实施方式,多种不同格式和类型的信息包括在资源表中。图17示出根据本发明一个实施方式的具有多个K0S的系统1250交换资源信息。 系统1250包括具有关系管理器1251A和资源管理器1251B的K0S 1251,具有关系管理器 1255A和资源管理器1255B的K0S 1255,具有关系管理器1261A和资源管理器1260B的K0S 1260。如上所述,当K0S需要资源时,其使用资源管理器来检查其本地内核等级。如果不能 找到资源或者资源不可用,则其调用其关系管理器以通过另一内核操作系统来访问资源。图18-图23示出了根据本发明的中央K0S的实施方式。图18示出了执行多个操 作系统OS 11310、0S2 131U0S3 1312和0S41313的计算机系统1300,每个操作系统配置用 于访问一个或者多个资源。操作系统OS 11310和0S2 1311都配置用于访问打印机1320。 操作系统0S3 1312配置用于访问磁盘1321,而操作系统0S4 1313配置用于访问视频显示 器1322。在一个实施方式中,OS 1313特别适于与视频显示器对接。例如,OS 1313t可以 包括视频显示器驱动器,而OS 1310、0S2 1311和0S3 1312不包括;或者其对于视频显示 器1322的接口支持更多特征、具有较小的使用量、较快或者这些的任意组合。本领域技术 人员将认识到系统1300上仅有一些操作系统配置用于访问资源,而其他的没有这样配置, 以及一些操作系统比其他的操作系统更适于访问特定资源的多种原因。在操作中,进程请求对资源的使用,并且被引入内核操作调度器(K0S) 1305。K0S 1305首先确定内核操作系统1310-1313中的哪个最能够向进程提供所请求的资源,然后 将该进程指派给选定的内核操作系统。当多个内核操作系统能够提供所请求的资源时, K0S1305使用下面讨论的选择标准。作为一个示例,进程调用打印功能以访问打印机1320。 虽然0S 11310和0S2 1311都能够访问打印机1320,但是选择0S 1310,因为其更为空闲。图19更加详细地示出了 K0S 1305。如图19所示,在一个实施方式中,K0S 1305 包括命令内核1400和关系管理器1410。图20示出了根据本发明实施方式的存储在图19的关系管理器1410中的进程表 1450。进程表存储与进程、将其指派给的资源及其优先级有关的信息。例如,表1450的行 1451示出具有进程ID 1572的进程当前被指派给资源R1并且具有优先级1。可以理解,其他信息也可以存储在进程表1450中,诸如指示进程是否在等待资 源、其已经等待资源多久的信息,这只是其他类型信息的几个示例。图21是根据本发明实施方式的调度内核操作系统以处理进程的方法1500的流程 图。在开始步骤1501之后,在步骤1503中,方法确定是否存在在计算机系统上执行的任何 操作系统(0S)能够提供资源。然后,在步骤1505中,该方法确定是否不止一个0S能够提 供资源。如果仅有一个0S能够提供资源,则方法转到步骤1515 ;否则,其进入步骤1510。在步骤1510中,使用一个或者多个选择标准来选择多个0S中的一个,如下关于图 22所述,方法进入步骤1515。在步骤1515中,向进程分配资源,而在步骤1520中,方法结 束o图22示出了图21所示的方法1510的步骤,用于从全部可以提供所请求的资源的 多个内核操作系统中选择一个内核操作系统。在第一个步骤1550中,该方法选择具有最小 负载的操作系统。在步骤1555中,该方法确定单个0S是否满足该标准。如果满足,则该方 法转到步骤1575。否则,该方法继续到步骤1560,仅考虑那些具有最小负载的0S。在步骤1560中,该方法从其余0S中选择具有最少等待或者最少阻塞进程的0S,将其他的从考虑中排除。在步骤1565中,该方法确定是否仅有一个OS具有最少剩余或者阻 塞进程。如果仅有一个OS具有最少剩余或者阻塞的进程,则该方法转到步骤1575。否则, 该方法继续到步骤1570,其中以轮换或者其他的轮转方式从其余OS中选择一个OS。然后, 在步骤1575,由选定的OS来为进程分配所请求的资源。该方法在步骤1580停止。此处,认 为“选择标准”包括OS的状态(阻塞或者等待的进程的数目,以及执行OS的处理器上的负 载)。可以理解,步骤1510仅是示例性的。本领域技术人员将认识到多种变体。例如, 步骤1510能够以不同的顺序布置;能够添加一些步骤而其他的能够删除;或者执行步骤的 完全不同组。作为一个不同的步骤,当两个OS都能够提供资源时,选择在较快的微处理器 上执行的OS。图23示出了根据本发明一个实施方式的系统1600的组件以及当进程请求计算机 系统上的资源时的事务序列。系统1600包括执行进程1610A并且提供对资源1610B的访 问的操作系统1610,执行进程1660A并且提供对资源1660A-D的访问的操作系统1660,以 及 KOS 1650。如图23所示,进程1610A诸如通过资源管理器来产生针对资源1660B的请求 1706。如虚线1706所示,资源是本地不可用的,所以针对资源1660B的请求1720被转发至 KOS 1650。KOS 1650确定OS 1660可以提供该资源,所以针对该资源的请求1730被转发至 提供资源1660B的OS 1660。“提供”资源的步骤取决于所请求的特定资源。如果资源是CPU,则指派可以包括 将进程的标识符置于OS 450的运行队列中。如果资源是磁盘,则指派可以包括将进程置于 将进程分派给磁盘的队列上。根据本发明,能够将进程从一个OS切换至另一个。作为一个示例,当进程通过一 个OS访问资源时,可以向执行该OS的处理器指派其他任务,该处理器由此变慢。换言之, OS是资源。根据本发明的KOS能够将进程重新指派给能够更加有效地执行进程的另一 CPU。本发明的实施方式允许资源更加有效地共享,在提供资源的操作系统之间均衡负 载。这减少了瓶颈、进程饥饿以及影响多处理器系统的其他问题。此外,可以很容易地将进 程指派给指定用于执行特定任务的资源和操作系统,还获得了更加有效的进程执行。可以理解,根据本发明的K0S、其每个组件以及此处所述的每个算法能够存储在计 算机可读介质中,该计算机可读介质包含用于实现KOS的功能的计算机可执行指令。指令 能够作为一个或者多个软件组件、一个或者多个硬件组件、这些的组合或者执行算法的步 骤的计算机所使用的任何元件而存储在计算机可读介质中。虽然此处在合并了促进理解本发明的构造和操作原理的细节的特定实施方式的 方面描述了本发明,但是于此对于特定实施方式及其细节的提及不旨在限制所附的权利要 求的范围。在不脱离由所附权利要求定义的本发明的精神和范围的情况下,对选择用于示 出的实施方式可以做出修改对于本领域技术人员将是明显的。
权利要求
一种计算机系统,包括多个资源;以及包含多个操作系统的存储器,每个操作系统包含内核调度器,其中多个内核调度器配置用于协调向所述计算机系统上执行的进程分配所述资源。
2.根据权利要求1所述的计算机系统,进一步包括多个中央处理单元,每个在所述多 个中央处理单元中不同的一个上执行。
3.根据权利要求1所述的计算机系统,其中所述多个资源包括以下任意两个或者更 多键盘控制器、视频控制器、音频控制器、网络控制器、磁盘控制器、通用串行总线控制器 和打印机。
4.根据权利要求1所述的计算机系统,其中所述多个内核调度器配置用于使用通信协 议来共享与资源相关的信息。
5.根据权利要求4所述的计算机系统,其中所述通信协议配置用于访问共享存储器。
6.根据权利要求4所述的计算机系统,其中所述通信协议包括进程间通信或者协议栈。
7.根据权利要求4所述的计算机系统,其中所述通信协议包括传输控制协议/网际协议。
8.根据权利要求4所述的计算机系统,其中所述通信协议包括访问信号量、管道、信 号、消息队列、对数据的指针和文件描述符。
9.根据权利要求4所述的计算机系统,其中所述进程包括彼此通信的至少三个进程。
10.根据权利要求1所述的计算机系统,其中所述多个内核调度器中的每一个包括用 于协调分配所述资源的关系管理器。
11.根据权利要求10所述的计算机系统,其中所述多个关系管理器中的每一个包括资 源管理器,所述资源管理器配置用于确定与所述多个资源中的一个或者多个有关的资源信 肩、o
12.根据权利要求11所述的计算机系统,其中所述资源信息包括直到资源变为可用时 的估计时间。
13.一种计算机系统,包括存储器,包含内核调度器和配置用于访问多个资源的多个操作系统内核,其中所述内 核调度器配置用于将请求来自所述多个资源的资源的进程指派给所述多个操作系统内核 中相应的一个。
14.根据权利要求13所述的计算机系统,进一步包括多个处理器,每个处理器执行所 述多个操作系统中相应的一个。
15.根据权利要求14所述的计算机系统,其中所述内核调度器基于所述多个处理器上 的负载在所述多个操作系统内核上调度进程。
16.根据权利要求13所述的计算机系统,其中所述资源包括以下两个或更多键盘控 制器、视频控制器、音频控制器、网络控制器、磁盘控制器、通用串行总线控制器和打印机。
17.根据权利要求13所述的计算机系统,进一步包括进程表,其对针对资源的请求与 所述多个操作系统内核中的一个或者多个进行匹配。
18.根据权利要求13所述的计算机系统,进一步包括所述多个操作系统内核的配对之间的通信通道。
19.根据权利要求13所述的计算机系统,其中所述多个操作系统内核配置用于交换与 以下有关的信息处理器负载、资源可用性以及资源变为可用时的估计时间。
20.一种内核调度系统,包括多个处理器,每个处理器执行操作系统内核,并且配置用于访问一个或者多个资源;以及指派模块,被编程用于对请求资源的进程进行匹配,以及用于将所述进程分派给多个 操作系统内核中能够访问所述资源的一个。
21.根据权利要求20所述的内核调度系统,其中所述多个处理器中的每一个由相应的 处理器调度器来控制。
22.一种为操作系统内核指派资源的方法,包括基于其访问资源的能力,从多个操作系统内核中选择操作系统内核;以及 将所述进程指派给选择的操作系统内核。
23.根据权利要求22所述的方法,其中所述多个操作系统内核全部在单个存储器内执行。
24.一种在单个计算机系统的存储器上的第一操作系统和第二操作系统之间共享进程 执行的方法,包括在所述第一操作系统的控制下,在所述存储器内执行进程;以及 将第一进程的控制移交给所述存储器内的第二操作系统,由此在所述第二操作系统的 控制下,在所述存储器内执行第一进程。
25.根据权利要求24所述的方法,其中在所述第一操作系统和所述第二操作系统的控 制下执行进程都访问单个资源。
26.根据权利要求25所述的方法,进一步包括使用共享存储器、进程间通信以及信号 量之一,在所述第一操作系统和所述第二操作系统之间交换进程信息。
全文摘要
本发明在多操作系统计算机系统中分配资源,从而避免了瓶颈以及由对于有限资源的竞争所导致的其他降级。在一个实施方式中,计算机系统包括资源和多个处理器,多个处理器执行提供对资源的访问的多个操作系统。资源包括打印机、磁盘控制器、存储器、网络控制器以及其他经常访问的资源。每个操作系统包含内核调度器。而且,多个内核调度器配置用于向在计算机系统上执行的进程协调分配资源。
文档编号G06F9/46GK101896886SQ200880120073
公开日2010年11月24日 申请日期2008年11月5日 优先权日2007年10月31日
发明者E·B·卡特 申请人:艾科立方公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1