1、10申请公布号CN101984414A43申请公布日20110309CN101984414ACN101984414A21申请号201010534278922申请日20101105G06F9/5020060171申请人中兴通讯股份有限公司地址518057广东省深圳市南山区科技南路55号72发明人曾照恒74专利代理机构北京康信知识产权代理有限责任公司11240代理人余刚吴孟秋54发明名称CPU资源的调度方法及装置57摘要本发明公开了一种CPU资源的调度方法及装置,该方法包括以下步骤将系统中的任务划分成任务组;统计任务组当前对CPU资源的占用情况;以及在任务组当前对CPU资源的占用超过预设的最大值时
2、,释放任务组中的一个或多个任务的CPU资源给除该任务组之外的其他任务组中的准备就绪的任务运行。通过本发明增强了系统的稳定性,提高了系统的性能。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书6页附图3页CN101984417A1/2页21一种CPU资源的调度方法,其特征在于,包括以下步骤将系统中的任务划分成任务组;统计所述任务组当前对CPU资源的占用情况;以及在所述任务组当前对所述CPU资源的占用超过预设的最大值时,释放所述任务组中的一个或多个任务的所述CPU资源给除该任务组之外的其他任务组中的准备就绪的任务运行。2根据权利要求1所述的方法,其特征在于,统计所
3、述任务组当前对所述CPU资源的占用情况之前,还包括预先设置所述任务组对所述CPU资源占用的所述最大值,其中,所述最大值为所述任务组中所有任务对所述CPU资源占用的总和。3根据权利要求2所述的方法,其特征在于,预先设置所述任务组对所述CPU资源占用的所述最大值包括在每个预定时段为所述任务组分配其对所述CPU资源占用的最大百分比。4根据权利要求3所述的方法,其特征在于,统计所述任务组当前对CPU资源的占用情况包括统计所述任务组在所述每个预定时段内对所述CPU资源的占用率。5根据权利要求3或4所述的方法,其特征在于,所述每个预定时间段的时间精度为微秒。6根据权利要求1所述的方法,其特征在于,释放所述
4、任务组中的一个或多个任务的所述CPU资源给除该任务组之外的其他任务组中的准备就绪的任务运行包括若所述其他任务组中均没有所述准备就绪的任务,则所述任务组中的任务继续占用所述CPU资源运行;若所述其他任务组中有所述准备就绪的任务,则释放所述任务组中的一个或多个任务的所述CPU资源给所述其他任务组中的所述准备就绪的任务运行。7一种CPU资源的调度装置,其特征在于,包括划分模块,用于将系统中的任务划分成任务组;统计模块,用于统计所述任务组当前对CPU资源的占用情况;以及调度模块,用于在所述任务组当前对所述CPU资源的占用超过预设的最大值时,释放所述任务组中的一个或多个任务的所述CPU资源给除该任务组之
5、外的其他任务组中的准备就绪的任务运行。8根据权利要求7所述的装置,其特征在于,还包括设置模块,用于预先设置所述任务组对所述CPU资源占用的所述最大值,其中,所述最大值为所述任务组中所有任务对所述CPU资源占用的总和。9根据权利要求8所述的装置,其特征在于,所述设置模块还用于在每个预定时段为所述任务组分配其对所述CPU资源占用的最大百分比;以及所述统计模块还用于统计所述任务组在所述每个预定时段内对所述CPU资源的占用率。10根据权利要求7所述的装置,其特征在于,所述调度模块包括保持单元,用于在所述其他任务组中均没有所述准备就绪的任务的情况下,保持所述权利要求书CN101984414ACN1019
6、84417A2/2页3任务组中的任务继续占用所述CPU资源运行;以及释放单元,用于在所述其他任务组中有所述准备就绪的任务的情况下,释放所述任务组中的一个或多个任务的所述CPU资源给所述其他任务组中的所述准备就绪的任务运行。权利要求书CN101984414ACN101984417A1/6页4CPU资源的调度方法及装置技术领域0001本发明涉及计算机操作系统领域,尤其涉及一种CPU资源的调度方法及装置。背景技术0002在计算机操作系统中,CPU资源作为整个系统的核心资源,被系统中所有任务所共享,为了给众多的任务分配CPU资源,由此产生了很多种CPU资源的调度方法。通常的操作系统中,为了满足系统所需
7、的并发和实时性要求,在不同优先级的任务间采用了基于优先级的可抢占调度方法,这种调度方法为优先级最高的任务提供CPU资源调度的保证,只要优先级最高的任务准备就绪,它立即会抢占目前运行的低优先级任务,并且一直占用CPU资源直到它主动放弃对CPU的使用。如果高优先级的任务长时间运行,低优先级的任务将无法获取到CPU资源而被饿死。0003对于任务数量较少的简单系统,可以通过精确的划分任务功能、调整任务的优先级,确保实时的任务不会长时间占用CPU资源,以及设置可能长时间占用CPU资源的低优先级任务为相同的优先级,并且采用时间片轮转的调度方法来避免这些任务饿死。0004但是,发明人发现,对于包含几十甚至几
8、百个任务、拥有数以百计优先级的大系统,上述的方法很难做到,尤其是拥有很多子系统的软件系统,这些软件子系统由不同的开发团队完成,解决该问题异常困难。即便通过上述的方法解决了现有系统的问题,伴随着新需求的不断引入,新的子系统被加入到系统中,问题又将出现。0005例如,在一个通讯系统设备软件中,存在三个软件子系统运行管理和维护OPERATIONADMINISTRATIONANDMAINTENANCE,简称为OAM子系统、宽带子系统和窄带子系统。这三个子系统本身都由若干个任务协作完成特定的业务功能,按照常规的基于优先级抢占的调度方法,其中任何一个高优先级的任务长时间占用CPU资源,都会导致其它子系统无
9、法获取CPU资源。比如,宽带子系统被拒绝服务DENIALOFSERVICE,简称为DOS攻击,最终导致OAM模块无法得到调度,无法响应用户的操作维护的请求,使得用户失去对设备的控制。发明内容0006本发明的主要目的在于提供一种CPU资源的调度方案,以至少解决上述相关技术中由于高优先级的任务长时间占用CPU资源,导致低优先级的任务无法获取CPU资源而被饿死的问题。0007为了实现上述目的,根据本发明的一个方面,提供了一种CPU资源的调度方法。0008根据本发明的CPU资源的调度方法,包括以下步骤将系统中的任务划分成任务组;统计任务组当前对CPU资源的占用情况;以及在任务组当前对CPU资源的占用超
10、过预设的最大值时,释放任务组中的一个或多个任务的CPU资源给除该任务组之外的其他任务组中的准备就绪的任务运行。0009进一步地,统计任务组当前对CPU资源的占用情况之前,该方法还包括预先设置说明书CN101984414ACN101984417A2/6页5任务组对CPU资源占用的最大值,其中,最大值为任务组中所有任务对CPU资源占用的总和。0010进一步地,预先设置任务组对CPU资源占用的最大值包括在每个预定时段为任务组分配其对CPU资源占用的最大百分比。0011进一步地,统计任务组当前对CPU资源的占用情况包括统计任务组在每个预定时段内对CPU资源的占用率。0012进一步地,每个预定时间段的时
11、间精度为微秒。0013进一步地,释放任务组中的一个或多个任务的CPU资源给除该任务组之外的其他任务组中的准备就绪的任务运行包括若其他任务组中均没有准备就绪的任务,则任务组中的任务继续占用CPU资源运行;若其他任务组中有准备就绪的任务,则释放任务组中的一个或多个任务的CPU资源给其他任务组中的准备就绪的任务运行。0014为了实现上述目的,根据本发明的另一个方面,还提供了一种CPU资源的调度装置。0015根据本发明的CPU资源的调度装置,包括划分模块,用于将系统中的任务划分成任务组;统计模块,用于统计任务组当前对CPU资源的占用情况;以及调度模块,用于在任务组当前对CPU资源的占用超过预设的最大值
12、时,释放任务组中的一个或多个任务的CPU资源给除该任务组之外的其他任务组中的准备就绪的任务运行。0016进一步地,该装置还包括设置模块,用于预先设置任务组对CPU资源占用的最大值,其中,最大值为任务组中所有任务对CPU资源占用的总和。0017进一步地,设置模块还用于在每个预定时段为任务组分配其对CPU资源占用的最大百分比;以及统计模块还用于统计任务组在每个预定时段内对CPU资源的占用率。0018进一步地,调度模块包括保持单元,用于在其他任务组中均没有准备就绪的任务的情况下,保持任务组中的任务继续占用CPU资源运行;以及释放单元,用于在其他任务组中有准备就绪的任务的情况下,释放任务组中的一个或多
13、个任务的CPU资源给其他任务组中的准备就绪的任务运行。0019通过本发明,采用在任务组对CPU资源的占用超过阈值时释放其中一个或多个任务所占用的CPU资源给其他任务组中准备就绪的任务的方式,解决了相关技术中由于高优先级的任务长时间占用CPU资源,导致低优先级的任务无法获取CPU资源而被饿死的问题,增强了系统的稳定性,提高了系统的性能。附图说明0020此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中0021图1是根据本发明实施例的CPU资源的调度方法的流程图;0022图2是根据本发明实施例的CPU资
14、源的调度装置的结构框图;0023图3是根据本发明优选实施例的CPU资源的调度装置的结构框图;0024图4是根据本发明优选实施例二的任务组划分的示意图;0025图5是根据本发明优选实施例二的系统运行时间的示意图;0026图6是根据本发明优选实施例二的分配任务组占用CPU的最大时长的流程图。说明书CN101984414ACN101984417A3/6页6具体实施方式0027下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。0028根据本发明的实施例,提供了一种CPU资源的调度方法。图1是根据本发明实施例的CPU资源的调度方法
15、的流程图,如图1所示,该方法包括以下步骤0029步骤S102,将系统中的任务划分成任务组;0030步骤S104,统计任务组当前对CPU资源的占用情况;以及0031步骤S106,在任务组当前对CPU资源的占用超过预设的最大值时,释放任务组中的一个或多个任务的CPU资源给除该任务组之外的其他任务组中的准备就绪的任务运行。0032通过上述步骤,采用在任务组对CPU资源的占用超过阈值时释放其中一个或多个任务所占用的CPU资源给其他任务组中准备就绪的任务的方式,解决了相关技术中由于高优先级的任务长时间占用CPU资源,导致低优先级的任务无法获取CPU资源而被饿死的问题,增强了系统的稳定性,提高了系统的性能
16、。0033优选地,在步骤S104之前,可以预先设置任务组对CPU资源占用的最大值,其中,最大值为任务组中所有任务对CPU资源占用的总和。例如,可以预先设置每个任务组对CPU资源占用的最大值。该方法使得用户可以对各任务组占用CPU资源的情况进行配置,增强了系统的灵活性,提高了用户体验。0034优选地,预先设置任务组对CPU资源占用的最大值包括在每个预定时段为任务组分配其对CPU资源占用的最大百分比。例如,在每个预定时段为每个任务组分配其对CPU资源占用的最大百分比。该方法可以提高系统的有效性和准确性。0035优选地,在步骤S104中,可以统计任务组在每个预定时段内对CPU资源的占用率。该方法实现
17、简单、可操作性强。0036优选地,每个预定时间段的时间精度为微秒。该方法有利于精确统计任务对CPU的占用率,提高了系统的精准度。0037优选地,在步骤S106中,若其他任务组中均没有准备就绪的任务,则任务组中的任务继续占用CPU资源运行;若其他任务组中有准备就绪的任务,则释放任务组中的一个或多个任务的CPU资源给其他任务组中的准备就绪的任务运行。0038本优选实施例可以根据系统当前的情况对超过预设的最大值即,CPU占用率的任务组中的任务进行调度,提高了系统的灵活性和处理能力。0039对应于上述的方法,在本实施例中还提供了一种CPU资源的调度装置。图2是根据本发明实施例的CPU资源的调度装置的结
18、构框图,如图2所示,该装置包括划分模块22、统计模块24、调度模块26,下面对该结构进行详细说明。0040划分模块22,用于将系统中的任务划分成任务组;统计模块24,耦合至划分模块22,用于统计任务组当前对CPU资源的占用情况;以及调度模块26,耦合至统计模块24,用于在任务组当前对CPU资源的占用超过预设的最大值时,释放任务组中的一个或多个任务的CPU资源给除该任务组之外的其他任务组中的准备就绪的任务运行。0041通过上述装置,采用调度模块26在任务组对CPU资源的占用超过阈值时释放其中一个或多个任务所占用的CPU资源给其他任务组中准备就绪的任务的方式,解决了相关技说明书CN10198441
19、4ACN101984417A4/6页7术中由于高优先级的任务长时间占用CPU资源,导致低优先级的任务无法获取CPU资源而被饿死的问题,增强了系统的稳定性,提高了系统的性能。0042图3是根据本发明优选实施例的CPU资源的调度装置的结构框图,如图3所示,该装置还包括设置模块32,耦合至划分模块22和统计模块24,用于预先设置任务组对CPU资源占用的最大值,其中,该最大值为任务组中所有任务对CPU资源占用的总和。0043优选地,设置模块32还用于在每个预定时段为任务组分配其对CPU资源占用的最大百分比;以及统计模块24还用于统计任务组在每个预定时段内对CPU资源的占用率。0044例如,设置模块32
20、还可以在每个预定时段为每个任务组分配其对CPU资源占用的最大时长以及最大时长的阈值。0045优选地,调度模块26包括保持单元262,用于在其他任务组中均没有准备就绪的任务的情况下,保持任务组中的任务继续占用CPU资源运行;以及释放单元264,用于在其他任务组中有准备就绪的任务的情况下,释放任务组中的一个或多个任务的CPU资源给其他任务组中的准备就绪的任务运行。0046优选地,在释放单元264将任务组中的一个或多个任务的CPU资源释放给其他任务组中准备就绪的任务运行之后,在统计模块24统计到该任务组当前对CPU资源的占用小于预设的最大值时,还可以恢复该任务组中之前被调度出去的任务对CPU资源的使
21、用。0047以下各个实施例结合了上述优选的实施方式。0048实施例一0049本实施例是把任务划分成任务组,并且设置其最大CPU资源占用值,当任务组的CPU资源的占用超过了设定的最大值,就把该任务组中的任务调度出去,放弃对CPU资源的使用,调度到其它任务组中的任务运行,直到该任务组对CPU资源的占用小于设定的最大值。其中,这里的任务组可以包含多个任务,也可以只包含一个任务。0050在具体实施过程中,首先需要对系统中的任务划分成若干个任务组,然后可以按照系统的需要设置任务组对CPU资源占用的最大值任务组中所有任务对CPU资源占用值的和,即,对CPU资源占用的最大百分比。因为任务对CPU资源的占用是
22、一个动态的数据,伴随着系统的运行动态的变化,具有时效性,所以这里的某个任务的CPU占有率都是指过去一段时间内该任务占用CPU的情况。例如,1秒钟的CPU占有率、30秒钟的CPU占有率、1分钟的CPU占有率等。也就是说,本实施例中的任务组的CPU资源占用的最大值通常需要指定是多长时间段内的CPU资源占有率。另外,无论是所有任务组CPU资源占用的最大值的和、还是单个任务组CPU资源占用的最大值的设置可用大于100,也可以小于100。当然单个任务组CPU资源占用的最大值的设置超过100没有任何意义。0051设置好以上的条件之后,在操作系统调度任务的时候这里可以是定时的调度、也可以是系统调用导致的调度
23、统计任务组在指定时间段内对CPU资源的占用情况,如果任务组对CPU资源的占用超过了设定的最大值,并且其它任务组有准备就绪可以运行的任务,立即把该任务组的任务调度出去,释放出CPU资源给其它任务组中准备就绪的任务运行。如果其它所有任务组中均没有准备就绪的任务,那么该任务组继续占用CPU运行即,在这种情况下任务组对CPU的占用可以超过设定的最大值。0052可见,本实施例把系统中所有的任务划分成若干个任务组,并按照系统需要定量地分配每个任务组对CPU资源占用的最大值,然后实时地对每个任务组占用CPU资源情况说明书CN101984414ACN101984417A5/6页8进行监控,在任务组的CPU资源
24、的占用超过了设定的最大值时,把该任务组中的任务调度出去,放弃对CPU资源的使用,调度到其它任务组中的任务运行,直到该任务组对CPU资源的占用小于设定的最大值,从而避免了传统实时操作系统中按照严格优先级进行抢占调度任务而导致低优先级任务饿死的问题,提高了系统的稳定性。0053实施例二0054以具体例子为例,详细说明本实施例中的CPU资源的调度方法,该方法可以包括以下步骤0055步骤1,对系统中的任务进行任务组的划分。图4是根据本发明优选实施例二的任务组划分的示意图,这里假设某个系统软件中由T1T9共计9个任务构成,被划分成A、B、C三个任务组。其中,任务组A包括T1T3三个任务,任务组B包括T4
25、和T5两个任务,其它任务全部划分到任务组C中。0056步骤2,设置每个任务组对CPU资源占用的最大值。如图4所示,这里假设将任务组A的CPU资源占用的最大值设置为I,将任务组B的CPU资源占用的最大值设置为J,将任务组C的CPU资源占用的最大值设置为K。0057可见,本实施例把各个子系统的任务划分到一个任务组,且设置其对CPU资源占用最大值,从而避免了一个子系统长时间占用CPU资源而导致其它子系统无法正常运行的情况。0058需要说明的是,因为任务的CPU占有率是指过去一段时间间隔内该任务占用CPU的情况例如,1秒钟的CPU占有率、30秒钟的CPU占有率、1分钟的CPU占有率等,所以,任务组的C
26、PU资源占用的最大值需要指定是多长时间间隔内的CPU资源占有率,这里可以将这个时间间隔设置为M。此外,为了精确计算设定时间间隔内各个任务组的CPU占有率,在具体实施过程中,需要有一个精度比较高的时间源,这里可以假定时间精度为微秒。0059步骤3,计算出在每一个时间间隔M内每一个任务组可以占用CPU的时间值即,时长。该时间值就是M乘上任务组CPU资源占用的最大值设置,即,任务组A就是M乘上I。这里假定任务组A在时间间隔M内被分配的时长为IMI精度等同上述的时间源,这里假定精度为微秒,任务组B在时间间隔M内被分配的时长为JMJ,任务组C在时间间隔M内被分配的时长为KMK。0060图5是根据本发明优
27、选实施例二的系统运行时间的示意图,如图5所示,系统运行的开始时间为0,系统在每个时间间隔M的时候都会进行任务组CPU资源运行时间的分配,分配的值就是上述任务组在时间间隔M内被分配的时长,例如,I、J和K。0061步骤4,为每一个任务组分配其占用CPU的最大时长。0062图6是根据本发明优选实施例二的分配任务组占用CPU的最大时长的流程图,如图6所示,包括以下步骤0063步骤S602,设置任务组可占用CPU的时间长度即,最大时长。例如,可以设置X、Y、Z三个变量,分别对应A、B、C三个任务组可占用的CPU时间长度精度等同上述的时间源,这里假定精度为微秒,其中,XI,YY,ZK。0064步骤S60
28、4,检测预定分配时长是否达到。若已到该分配时长,进入步骤S606,若没有到该分配时长,则继续检测。0065步骤S606,更新每个任务组可占用CPU的时间长度。例如,可以在每一个时间间说明书CN101984414ACN101984417A6/6页9隔M为每个任务组分配其对应的设置好的时长即,上述I、J和K三个值,即,每一个时间间隔M时间整点,任务组可占用CPU的时间长度更新为此时该任务组最大时长加上该任务组的上述分配时长。以任务组A为例,在每一个时间间隔M,其对应的可占用CPU的时长累加I,即XXI。需要说明的是,如果某一个任务组长时间没有运行例如,用户交互任务组,如果用户一直没有使用该设备,相
29、应的任务组没有事情可做,就会休眠,相应的最大时长就不会被消耗,一直累加到一个很大的值,一旦这个任务组得到执行,就会长时间占用处理器,导致其它任务组得不到执行。所以,这里可以为每一个任务组设置一个最大时长的阀值,当最大时长超过该阀值之后,不再分配时长给该改任务组,直到其最大时长小于该阀值。0066在具体实施过程中,在每一次任务被调度的时候,被调度进入的任务,通过上述的高精度的时间源获取该点的时间T1,该任务被调度出去的时候,通过上述的高精度的时间源获取该点的时间T2,T2减去T1就是该任务运行时间。在调度任务运行的时候,首先判断该任务所属的任务组可以占用CPU时间长度即,最大时长,减去该运行时间
30、是否小于等于0,如果是,就禁止该任务调度执行,选择其它任务运行,直到该任务属于任务组可以占用CPU时间长度是大于0。例如,该任务属于任务组A,则XIT2T1。0067综上所述,通过上述实施例,采用在任务组对CPU资源的占用超过阈值时释放其中一个或多个任务所占用的CPU资源给其他任务组中准备就绪的任务的方式,避免了单个或者多个任务长时间占用CPU资源而导致其它任务饿死的问题,增强了系统的稳定性,提高了系统的性能。0068显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计
31、算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。0069以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。说明书CN101984414ACN101984417A1/3页10图1图2说明书附图CN101984414ACN101984417A2/3页11图3图4说明书附图CN101984414ACN101984417A3/3页12图5图6说明书附图CN101984414A
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1