一种异构操作系统中内核运行的方法及装置制造方法

文档序号:6500694阅读:201来源:国知局
一种异构操作系统中内核运行的方法及装置制造方法
【专利摘要】本发明公开了一种异构操作系统中内核运行的方法及装置,应用于众核平台,包括:将CPU的核资源池中的核设置为空闲状态;根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行;其中,所述内核类型包括:单内核和微内核。本发明还公开了相应的异构操作系统中内核运行的装置。通过在单内核和微内核两种内核类型之间设置一种空闲状态,可以使核在微内核和单内核之间动态转换地运行,从而在操作系统中能够根据运行需求同时运行单内核和微内核,兼有两种内核类型的优点。
【专利说明】—种异构操作系统中内核运行的方法及装置

【技术领域】
[0001]本发明涉及众核操作系统【技术领域】,尤其涉及一种异构操作系统中内核运行的方法及装置。

【背景技术】
[0002]目前,处理器已进入多核/众核时代,然而,目前的操作系统(OperatingSystem,OS)仅以对称多处理器(Symmetric Mult1-Processing, SMP)方式使用多核/众核处理器,并不能充分利用多核/众核处理器的并行处理能力。实验证明,当处理器超过16个核,现有Linux操作系统的性能不再线性增长反而降低。因此,目前对众核平台产生了许多研究型的操作系统,这些众核OS的特点是:微内核架构,现有众核OS都采用了微内核架构;多内核设计,可避免单一内核的性能瓶颈;采用消息通信,此技术可提升众核OS的扩展性。
[0003]微内核操作系统结构的一个突出思想是把操作系统中更多的组建和功能放到更高的层次(及用户模式)中去运行,而留下一个尽量小的内核,用它来完成操作系统最基本的核功能。如图1所示,微内核一般只提供基本的硬件操作接口,将OS必须提供的功能以系统服务的形式运行在用户态,用户调用系统服务完成工作;服务相互之间隔离,即使某个服务出现异常也不会干扰到其他模块;服务和服务之间通过进程间通信(Inter-ProcessCommunicat1n, IPC)的方式工作。现有的微内核操作系统都是基于客户/服务器模型的,用户通过向OS发送请求消息通知OS需要调用一种系统服务,OS收到消息后调度相应的服务进程,完成后再通过消息通信的方式将结果通知给用户。如图2所示,为一次调用系统服务的过程。
[0004]微内核的消息通信方式虽然增强了 OS的扩展性,但影响了操作系统服务的性能。与单内核操作系统相比,完成同样的一次系统服务,微内核的开销比单内核多了几倍甚至更多。单内核操作系统(以Linux操作系统为例)所有的OS提供的服务都将代码编写在内核模块中,完成一次系统服务所需要的过程是用户程序陷入内核,然后由内核执行系统服务,完成后从内核态返回用户态,开销仅为2次上下文切换。而微内核操作系统,完成一次调用所需的开销通常是4次上下文切换。每次切换都伴随着陷入内核和返回用户态,通信和上下文切换带来的开销很大,性能问题非常严重。
[0005]综上所述,如何更好地处理单内核以及微内核的运行,提升系统处理效率已成为业界迫切需要解决的问题。


【发明内容】

[0006]有鉴于此,本发明实施例提供了一种异构操作系统中内核运行的方法及装置,用于解决现有技术存在着的无法很好处理单内核以及微内核运行的问题。
[0007]第一方面,提供了一种异构操作系统中内核运行的方法,应用于众核平台,包括:
[0008]将CPU的核资源池中的核设置为空闲状态;
[0009]根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行;
[0010]其中,所述内核类型包括:单内核和微内核。
[0011]在第一种可能的实现方式中,所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行,包括:
[0012]当操作系统所要运行的第一应用程序的线程数量和并行需求多时,将所述CPU的核资源池中的至少一个空闲状态的核以微内核运行;
[0013]当所述操作系统所要运行的第二应用程序的线程数量和并行需求少时,将所述CPU的核资源池中的至少一个空闲状态的核以单内核运行。
[0014]根据第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述将CPU的核资源池中的核设置为空闲状态之后,以及所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行之前,还包括:
[0015]为所述单内核以及所述微内核统一分配第一地址空间;
[0016]所述单内核为运行所述单内核的核分配第二地址空间;
[0017]所述微内核对应的用户态程序为运行所述微内核的核分配第三地址空间。
[0018]根据第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行,包括:
[0019]当根据运行需求,需要将所述核以单内核运行时,在所述CPU的核资源池中查找一个空闲状态的核,加载单内核镜像至所述第二地址空间;
[0020]向所述核发送所述中断消息,以使所述核以单内核运行;
[0021]当根据运行需求,需要将所述核以微内核运行时,在所述CPU的核资源池中查找一个空闲状态的核,加载微内核镜像至所述第三地址空间;
[0022]向所述核发送所述中断消息,以使所述核以微内核运行。
[0023]根据第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行,还包括:
[0024]当在所述CPU的核资源池中查找到空闲状态的核时,将查找到的所述空闲状态的核以对称多处理器SMP方式加入至运行中的单内核中,以使查找到的所述空闲状态的核以单内核运行。
[0025]根据第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行之后,还包括:
[0026]当以所述微内核或单内核运行的多个所述核上的负载减少时,将其中一个所述核中运行的任务迁移至以微内核或单内核运行的另一个所述核上,并将所述其中一个所述核设置为空闲状态,放入所述CPU的核资源池。
[0027]根据第一方面的第五种可能的实现方式,在第六种可能的实现方式中,所述将其中一个所述核中运行的任务迁移至以微内核或单内核运行的另一个所述核上,并将所述其中一个所述核设置为空闲状态,放入所述CPU的核资源池之后,还包括:
[0028]将所述微内核镜像保留在所述第三地址空间或将所述单内核镜像保留在所述第二地址空间中;
[0029]存储所述核的寄存器信息;
[0030]当从所述CPU的核资源池重新选择所述空闲状态的核以所述微内核或单内核运行时,将所述寄存器信息加载至所述重新选择的空闲状态的核,则所述重新选择的空闲状态的核以所述微内核或单内核运行。
[0031]根据第一方面的第五种可能的实现方式或第一方面的第六种可能的实现方式,在第七种可能的实现方式中,所述将其中一个所述核中运行的任务迁移至以微内核或单内核运行的另一个所述核上,并将所述其中一个所述核设置为空闲状态,放入所述CPU的核资源池之后,还包括:
[0032]根据所述空闲状态的核与所述CPU的核资源池中正在运行的核之间的物理位置的距离,给所述空闲状态的核设置电源级别;
[0033]根据所述电源级别,依次唤醒所述空闲状态的核。
[0034]第二方面,提供了一种异构操作系统中内核运行的装置,应用于众核平台,包括:
[0035]第一设置单元,用于将CPU的核资源池中的核设置为空闲状态;
[0036]运行单元,用于根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行;
[0037]其中,所述内核类型包括:单内核和微内核。
[0038]在第一种可能的实现方式中,所述运行单元包括:
[0039]微内核运行单元,用于当操作系统所要运行的第一应用程序的线程数量和并行需求多时,将所述CPU的核资源池中的至少一个空闲状态的核以微内核运行;
[0040]单内核运行单元,用于当所述操作系统所要运行的第二应用程序的线程数量和并行需求少时,将所述CPU的核资源池中的至少一个空闲状态的核以单内核运行。
[0041]根据第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述装置还包括:
[0042]第一地址分配单元,用于为所述单内核以及所述微内核统一分配第一地址空间;
[0043]第二地址分配单元,用于由所述单内核为运行所述单内核的核分配第二地址空间;
[0044]第三地址分配单元,用于由所述微内核对应的用户态程序为运行所述微内核的核分配第三地址空间。
[0045]根据第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述运行单元包括:
[0046]查找单元,用于当根据运行需求,需要将所述核以单内核运行时,在所述CPU的核资源池中查找一个空闲状态的核;
[0047]第一加载单元,用于加载单内核镜像至所述第二地址空间;
[0048]中断单元,用于向所述核发送所述中断消息,以使所述核以单内核运行;
[0049]所述查找单元还用于当根据运行需求,需要将所述核以微内核运行时,在所述CPU的核资源池中查找一个空闲状态的核;
[0050]所述第一加载单元还用于加载微内核镜像至所述第三地址空间;
[0051]所述中断单元还用于向所述核发送所述中断消息,以使所述核以微内核运行。
[0052]根据第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述运行单元还包括:
[0053]加入单元,用于当在所述CPU的核资源池中查找到空闲状态的核时,将查找到的所述空闲状态的核以对称多处理器SMP方式加入至运行中的单内核中,以使查找到的所述空闲状态的核以单内核运行。
[0054]根据第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式或第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述装置还包括:
[0055]迁移单元,用于当以所述微内核或单内核运行的多个所述核上的负载减少时,将其中一个所述核中运行的任务迁移至以微内核或单内核运行的另一个所述核上;
[0056]所述第一设置单元还用于将所述其中一个所述核设置为空闲状态,放入所述CPU的核资源池。
[0057]根据第二方面的第五种可能的实现方式,在第六种可能的实现方式中,所述装置还包括:
[0058]保留单元,用于将所述微内核镜像保留在所述第三地址空间或将所述单内核镜像保留在所述第二地址空间中;
[0059]存储单元,用于存储所述核的寄存器信息;
[0060]第二加载单元,用于当从所述CPU的核资源池重新选择所述空闲状态的核以所述微内核或单内核运行时,将所述寄存器信息加载至所述重新选择的空闲状态的核,则所述重新选择的空闲状态的核以所述微内核或单内核运行。
[0061]根据第二方面的第五种可能的实现方式或第二方面的第六种可能的实现方式,在第七种可能的实现方式中,所述装置还包括:
[0062]第二设置单元,用于根据所述空闲状态的核与所述CPU的核资源池中正在运行的核之间的物理位置的距离,给所述空闲状态的核设置电源级别;
[0063]唤醒单元,用于根据所述电源级别,依次唤醒所述空闲状态的核。
[0064]采用本发明提供的一种异构操作系统中内核运行的方法及装置的技术方案,通过在单内核和微内核两种内核类型之间设置一种空闲状态,可以使核在微内核和单内核之间动态转换地运行,从而在操作系统中能够根据运行需求同时运行单内核和微内核,兼有两种内核类型的优点,提升了系统处理效率。

【专利附图】

【附图说明】
[0065]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0066]图1为现有技术中微内核操作系统架构示意图;
[0067]图2为现有技术中微内核操作系统调用流程的方法流程图;
[0068]图3为本发明一种异构操作系统中内核运行的方法的一个实施例的方法流程图;
[0069]图4为本发明操作系统中核的状态示意图;
[0070]图5为本发明一种异构操作系统中内核运行的方法的另一个实施例的方法流程图;
[0071]图6为内存地址空间分布示意图;
[0072]图7为延迟回收内核的方法流程图;
[0073]图8为空闲状态的核所处的电源级别队列示意图;
[0074]图9为本发明一种异构操作系统中内核运行的装置的一个实施例的结构示意图;
[0075]图10为运行单元的结构示意图;
[0076]图11为本发明一种异构操作系统中内核运行的装置的另一个实施例的结构示意图;
[0077]图12为本发明一种异构操作系统中内核运行的设备的实施例的结构示意图。

【具体实施方式】
[0078]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0079]图3为本发明一种异构操作系统中内核运行的方法的一个实施例的方法流程图。如图3所示,该方法应用于众核平台,包括以下步骤:
[0080]步骤SlOldf CPU的核资源池中的核设置为空闲状态。
[0081]图4为操作系统中核(core)的状态示意图。如图4所示,操作系统将所有的核分成三种状态:以微内核运行、以单内核运行和空闲状态,运行时的内核类型包括:单内核和微内核,并建立一个CPU的核资源池,在操作系统启动时,将CPU的核资源池中的核设置为空闲状态;以及当核退出运行,处于空闲状态时,回收放入该CPU的核资源池。空闲状态的核可以调用为以两种内核类型中的任意一种运行。
[0082]其中,将正在运行的核设置为空闲状态是通过ACPI管理电源,把供电关掉。具体地,首先,在CPU的核资源池里将核标记为空闲状态;然后,通过ACPI电源管理,控制核降到S4电源级别。ACPI是高级电源管理规范,大部分计算机都符合这一规范,操作系统可以通过硬件提供的ACPI接口对核进行电源操作,属于已有技术。
[0083]步骤S102,根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行。
[0084]在本步骤中,根据运行需求,将CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行;其中,该内核类型包括:单内核和微内核。具体地,操作系统所要运行的各个应用程序的线程数量和并行需求有时差别很大,因此,当操作系统所要运行的应用程序的线程数量和并行需求多时,将所述CPU的核资源池中的至少一个空闲状态的核指定以微内核运行;当所述操作系统所要运行的应用程序的线程数量和并行需求少时,将所述CPU的核资源池中的至少一个空闲状态的核指定以单内核运行。
[0085]当核以微内核运行时,该微内核一般只提供基本的硬件操作接口,将OS必须提供的功能以系统服务的形式运行在用户态,用户调用系统服务完成工作;服务相互之间隔离,即使某个服务出现异常也不会干扰到其他模块;服务和服务之间通过IPC通信的方式工作。微内核操作系统是基于客户/服务器模型的,用户通过向OS发送请求消息通知OS需要调用一种系统服务,OS收到消息后调度相应的服务进程,完成后再通过消息通信的方式将结果通知给用户。
[0086]当核以单内核运行时,所有的OS提供的服务都将代码编写在内核模块中,完成一次系统服务所需要的过程是用户程序陷入内核,然后由内核执行系统服务,完成后从内核态返回用户态。
[0087]当核退出微内核或单内核的运行时,都将该核重新设置为空闲状态,放入CPU的核资源池。这样,原先以微内核运行的核,设置为空闲状态放入CPU的核资源池后,下一次操作系统加载该核,可以根据运行需求将其以单内核运行;同样地,原先以单内核运行的核,设置为空闲状态放入CPU的核资源池后,下一次操作系统加载该核,可以根据运行需求将其以微内核运行。这样,通过在单内核和微内核两种内核类型之间设置一种空闲状态,可以使核在微内核和单内核之间动态转换地运行,使核能够根据运行需求得到灵活配置。
[0088]根据本发明提供的一种异构操作系统中内核运行的方法的一个实施例,通过在单内核和微内核两种内核类型之间设置一种空闲状态,可以使核在微内核和单内核之间动态转换地运行,从而在操作系统中能够根据运行需求同时运行单内核和微内核,兼有两种内核类型的优点。
[0089]图5为本发明一种异构操作系统中内核运行的方法的另一个实施例的方法流程图。如图5所示,该方法应用于众核平台,包括以下步骤:
[0090]步骤S201,将CPU的核资源池中的核设置为空闲状态。
[0091]操作系统启动时,先启动一个指定的启动核,该启动核可以以单内核或微内核运行,该启动核中存储启动程序,使得操作系统可以通过基本输入输出系统(Basic InputOutput System, B1S)启动。
[0092]该启动核启动后,启动一个核管理程序,将所有核组成一个CPU的核资源池,并将该CPU的核资源池中的所有核设置为空闲状态。当核退出运行,处于空闲状态时,回收放入该CPU的核资源池。空闲状态的核可以调用为以两种内核类型中的任意一种运行,其中,内核类型包括单内核和微内核。
[0093]其中,将正在运行的核设置为空闲状态是通过ACPI管理电源,把供电关掉。具体地,首先,在CPU的核资源池里将核标记为空闲状态;然后,通过ACPI电源管理,控制核降到S4电源级别。ACPI是高级电源管理规范,大部分计算机都符合这一规范,操作系统可以通过硬件提供的ACPI接口对核进行电源操作,属于已有技术。
[0094]步骤S202,为所述单内核以及所述微内核统一分配第一地址空间。
[0095]步骤S203,所述单内核为运行所述单内核的核分配第二地址空间。
[0096]步骤S204,所述微内核对应的用户态程序为运行所述微内核的核分配第三地址空间。
[0097]启动核启动后,还进行操作系统的资源的分配,一个实现方式是通过将操作系统中如内存、外设等资源进行集中管理,操作系统启动后在启动核上运行一个资源管理程序,通过资源管理程序将系统资源分配给对应的核,每个核只能使用分配到核上的部分资源。
[0098]启动核启动以后收集系统信息,其中,资源管理程序会收集内存信息,获取内存的大小和占用情况。图6为内存地址空间分布示意图,如图6所示,获取内存地址空间为4G,其中,O?2G划分给用户使用,操作系统为单内核以及微内核统一分配地址空间,如将2G?4G划分给内核使用。
[0099]对于单内核,资源管理程序会分配一些空闲物理内存给单内核使用,单内核每次分配物理内存都是从资源管理程序分配的部分中去分配,单内核为运行单内核的核分配地址空间;应用程序释放内存后由单内核回收;单内核在使用内存发生不足时向启动核上的资源管理程序申请新的空闲内存;单内核长时间不使用的内存会释放给资源管理程序。
[0100]对于微内核,所有的微内核共享一个内存管理程序,这个内存管理程序统一向资源管理程序申请内存,内存的使用方式同单内核,只是管理者不是内核而是一个内存管理程序。
[0101]步骤S205,当根据运行需求,需要将所述核以单内核运行时,在所述CPU的核资源池中查找一个空闲状态的核,加载单内核镜像至所述第二地址空间。
[0102]在本步骤中,当操作系统所要运行的应用程序的线程数量和并行需求少时,需要将核以单内核运行,操作系统在CPU的核资源池中查找一个空闲状态的核,从镜像的存储空间加载该核的单内核镜像至该核对应的地址空间,该地址空间是单内核为以单内核运行的核分配的地址空间。该单内核镜像为单内核运行所必须的运行程序。
[0103]该步骤为创建一个单内核时的情况,操作系统需要给核加载单内核镜像。
[0104]还有另一种情况,空闲状态的核以SMP方式加入至运行中的单内核时,此时,操作系统不需要再给核加载单内核镜像,直接将从CPU的核资源池中查找到的空闲状态的核以SMP方式加入至运行中的单内核中即可。
[0105]步骤S206,向所述核发送所述中断消息,以使所述核以单内核运行。
[0106]首先,操作系统生成该核的中断消息,该中断消息包括:单内核镜像的存储位置、起始地址、大小和名称等。然后,操作系统向该核发送该中断消息,该空闲状态的核接收到该中断消息,便将地址空间中的单内核镜像在该核上运行,从而使得该核以单内核运行。
[0107]步骤S207,当根据运行需求,需要将所述核以微内核运行时,在所述CPU的核资源池中查找一个空闲状态的核,加载微内核镜像至所述第三地址空间。
[0108]在本步骤中,当操作系统所要运行的应用程序的线程数量和并行需求多时,需要将核以微内核运行,操作系统在CPU的核资源池中查找一个空闲状态的核,从镜像的存储空间加载该核的微内核镜像至该核对应的地址空间,该地址空间是微内核对应的用户态程序为运行微内核的核分配的地址空间。该微内核镜像为微内核运行所必须的运行程序。
[0109]步骤S208,向所述核发送所述中断消息,以使所述核以微内核运行。
[0110]类似于步骤S206,首先,操作系统生成该核的中断消息,该中断消息包括:微内核镜像的存储位置、起始地址、大小和名称等。然后,操作系统向该核发送该中断消息,该空闲状态的核接收到该中断消息,便将地址空间中的微内核镜像在该核上运行,从而使得该核以微内核运行。
[0111]步骤S209,当以所述微内核或单内核运行的多个所述核上的负载减少时,将其中一个所述核中运行的任务迁移至以微内核或单内核运行的另一个所述核上,并将所述其中一个所述核设置为空闲状态,放入所述CPU的核资源池。
[0112]当核以微内核或单内核运行时,有一些操作系统的进程,如用户态任务等。当以微内核或单内核运行的多个核上的负载减少时,需要其中一个核运行时占有的操作系统进程迁移至正在以微内核或单内核运行的另一个核占有的操作系统进程队列中,使得未完成的用户态任务按照队列继续进行,不中断操作系统的服务。
[0113]最后,将该迁移完任务的核重新设置为空闲状态,放入CPU的核资源池。
[0114]当微内核或单内核完成任务迁移后,单内核或微内核的内存管理程序可以将分别保存在第二地址空间的单内核镜像或保存在第三地址空间的微内核镜像销毁,以回收该地址空间;对于一些内核,下次唤醒时可能加载的是相同的镜像,这时也可以将镜像保留,即延迟回收内核,使得在重新选择对应的核运行时,可以加载该保留的镜像,如图7所示,具体的延迟回收内核的步骤如下:
[0115]步骤S2091,将所述微内核镜像保留在所述第三地址空间或将所述单内核镜像保留在所述第二地址空间中。
[0116]当微内核或单内核完成任务迁移后,操作系统不将分别保存在第二地址空间的单内核镜像或保存在第三地址空间的微内核镜像立即销毁,而是保留在相应的地址空间中。
[0117]步骤S2092,存储所述核的寄存器信息。
[0118]将微内核或单内核运行时存储在寄存器中的一些数据进行存储。
[0119]步骤S2093,当从所述CPU的核资源池重新选择所述空闲状态的核以所述微内核或单内核运行时,将所述寄存器信息加载至所述重新选择的空闲状态的核,则所述重新选择的空闲状态的核以所述微内核或单内核运行。
[0120]当从CPU的核资源池重新选择空闲状态的核以微内核或单内核运行时,将存储的寄存器信息加载至该重新选择的空闲状态的核,这些寄存器信息中包含了启动运行的中断消息,且由于在地址空间中保留了微内核镜像或单内核镜像,不需要重新加载,则该重新选择的空闲状态的核可以微内核或单内核运行。
[0121]步骤S210,根据所述空闲状态的核与所述CPU的核资源池中正在运行的核之间的物理位置的距离,给所述空闲状态的核设置电源级别。
[0122]步骤S211,根据所述电源级别,依次唤醒所述空闲状态的核。
[0123]本实施例的操作系统的节能技术充分考虑众核平台的mesh网络和核间亲和性等特性,首先,根据空闲状态的核与CPU的核资源池中正在运行的核之间的物理位置的距离,给空闲状态的核设置电源级别,电源级别用于表示空闲状态的核被唤醒的能力,电源级别一般分为S1、S2、S3和S4等级别,作为举例,设置从SI到S4, CPU的核被唤醒的能力变小。一些处于空闲状态的核,它们的物理位置临近活动区,这些核随时可能因为操作系统的需求被加载,因此,这些位置上的核不会马上设置它处于深度睡眠状态,而是将它设为S1、S2电源级别。然后,根据电源级别,依次唤醒空闲状态的核。
[0124]图8为空闲状态的核所处的电源级别队列示意图。如图8所示,coreO、corel组成一个工作区,corelO?corel5组成另一个工作区,如果工作区需要扩展,首先被唤醒的应该是core2、core9,因此,core2、core9处于SI状态下,因为core8被唤醒的可能性也比较大,因此处于S2状态下,其他core根据OS的安排分别处于S3或S4状态,这样既可以节能又不会有太大的性能损失。
[0125]根据本发明提供的一种异构操作系统中内核运行的方法的另一个实施例,通过在单内核和微内核两种内核类型之间设置一种空闲状态,可以使核在微内核和单内核之间动态转换地运行,从而在操作系统中能够根据运行需求同时运行单内核和微内核,兼有两种内核类型的优点;同时,操作系统的节能技术充分考虑众核平台的mesh网络和核间亲和性等特性,既能保证系统性能又能有效地节能。
[0126]图9为本发明一种异构操作系统中内核运行的装置的一个实施例的结构示意图。如图9所示,该装置1000应用于众核平台,包括:
[0127]第一设置单元101,用于将CPU的核资源池中的核设置为空闲状态。
[0128]图4为操作系统中核(core)的状态示意图。如图4所示,操作系统将所有的核分成三种状态:以微内核运行、以单内核运行和空闲状态,运行时的内核类型包括:单内核和微内核,并建立一个CPU的核资源池,在操作系统启动时,第一设置单元101将CPU的核资源池中的核设置为空闲状态;以及当核退出运行,处于空闲状态时,回收放入该CPU的核资源池。空闲状态的核可以调用为以两种内核类型中的任意一种运行。
[0129]其中,第一设置单元101将正在运行的核设置为空闲状态,是通过ACPI管理电源,把供电关掉。具体地,首先,在CPU的核资源池里将核标记为空闲状态;然后,通过ACPI电源管理,控制核降到S4电源级别。ACPI是高级电源管理规范,大部分计算机都符合这一规范,操作系统可以通过硬件提供的ACPI接口对核进行电源操作,属于已有技术。
[0130]运行单元102,用于根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行。
[0131]在本实施例中,运行单元102根据运行需求,将CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行;其中,该内核类型包括:单内核和微内核。
[0132]具体地,操作系统所要运行的各个应用程序的线程数量和并行需求有时差别很大,因此,如图10所示,该运行单元102可以包括:微内核运行单元1021和单内核运行单元1022。当操作系统所要运行的应用程序的线程数量和并行需求多时,微内核运行单元1021将所述CPU的核资源池中的至少一个空闲状态的核指定以微内核运行;当所述操作系统所要运行的应用程序的线程数量和并行需求少时,单内核运行单元1022将所述CPU的核资源池中的至少一个空闲状态的核指定以单内核运行。
[0133]当核以微内核运行时,该微内核一般只提供基本的硬件操作接口,将OS必须提供的功能以系统服务的形式运行在用户态,用户调用系统服务完成工作;服务相互之间隔离,即使某个服务出现异常也不会干扰到其他模块;服务和服务之间通过IPC通信的方式工作。微内核操作系统是基于客户/服务器模型的,用户通过向OS发送请求消息通知OS需要调用一种系统服务,OS收到消息后调度相应的服务进程,完成后再通过消息通信的方式将结果通知给用户。
[0134]当核以单内核运行时,所有的OS提供的服务都将代码编写在内核模块中,完成一次系统服务所需要的过程是用户程序陷入内核,然后由内核执行系统服务,完成后从内核态返回用户态。
[0135]当核退出微内核或单内核的运行时,第一设置单元101将该核重新设置为空闲状态,放入CPU的核资源池。这样,原先以微内核运行的核,设置为空闲状态放入CPU的核资源池后,下一次操作系统加载该核,可以根据运行需求将其以单内核运行;同样地,原先以单内核运行的核,设置为空闲状态放入CPU的核资源池后,下一次操作系统加载该核,可以根据运行需求将其以微内核运行。这样,通过在单内核和微内核两种内核类型之间设置一种空闲状态,可以使核在微内核和单内核之间动态转换地运行,使核能够根据运行需求得到灵活配置。
[0136]根据本发明提供的一种异构操作系统中内核运行的装置的一个实施例,通过在单内核和微内核两种内核类型之间设置一种空闲状态,可以使核在微内核和单内核之间动态转换地运行,从而在操作系统中能够根据运行需求同时运行单内核和微内核,兼有两种内核类型的优点。
[0137]图11为本发明一种异构操作系统中内核运行的装置的另一个实施例的结构示意图。如图11所示,该装置2000应用于众核平台,包括:
[0138]第一设置单元201,用于将CPU的核资源池中的核设置为空闲状态。
[0139]操作系统启动时,先启动一个指定的启动核,该启动核可以以单内核或微内
[0140]核运行,该启动核中存储启动程序,使得操作系统可以通过基本输入输出系统(Basic Input Output System, B1S)启动。
[0141]该启动核启动后,启动一个核管理程序,将所有核组成一个CPU的核资源池,第一设置单元201将该CPU的核资源池中的所有核设置为空闲状态。当核退出运行,处于空闲状态时,回收放入该CPU的核资源池。空闲状态的核可以调用为以两种内核类型中的任意一种运行,其中,内核类型包括单内核和微内核。
[0142]其中,将正在运行的核设置为空闲状态是通过ACPI管理电源,把供电关掉。具体地,首先,在CPU的核资源池里将核标记为空闲状态;然后,通过ACPI电源管理,控制核降到S4电源级别。ACPI是高级电源管理规范,大部分计算机都符合这一规范,操作系统可以通过硬件提供的ACPI接口对核进行电源操作,属于已有技术。
[0143]第一地址分配单元202,用于为所述单内核以及所述微内核统一分配第一地址空间。
[0144]第二地址分配单元203,用于由所述单内核为运行所述单内核的核分配第二地址空间。
[0145]第三地址分配单元204,用于由所述微内核对应的用户态程序为运行所述微内核的核分配第三地址空间。
[0146]启动核启动后,还进行操作系统的资源的分配,一个实现方式是通过将操作系统中如内存、外设等资源进行集中管理,操作系统启动后在启动核上运行一个资源管理程序,通过资源管理程序将系统资源分配给对应的核,每个核只能使用分配到核上的部分资源。
[0147]启动核启动以后收集系统信息,其中,资源管理程序会收集内存信息,获取内存的大小和占用情况。图6为内存地址空间分布示意图,如图6所示,获取内存地址空间为4G,其中,O?2G划分给用户使用,第一地址分配单元202为单内核以及微内核统一分配地址空间,如将2G?4G划分给内核使用。
[0148]对于单内核,资源管理程序会分配一些空闲物理内存给单内核使用,单内核每次分配物理内存都是从资源管理程序分配的部分中去分配,单内核为运行单内核的核分配地址空间;应用程序释放内存后由单内核回收;单内核在使用内存发生不足时向启动核上的资源管理程序申请新的空闲内存;单内核长时间不使用的内存会释放给资源管理程序。
[0149]对于微内核,所有的微内核共享一个内存管理程序,这个内存管理程序统一向资源管理程序申请内存,内存的使用方式同单内核,只是管理者不是内核而是一个内存管理程序。
[0150]运行单元205,用于根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行;其中,所述内核类型包括:单内核和微内核。
[0151]其中,运行单元205可以包括查找单元2051、第一加载单元2052、加入单元2053和中断单元2054。
[0152]查找单元2051,用于当根据运行需求,需要将所述核以单内核运行时,在所述CPU的核资源池中查找一个空闲状态的核。
[0153]第一加载单元2052,用于加载单内核镜像至所述第二地址空间。
[0154]当操作系统所要运行的应用程序的线程数量和并行需求少时,需要将核以单内核运行,查找单元2051在CPU的核资源池中查找一个空闲状态的核,第一加载单元2052从镜像的存储空间加载该核的单内核镜像至该核对应的地址空间,该地址空间是单内核为以单内核运行的核分配的地址空间。该单内核镜像为单内核运行所必须的运行程序。
[0155]该步骤为创建一个单内核时的情况,第一加载单元2052需要给核加载单内核镜像。
[0156]还有另一种情况,作为第一加载单元2052的替换,运行单元205还可以包括加入单元2053,用于当在所述CPU的核资源池中查找到空闲状态的核时,将查找到的所述空闲状态的核以对称多处理器SMP方式加入至运行中的单内核中,以使查找到的所述空闲状态的核以单内核运行。空闲状态的核以SMP方式加入至运行中的单内核时,此时,加入单元2053不需要再给核加载单内核镜像,直接将从CPU的核资源池中查找到的空闲状态的核以SMP方式加入至运行中的单内核中即可。
[0157]中断单元2054,用于向所述核发送所述中断消息,以使所述核以单内核运行。
[0158]首先,中断单元2054生成该核的中断消息,该中断消息包括:单内核镜像的存储位置、起始地址、大小和名称等。然后,中断单元2054向该核发送该中断消息,该空闲状态的核接收到该中断消息,便将地址空间中的单内核镜像在该核上运行,从而使得该核以单内核运行。
[0159]查找单元2051还用于当根据运行需求,需要将所述核以微内核运行时,在所述CPU的核资源池中查找一个空闲状态的核。
[0160]第一加载单元2052还用于加载微内核镜像至所述第三地址空间。
[0161]当操作系统所要运行的应用程序的线程数量和并行需求多时,需要将核以微内核运行,查找单元2051在CPU的核资源池中查找一个空闲状态的核,第一加载单元2052从镜像的存储空间加载该核的微内核镜像至该核对应的地址空间,该地址空间是微内核对应的用户态程序为运行微内核的核分配的地址空间。该微内核镜像为微内核运行所必须的运行程序。
[0162]中断单元2054还用于向所述核发送所述中断消息,以使所述核以微内核运行。
[0163]首先,中断单元2054生成该核的中断消息,该中断消息包括:微内核镜像的存储位置、起始地址、大小和名称等。然后,中断单元2054向该核发送该中断消息,该空闲状态的核接收到该中断消息,便将地址空间中的微内核镜像在该核上运行,从而使得该核以微内核运行。
[0164]迁移单元206,用于当以所述微内核或单内核运行的多个所述核上的负载减少时,将其中一个所述核中运行的任务迁移至以微内核或单内核运行的另一个所述核上。
[0165]第一设置单元201还用于将所述其中一个所述核设置为空闲状态,放入所述CPU的核资源池。
[0166]当核以微内核或单内核运行时,有一些操作系统的进程,如用户态任务等。当以微内核或单内核运行的多个核上的负载减少时,迁移单元206需要其中一个核运行时占有的操作系统进程迁移至正在以微内核或单内核运行的另一个核占有的操作系统进程队列中,使得未完成的用户态任务按照队列继续进行,不中断操作系统的服务。
[0167]最后,第一设置单元201将该迁移完任务的核重新设置为空闲状态,放入CPU的核资源池。
[0168]当微内核或单内核完成任务迁移后,单内核或微内核的内存管理程序可以将分别保存在第二地址空间的单内核镜像或保存在第三地址空间的微内核镜像销毁,以回收该地址空间;对于一些内核,下次唤醒时可能加载的是相同的镜像,这时也可以将镜像保留,即延迟回收内核,使得在重新选择对应的核运行时,可以加载该保留的镜像,该装置2000还可以包括:
[0169]保留单元207,用于将所述微内核镜像保留在所述第三地址空间或将所述单内核镜像保留在所述第二地址空间中。
[0170]当微内核或单内核完成任务迁移后,操作系统不将分别保存在第二地址空间的单内核镜像或保存在第三地址空间的微内核镜像立即销毁,而是由保留单元207将镜像保留在相应的地址空间中。
[0171]存储单元208,用于存储所述核的寄存器信息。
[0172]存储单元208将微内核或单内核运行时存储在寄存器中的一些数据进行存储。
[0173]第二加载单元209,当从所述CPU的核资源池重新选择所述空闲状态的核以所述微内核或单内核运行时,将所述寄存器信息加载至所述重新选择的空闲状态的核,则所述重新选择的空闲状态的核以所述微内核或单内核运行。
[0174]当从CPU的核资源池重新选择空闲状态的核以微内核或单内核运行时第二加载单元209,将存储的寄存器信息加载至该重新选择的空闲状态的核,这些寄存器信息中包含了启动运行的中断消息,且由于在地址空间中保留了微内核镜像或单内核镜像,不需要重新加载,则该重新选择的空闲状态的核可以微内核或单内核运行。
[0175]第二设置单元210,用于根据所述空闲状态的核与所述CPU的核资源池中正在运行的核之间的物理位置的距离,给所述空闲状态的核设置电源级别。
[0176]唤醒单元211,用于根据所述电源级别,依次唤醒所述空闲状态的核。
[0177]本实施例的操作系统的节能技术充分考虑众核平台的mesh网络和核间亲和性等特性,首先,第二设置单元210根据空闲状态的核与CPU的核资源池中正在运行的核之间的物理位置的距离,给空闲状态的核设置电源级别,电源级别用于表示空闲状态的核被唤醒的能力,电源级别一般分为S1、S2、S3和S4等级别,作为举例,设置从SI到S4, CPU的核被唤醒的能力变小。一些处于空闲状态的核,它们的物理位置临近活动区,这些核随时可能因为操作系统的需求被加载,因此,这些位置上的核不会马上设置它处于深度睡眠状态,而是将它设为S1、S2电源级别。然后,唤醒单元211根据电源级别,依次唤醒空闲状态的核。
[0178]图8为空闲状态的核所处的电源级别队列示意图。如图8所示,coreO、corel组成一个工作区,corelO?corel5组成另一个工作区,如果工作区需要扩展,首先被唤醒的应该是core2、core9,因此,core2、core9处于SI状态下,因为core8被唤醒的可能性也比较大,因此处于S2状态下,其他core根据OS的安排分别处于S3或S4状态,这样既可以节能又不会有太大的性能损失。
[0179]根据本发明提供的一种异构操作系统中内核运行的装置的另一个实施例,通过在单内核和微内核两种内核类型之间设置一种空闲状态,可以使核在微内核和单内核之间动态转换地运行,从而在操作系统中能够根据运行需求同时运行单内核和微内核,兼有两种内核类型的优点;同时,操作系统的节能技术充分考虑众核平台的mesh网络和核间亲和性等特性,既能保证系统性能又能有效地节能。
[0180]图12为本发明一种异构操作系统中内核运行的设备的实施例的结构示意图。如图12所示,该设备3000应用于众核平台,可包括:
[0181]输入装置301、输出装置302、存储器303和处理器304(网络设备中的处理器304的数量可以一个或多个,图12中以一个处理器为例)。在本发明的一些实施例中,输入装置301、输出装置302、存储器303和处理器304可通过总线或其它方式连接,其中,图12中以通过总线连接为例。
[0182]其中,处理器304用于执行以下步骤:
[0183]将CPU的核资源池中的核设置为空闲状态;
[0184]根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行;
[0185]其中,所述内核类型包括:单内核和微内核。
[0186]处理器304执行所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行的步骤,包括:
[0187]当操作系统所要运行的第一应用程序的线程数量和并行需求多时,将所述CPU的核资源池中的至少一个空闲状态的核以微内核运行;
[0188]当所述操作系统所要运行的第二应用程序的线程数量和并行需求少时,将所述CPU的核资源池中的至少一个空闲状态的核以单内核运行。
[0189]处理器304在执行所述将CPU的核资源池中的核设置为空闲状态的步骤之后,以及在执行所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行的步骤之前,还包括执行以下步骤:
[0190]为所述单内核以及所述微内核统一分配第一地址空间;
[0191]所述单内核为运行所述单内核的核分配第二地址空间;
[0192]所述微内核对应的用户态程序为运行所述微内核的核分配第三地址空间。
[0193]处理器304执行所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行的步骤,包括:
[0194]当根据运行需求,需要将所述核以单内核运行时,在所述CPU的核资源池中查找一个空闲状态的核,加载单内核镜像至所述第二地址空间;
[0195]向所述核发送所述中断消息,以使所述核以单内核运行;
[0196]当根据运行需求,需要将所述核以微内核运行时,在所述CPU的核资源池中查找一个空闲状态的核,加载微内核镜像至所述第三地址空间;
[0197]向所述核发送所述中断消息,以使所述核以微内核运行。
[0198]处理器304执行所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行的步骤,还包括:
[0199]当在所述CPU的核资源池中查找到空闲状态的核时,将查找到的所述空闲状态的核以对称多处理器SMP方式加入至运行中的单内核中,以使查找到的所述空闲状态的核以单内核运行。
[0200]处理器304在执行所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行的步骤之后,还包括执行以下步骤:
[0201]当以所述微内核或单内核运行的多个所述核上的负载减少时,将其中一个所述核中运行的任务迁移至以微内核或单内核运行的另一个所述核上,并将所述其中一个所述核设置为空闲状态,放入所述CPU的核资源池。
[0202]处理器304在执行所述将其中一个所述核中运行的任务迁移至以微内核或单内核运行的另一个所述核上,并将所述其中一个所述核设置为空闲状态,放入所述CPU的核资源池的步骤之后,还包括执行以下步骤:
[0203]将所述微内核镜像保留在所述第三地址空间或将所述单内核镜像保留在所述第二地址空间中;
[0204]存储所述核的寄存器信息;
[0205]当从所述CPU的核资源池重新选择所述空闲状态的核以所述微内核或单内核运行时,将所述寄存器信息加载至所述重新选择的空闲状态的核,则所述重新选择的空闲状态的核以所述微内核或单内核运行。
[0206]处理器304在执行所述将其中一个所述核中运行的任务迁移至以微内核或单内核运行的另一个所述核上,并将所述其中一个所述核设置为空闲状态,放入所述CPU的核资源池的步骤之后,还包括执行以下步骤:
[0207]根据所述空闲状态的核与所述CPU的核资源池中正在运行的核之间的物理位置的距离,给所述空闲状态的核设置电源级别;
[0208]根据所述电源级别,依次唤醒所述空闲状态的核。
[0209]可以理解的是,本实施例的设备3000的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
[0210]根据本发明实施例提供的一种异构操作系统中内核运行的设备,通过在单内核和微内核两种内核类型之间设置一种空闲状态,可以使核在微内核和单内核之间动态转换地运行,从而在操作系统中能够根据运行需求同时运行单内核和微内核,兼有两种内核类型的优点。
[0211]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
[0212]在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个设备中,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0213]所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部,模块来实现本实施例方案的目的。
[0214]另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
[0215]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种异构操作系统中内核运行的方法,其特征在于,应用于众核平台,包括: 将CPU的核资源池中的核设置为空闲状态; 根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行; 其中,所述内核类型包括:单内核和微内核。
2.如权利要求1所述的方法,其特征在于,所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行,包括: 当操作系统所要运行的第一应用程序的线程数量和并行需求多时,将所述CPU的核资源池中的至少一个空闲状态的核以微内核运行; 当所述操作系统所要运行的第二应用程序的线程数量和并行需求少时,将所述CPU的核资源池中的至少一个空闲状态的核以单内核运行。
3.如权利要求1或2所述的方法,其特征在于,所述将CPU的核资源池中的核设置为空闲状态之后,以及所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行之前,还包括: 为所述单内核以及所述微内核统一分配第一地址空间; 所述单内核为运行所述单内核的核分配第二地址空间; 所述微内核对应的用户态程序为运行所述微内核的核分配第三地址空间。
4.如权利要求3所述的方法,其特征在于,所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行,包括: 当根据运行需求,需要将所述核以单内核运行时,在所述CPU的核资源池中查找一个空闲状态的核,加载单内核镜像至所述第二地址空间; 向所述核发送所述中断消息,以使所述核以单内核运行; 当根据运行需求,需要将所述核以微内核运行时,在所述CPU的核资源池中查找一个空闲状态的核,加载微内核镜像至所述第三地址空间; 向所述核发送所述中断消息,以使所述核以微内核运行。
5.如权利要求4所述的方法,其特征在于,所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行,还包括: 当在所述CPU的核资源池中查找到空闲状态的核时,将查找到的所述空闲状态的核以对称多处理器SMP方式加入至运行中的单内核中,以使查找到的所述空闲状态的核以单内核运行。
6.如权利要求1-5任意一项所述的方法,其特征在于,所述根据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行之后,还包括: 当以所述微内核或单内核运行的多个所述核上的负载减少时,将其中一个所述核中运行的任务迁移至以微内核或单内核运行的另一个所述核上,并将所述其中一个所述核设置为空闲状态,放入所述CPU的核资源池。
7.如权利要求6所述的方法,其特征在于,所述将其中一个所述核中运行的任务迁移至以微内核或单内核运行的另一个所述核上,并将所述其中一个所述核设置为空闲状态,放入所述CPU的核资源池之后,还包括: 将所述微内核镜像保留在所述第三地址空间或将所述单内核镜像保留在所述第二地址空间中; 存储所述核的寄存器信息; 当从所述CPU的核资源池重新选择所述空闲状态的核以所述微内核或单内核运行时,将所述寄存器信息加载至所述重新选择的空闲状态的核,则所述重新选择的空闲状态的核以所述微内核或单内核运行。
8.如权利要求6或7所述的方法,其特征在于,所述将其中一个所述核中运行的任务迁移至以微内核或单内核运行的另一个所述核上,并将所述其中一个所述核设置为空闲状态,放入所述CPU的核资源池之后,还包括: 根据所述空闲状态的核与所述CPU的核资源池中正在运行的核之间的物理位置的距离,给所述空闲状态的核设置电源级别; 根据所述电源级别,依次唤醒所述空闲状态的核。
9.一种异构操作系统中内核运行的装置,其特征在于,应用于众核平台,包括: 第一设置单元,用于将CPU的核资源池中的核设置为空闲状态; 运行单元,用于根 据运行需求,将所述CPU的核资源池中的至少两个空闲状态的核分别以两种指定的内核类型运行; 其中,所述内核类型包括:单内核和微内核。
10.如权利要求9所述的装置,其特征在于,所述运行单元包括: 微内核运行单元,用于当操作系统所要运行的第一应用程序的线程数量和并行需求多时,将所述CPU的核资源池中的至少一个空闲状态的核以微内核运行; 单内核运行单元,用于当所述操作系统所要运行的第二应用程序的线程数量和并行需求少时,将所述CPU的核资源池中的至少一个空闲状态的核以单内核运行。
11.如权利要求9或10所述的装置,其特征在于,还包括: 第一地址分配单元,用于为所述单内核以及所述微内核统一分配第一地址空间; 第二地址分配单元,用于由所述单内核为运行所述单内核的核分配第二地址空间;第三地址分配单元,用于由所述微内核对应的用户态程序为运行所述微内核的核分配第三地址空间。
12.如权利要求11所述的装置,其特征在于,所述运行单元包括: 查找单元,用于当根据运行需求,需要将所述核以单内核运行时,在所述CPU的核资源池中查找一个空闲状态的核; 第一加载单元,用于加载单内核镜像至所述第二地址空间; 中断单元,用于向所述核发送所述中断消息,以使所述核以单内核运行; 所述查找单元还用于当根据运行需求,需要将所述核以微内核运行时,在所述CPU的核资源池中查找一个空闲状态的核; 所述第一加载单元还用于加载微内核镜像至所述第三地址空间; 所述中断单元还用于向所述核发送所述中断消息,以使所述核以微内核运行。
13.如权利要求12所述的装置,其特征在于,所述运行单元还包括: 加入单元,用于当在所述CPU的核资源池中查找到空闲状态的核时,将查找到的所述空闲状态的核以对称多处理器SMP方式加入至运行中的单内核中,以使查找到的所述空闲状态的核以单内核运行。
14.如权利要求9-13任意一项所述的装置,其特征在于,还包括: 迁移单元,用于当以所述微内核或单内核运行的多个所述核上的负载减少时,将其中一个所述核中运行的任务迁移至以微内核或单内核运行的另一个所述核上; 所述第一设置单元还用于将所述其中一个所述核设置为空闲状态,放入所述CPU的核资源池。
15.如权利要求14所述的装置,其特征在于,还包括: 保留单元,用于将所述微内核镜像保留在所述第三地址空间或将所述单内核镜像保留在所述第二地址空间中; 存储单元,用于存储所述核的寄存器信息; 第二加载单元,用于当从所述CPU的核资源池重新选择所述空闲状态的核以所述微内核或单内核运行时,将所述寄存器信息加载至所述重新选择的空闲状态的核,则所述重新选择的空闲状态的核以所述微内核或单内核运行。
16.如权利要求14或15所述的装置,其特征在于,还包括: 第二设置单元,用于根据所述空闲状态的核与所述CPU的核资源池中正在运行的核之间的物理位置的距离,给所述空闲状态的核设置电源级别;唤醒单元,用于根据所述电源级另O,依次唤醒所述 空闲状态的核。
【文档编号】G06F15/16GK104050137SQ201310079899
【公开日】2014年9月17日 申请日期:2013年3月13日 优先权日:2013年3月13日
【发明者】詹卿, 王伟, 袁泉 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1