Cpu资源的调度方法及装置的制作方法

文档序号:6335327阅读:359来源:国知局
专利名称:Cpu资源的调度方法及装置的制作方法
技术领域
本发明涉及计算机操作系统领域,尤其涉及一种CPU资源的调度方法及装置。
背景技术
在计算机操作系统中,CPU资源作为整个系统的核心资源,被系统中所有任务所共 享,为了给众多的任务分配CPU资源,由此产生了很多种CPU资源的调度方法。通常的操 作系统中,为了满足系统所需的并发和实时性要求,在不同优先级的任务间采用了基于优 先级的可抢占调度方法,这种调度方法为优先级最高的任务提供CPU资源调度的保证,只 要优先级最高的任务准备就绪,它立即会抢占目前运行的低优先级任务,并且一直占用CPU 资源直到它主动放弃对CPU的使用。如果高优先级的任务长时间运行,低优先级的任务将 无法获取到CPU资源而被饿死。对于任务数量较少的简单系统,可以通过精确的划分任务功能、调整任务的优先 级,确保实时的任务不会长时间占用CPU资源,以及设置可能长时间占用CPU资源的低优先 级任务为相同的优先级,并且采用时间片轮转的调度方法来避免这些任务饿死。但是,发明人发现,对于包含几十甚至几百个任务、拥有数以百计优先级的大系 统,上述的方法很难做到,尤其是拥有很多子系统的软件系统,这些软件子系统由不同的开 发团队完成,解决该问题异常困难。即便通过上述的方法解决了现有系统的问题,伴随着新 需求的不断引入,新的子系统被加入到系统中,问题又将出现。例如,在一个通讯系统设备软件中,存在三个软件子系统运行管理和维护 (Operation Administration and Maintenance,简称为0AM)子系统、宽带子系统和窄带子 系统。这三个子系统本身都由若干个任务协作完成特定的业务功能,按照常规的基于优先 级抢占的调度方法,其中任何一个高优先级的任务长时间占用CPU资源,都会导致其它子 系统无法获取CPU资源。比如,宽带子系统被拒绝服务(Denial of Service,简称为DoS) 攻击,最终导致OAM模块无法得到调度,无法响应用户的操作维护的请求,使得用户失去对 设备的控制。

发明内容
本发明的主要目的在于提供一种CPU资源的调度方案,以至少解决上述相关技术 中由于高优先级的任务长时间占用CPU资源,导致低优先级的任务无法获取CPU资源而被 饿死的问题。为了实现上述目的,根据本发明的一个方面,提供了一种CPU资源的调度方法。根据本发明的CPU资源的调度方法,包括以下步骤将系统中的任务划分成任务 组;统计任务组当前对CPU资源的占用情况;以及在任务组当前对CPU资源的占用超过预 设的最大值时,释放任务组中的一个或多个任务的CPU资源给除该任务组之外的其他任务 组中的准备就绪的任务运行。进一步地,统计任务组当前对CPU资源的占用情况之前,该方法还包括预先设置
4任务组对CPU资源占用的最大值,其中,最大值为任务组中所有任务对CPU资源占用的总 和。进一步地,预先设置任务组对CPU资源占用的最大值包括在每个预定时段为任 务组分配其对CPU资源占用的最大百分比。进一步地,统计任务组当前对CPU资源的占用情况包括统计任务组在每个预定 时段内对CPU资源的占用率。进一步地,每个预定时间段的时间精度为微秒。进一步地,释放任务组中的一个或多个任务的CPU资源给除该任务组之外的其他 任务组中的准备就绪的任务运行包括若其他任务组中均没有准备就绪的任务,则任务组 中的任务继续占用CPU资源运行;若其他任务组中有准备就绪的任务,则释放任务组中的 一个或多个任务的CPU资源给其他任务组中的准备就绪的任务运行。为了实现上述目的,根据本发明的另一个方面,还提供了一种CPU资源的调度装 置。根据本发明的CPU资源的调度装置,包括划分模块,用于将系统中的任务划分成 任务组;统计模块,用于统计任务组当前对CPU资源的占用情况;以及调度模块,用于在任 务组当前对CPU资源的占用超过预设的最大值时,释放任务组中的一个或多个任务的CPU 资源给除该任务组之外的其他任务组中的准备就绪的任务运行。进一步地,该装置还包括设置模块,用于预先设置任务组对CPU资源占用的最大 值,其中,最大值为任务组中所有任务对CPU资源占用的总和。进一步地,设置模块还用于在每个预定时段为任务组分配其对CPU资源占用的最 大百分比;以及统计模块还用于统计任务组在每个预定时段内对CPU资源的占用率。进一步地,调度模块包括保持单元,用于在其他任务组中均没有准备就绪的任务 的情况下,保持任务组中的任务继续占用CPU资源运行;以及释放单元,用于在其他任务组 中有准备就绪的任务的情况下,释放任务组中的一个或多个任务的CPU资源给其他任务组 中的准备就绪的任务运行。通过本发明,采用在任务组对CPU资源的占用超过阈值时释放其中一个或多个任 务所占用的CPU资源给其他任务组中准备就绪的任务的方式,解决了相关技术中由于高优 先级的任务长时间占用CPU资源,导致低优先级的任务无法获取CPU资源而被饿死的问题, 增强了系统的稳定性,提高了系统的性能。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据本发明实施例的CPU资源的调度方法的流程图;图2是根据本发明实施例的CPU资源的调度装置的结构框图;图3是根据本发明优选实施例的CPU资源的调度装置的结构框图;图4是根据本发明优选实施例二的任务组划分的示意图;图5是根据本发明优选实施例二的系统运行时间的示意图;图6是根据本发明优选实施例二的分配任务组占用CPU的最大时长的流程图。
具体实施例方式下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的 情况下,本申请中的实施例及实施例中的特征可以相互组合。根据本发明的实施例,提供了一种CPU资源的调度方法。图1是根据本发明实施 例的CPU资源的调度方法的流程图,如图1所示,该方法包括以下步骤步骤S102,将系统中的任务划分成任务组;步骤S104,统计任务组当前对CPU资源的占用情况;以及步骤S106,在任务组当前对CPU资源的占用超过预设的最大值时,释放任务组中 的一个或多个任务的CPU资源给除该任务组之外的其他任务组中的准备就绪的任务运行。通过上述步骤,采用在任务组对CPU资源的占用超过阈值时释放其中一个或多个 任务所占用的CPU资源给其他任务组中准备就绪的任务的方式,解决了相关技术中由于高 优先级的任务长时间占用CPU资源,导致低优先级的任务无法获取CPU资源而被饿死的问 题,增强了系统的稳定性,提高了系统的性能。优选地,在步骤S104之前,可以预先设置任务组对CPU资源占用的最大值,其中, 最大值为任务组中所有任务对CPU资源占用的总和。例如,可以预先设置每个任务组对CPU 资源占用的最大值。该方法使得用户可以对各任务组占用CPU资源的情况进行配置,增强 了系统的灵活性,提高了用户体验。优选地,预先设置任务组对CPU资源占用的最大值包括在每个预定时段为任务 组分配其对CPU资源占用的最大百分比。例如,在每个预定时段为每个任务组分配其对CPU 资源占用的最大百分比。该方法可以提高系统的有效性和准确性。优选地,在步骤S104中,可以统计任务组在每个预定时段内对CPU资源的占用率。 该方法实现简单、可操作性强。优选地,每个预定时间段的时间精度为微秒。该方法有利于精确统计任务对CPU 的占用率,提高了系统的精准度。优选地,在步骤S106中,若其他任务组中均没有准备就绪的任务,则任务组中的 任务继续占用CPU资源运行;若其他任务组中有准备就绪的任务,则释放任务组中的一个 或多个任务的CPU资源给其他任务组中的准备就绪的任务运行。本优选实施例可以根据系统当前的情况对超过预设的最大值(S卩,CPU占用率)的 任务组中的任务进行调度,提高了系统的灵活性和处理能力。对应于上述的方法,在本实施例中还提供了一种CPU资源的调度装置。图2是根据 本发明实施例的CPU资源的调度装置的结构框图,如图2所示,该装置包括划分模块22、 统计模块24、调度模块26,下面对该结构进行详细说明。划分模块22,用于将系统中的任务划分成任务组;统计模块24,耦合至划分模块 22,用于统计任务组当前对CPU资源的占用情况;以及调度模块26,耦合至统计模块24,用 于在任务组当前对CPU资源的占用超过预设的最大值时,释放任务组中的一个或多个任务 的CPU资源给除该任务组之外的其他任务组中的准备就绪的任务运行。 通过上述装置,采用调度模块26在任务组对CPU资源的占用超过阈值时释放其中 一个或多个任务所占用的CPU资源给其他任务组中准备就绪的任务的方式,解决了相关技术中由于高优先级的任务长时间占用CPU资源,导致低优先级的任务无法获取CPU资源而 被饿死的问题,增强了系统的稳定性,提高了系统的性能。图3是根据本发明优选实施例的CPU资源的调度装置的结构框图,如图3所示,该 装置还包括设置模块32,耦合至划分模块22和统计模块24,用于预先设置任务组对CPU 资源占用的最大值,其中,该最大值为任务组中所有任务对CPU资源占用的总和。优选地,设置模块32还用于在每个预定时段为任务组分配其对CPU资源占用的最 大百分比;以及统计模块24还用于统计任务组在每个预定时段内对CPU资源的占用率。例如,设置模块32还可以在每个预定时段为每个任务组分配其对CPU资源占用的 最大时长以及最大时长的阈值。优选地,调度模块26包括保持单元262,用于在其他任务组中均没有准备就绪的 任务的情况下,保持任务组中的任务继续占用CPU资源运行;以及释放单元264,用于在其 他任务组中有准备就绪的任务的情况下,释放任务组中的一个或多个任务的CPU资源给其 他任务组中的准备就绪的任务运行。优选地,在释放单元264将任务组中的一个或多个任务的CPU资源释放给其他任 务组中准备就绪的任务运行之后,在统计模块24统计到该任务组当前对CPU资源的占用小 于预设的最大值时,还可以恢复该任务组中之前被调度出去的任务对CPU资源的使用。以下各个实施例结合了上述优选的实施方式。实施例一本实施例是把任务划分成任务组,并且设置其最大CPU资源占用值,当任务组的 CPU资源的占用超过了设定的最大值,就把该任务组中的任务调度出去,放弃对CPU资源的 使用,调度到其它任务组中的任务运行,直到该任务组对CPU资源的占用小于设定的最大 值。其中,这里的任务组可以包含多个任务,也可以只包含一个任务。在具体实施过程中,首先需要对系统中的任务划分成若干个任务组,然后可以按 照系统的需要设置任务组对CPU资源占用的最大值(任务组中所有任务对CPU资源占用值 的和),即,对CPU资源占用的最大百分比。因为任务对CPU资源的占用是一个动态的数据, 伴随着系统的运行动态的变化,具有时效性,所以这里的某个任务的CPU占有率都是指过 去一段时间内该任务占用CPU的情况。例如,1秒钟的CPU占有率、30秒钟的CPU占有率、 1分钟的CPU占有率等。也就是说,本实施例中的任务组的CPU资源占用的最大值通常需 要指定是多长时间段内的CPU资源占有率。另外,无论是所有任务组CPU资源占用的最大 值的和、还是单个任务组CPU资源占用的最大值的设置可用大于100%,也可以小于100%。 当然单个任务组CPU资源占用的最大值的设置超过100%没有任何意义。设置好以上的条件之后,在操作系统调度任务的时候(这里可以是定时的调度、 也可以是系统调用导致的调度)统计任务组在指定时间段内对CPU资源的占用情况,如果 任务组对CPU资源的占用超过了设定的最大值,并且其它任务组有准备就绪可以运行的任 务,立即把该任务组的任务调度出去,释放出CPU资源给其它任务组中准备就绪的任务运 行。如果其它所有任务组中均没有准备就绪的任务,那么该任务组继续占用CPU运行(即, 在这种情况下任务组对CPU的占用可以超过设定的最大值)。可见,本实施例把系统中所有的任务划分成若干个任务组,并按照系统需要定量 地分配每个任务组对CPU资源占用的最大值,然后实时地对每个任务组占用CPU资源情况进行监控,在任务组的CPU资源的占用超过了设定的最大值时,把该任务组中的任务调度 出去,放弃对CPU资源的使用,调度到其它任务组中的任务运行,直到该任务组对CPU资源 的占用小于设定的最大值,从而避免了传统实时操作系统中按照严格优先级进行抢占调度 任务而导致低优先级任务饿死的问题,提高了系统的稳定性。实施例二以具体例子为例,详细说明本实施例中的CPU资源的调度方法,该方法可以包括 以下步骤步骤1,对系统中的任务进行任务组的划分。图4是根据本发明优选实施例二的任 务组划分的示意图,这里假设某个系统软件中由Tl T9共计9个任务构成,被划分成A、 B、C三个任务组。其中,任务组A包括T1-T3三个任务,任务组B包括T4和T5两个任务, 其它任务全部划分到任务组C中。步骤2,设置每个任务组对CPU资源占用的最大值。如图4所示,这里假设将任务 组A的CPU资源占用的最大值设置为i %,将任务组B的CPU资源占用的最大值设置为j %, 将任务组C的CPU资源占用的最大值设置为k%。可见,本实施例把各个子系统的任务划分到一个任务组,且设置其对CPU资源占 用最大值,从而避免了一个子系统长时间占用CPU资源而导致其它子系统无法正常运行的 情况。需要说明的是,因为任务的CPU占有率是指过去一段时间间隔内该任务占用CPU 的情况(例如,1秒钟的CPU占有率、30秒钟的CPU占有率、1分钟的CPU占有率等),所以, 任务组的CPU资源占用的最大值需要指定是多长时间间隔内的CPU资源占有率,这里可以 将这个时间间隔设置为m。此外,为了精确计算设定时间间隔内各个任务组的CPU占有率, 在具体实施过程中,需要有一个精度比较高的时间源,这里可以假定时间精度为微秒。步骤3,计算出在每一个时间间隔m内每一个任务组可以占用CPU的时间值(即, 时长)。该时间值就是m乘上任务组CPU资源占用的最大值设置,即,任务组A就是m乘上 i%。这里假定任务组A在时间间隔m内被分配的时长为I =m*i% (精度等同上述的时间 源,这里假定精度为微秒),任务组B在时间间隔m内被分配的时长为J = m*j %,任务组C 在时间间隔m内被分配的时长为K = m*k%。图5是根据本发明优选实施例二的系统运行时间的示意图,如图5所示,系统运行 的开始时间为0,系统在每个时间间隔m的时候都会进行任务组CPU资源运行时间的分配, 分配的值就是上述任务组在时间间隔m内被分配的时长,例如,I、J和K。步骤4,为每一个任务组分配其占用CPU的最大时长。图6是根据本发明优选实施例二的分配任务组占用CPU的最大时长的流程图,如 图6所示,包括以下步骤步骤S602,设置任务组可占用CPU的时间长度(S卩,最大时长)。例如,可以设置 χ、y、ζ三个变量,分别对应A、B、C三个任务组可占用的CPU时间长度(精度等同上述的时 间源,这里假定精度为微秒),其中,χ = I,y = Y,ζ = K。步骤S604,检测预定分配时长是否达到。若已到该分配时长,进入步骤S606,若没 有到该分配时长,则继续检测。步骤S606,更新每个任务组可占用CPU的时间长度。例如,可以在每一个时间间
8隔m为每个任务组分配其对应的设置好的时长(即,上述I、J和K三个值),即,每一个时 间间隔m时间整点,任务组可占用CPU的时间长度更新为此时该任务组最大时长加上该任 务组的上述分配时长。以任务组A为例,在每一个时间间隔m,其对应的可占用CPU的时长 累加I,即X = X+I。需要说明的是,如果某一个任务组长时间没有运行(例如,用户交互任 务组,如果用户一直没有使用该设备,相应的任务组没有事情可做,就会休眠),相应的最大 时长就不会被消耗,一直累加到一个很大的值,一旦这个任务组得到执行,就会长时间占用 处理器,导致其它任务组得不到执行。所以,这里可以为每一个任务组设置一个最大时长的 阀值,当最大时长超过该阀值之后,不再分配时长给该改任务组,直到其最大时长小于该阀 值。在具体实施过程中,在每一次任务被调度的时候,被调度进入的任务,通过上述的 高精度的时间源获取该点的时间11,该任务被调度出去的时候,通过上述的高精度的时间 源获取该点的时间t2,t2减去tl就是该任务运行时间。在调度任务运行的时候,首先判断 该任务所属的任务组可以占用CPU时间长度(即,最大时长),减去该运行时间是否小于等 于0,如果是,就禁止该任务调度执行,选择其它任务运行,直到该任务属于任务组可以占用 CPU时间长度是大于0。例如,该任务属于任务组A,则χ = I-(t2-tl)。综上所述,通过上述实施例,采用在任务组对CPU资源的占用超过阈值时释放其 中一个或多个任务所占用的CPU资源给其他任务组中准备就绪的任务的方式,避免了单个 (或者多个)任务长时间占用CPU资源而导致其它任务饿死的问题,增强了系统的稳定性, 提高了系统的性能。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用 的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成 的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储 在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示 出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或 步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技 术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
9
权利要求
一种CPU资源的调度方法,其特征在于,包括以下步骤将系统中的任务划分成任务组;统计所述任务组当前对CPU资源的占用情况;以及在所述任务组当前对所述CPU资源的占用超过预设的最大值时,释放所述任务组中的一个或多个任务的所述CPU资源给除该任务组之外的其他任务组中的准备就绪的任务运行。
2.根据权利要求1所述的方法,其特征在于,统计所述任务组当前对所述CPU资源的占 用情况之前,还包括预先设置所述任务组对所述CPU资源占用的所述最大值,其中,所述最大值为所述任 务组中所有任务对所述CPU资源占用的总和。
3.根据权利要求2所述的方法,其特征在于,预先设置所述任务组对所述CPU资源占用 的所述最大值包括在每个预定时段为所述任务组分配其对所述CPU资源占用的最大百分比。
4.根据权利要求3所述的方法,其特征在于,统计所述任务组当前对CPU资源的占用情 况包括统计所述任务组在所述每个预定时段内对所述CPU资源的占用率。
5.根据权利要求3或4所述的方法,其特征在于,所述每个预定时间段的时间精度为微秒。
6.根据权利要求1所述的方法,其特征在于,释放所述任务组中的一个或多个任务的 所述CPU资源给除该任务组之外的其他任务组中的准备就绪的任务运行包括若所述其他任务组中均没有所述准备就绪的任务,则所述任务组中的任务继续占用所 述CPU资源运行;若所述其他任务组中有所述准备就绪的任务,则释放所述任务组中的一 个或多个任务的所述CPU资源给所述其他任务组中的所述准备就绪的任务运行。
7.—种CPU资源的调度装置,其特征在于,包括 划分模块,用于将系统中的任务划分成任务组;统计模块,用于统计所述任务组当前对CPU资源的占用情况;以及 调度模块,用于在所述任务组当前对所述CPU资源的占用超过预设的最大值时,释放 所述任务组中的一个或多个任务的所述CPU资源给除该任务组之外的其他任务组中的准 备就绪的任务运行。
8.根据权利要求7所述的装置,其特征在于,还包括设置模块,用于预先设置所述任务组对所述CPU资源占用的所述最大值,其中,所述最 大值为所述任务组中所有任务对所述CPU资源占用的总和。
9.根据权利要求8所述的装置,其特征在于,所述设置模块还用于在每个预定时段为所述任务组分配其对所述CPU资源占用的最 大百分比;以及所述统计模块还用于统计所述任务组在所述每个预定时段内对所述CPU资源的占用率。
10.根据权利要求7所述的装置,其特征在于,所述调度模块包括保持单元,用于在所述其他任务组中均没有所述准备就绪的任务的情况下,保持所述任务组中的任务继续占用所述CPU资源运行;以及释放单元,用于在所述其他任务组中有所述准备就绪的任务的情况下,释放所述任务 组中的一个或多个任务的所述CPU资源给所述其他任务组中的所述准备就绪的任务运行。
全文摘要
本发明公开了一种CPU资源的调度方法及装置,该方法包括以下步骤将系统中的任务划分成任务组;统计任务组当前对CPU资源的占用情况;以及在任务组当前对CPU资源的占用超过预设的最大值时,释放任务组中的一个或多个任务的CPU资源给除该任务组之外的其他任务组中的准备就绪的任务运行。通过本发明增强了系统的稳定性,提高了系统的性能。
文档编号G06F9/50GK101984414SQ201010534278
公开日2011年3月9日 申请日期2010年11月5日 优先权日2010年11月5日
发明者曾照恒 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1