一种任务运行的控制方法和装置与流程

文档序号:14608977发布日期:2018-06-05 20:24阅读:114来源:国知局
一种任务运行的控制方法和装置与流程

本发明涉及计算机技术领域,具体涉及一种任务运行的控制方法和装置。



背景技术:

随着人们需求的不断提升,利用电池进行供电的设备,例如手机、平板电脑、可穿戴设备等在电池的选型上更偏重于续航能力,具有大容量电池的设备在同类产品中也具有较高的竞争力。然而另一方面,电池的最大输出电流也是制约电池选型的一个重要参数,如果电池的输出最大电流无法满足设备可能存在的最大瞬时功耗要求,就会导致掉电等相关问题产生。

实际上,系统在大多数时间内的功耗远远低于最大瞬时功耗,举例而言,一个系统可能在95%以上的时间内都运行于较低并平稳的低功耗条件下,但偶尔会有一些时间段出现大电流消耗,如果出现所需电流大于电池额定输出电流的话,则会造成故障。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的任务运行的控制方法和装置。

依据本发明的一个方面,提供了一种任务运行的控制方法,包括:

当任务获得CPU使用权限时,获取系统的当前电流值;

获取该任务的运行电流阈值;所述运行电流阈值为系统允许的最大瞬时电流值与该任务的功耗电流值之差;

如果系统的当前电流值不高于该任务的运行电流阈值,运行该任务;如果系统的当前电流值高于该任务的运行电流阈值,将该任务挂起。

可选地,所述任务是对系统中的普通任务切割得到的子任务;所述任务在运行时不受其他非系统级的中断指令影响。

可选地,所述将该任务挂起包括:

判断是否有可用的延时定时器;

如果没有可用的延时定时器,获取该任务的第一延时时间;

将该任务在第一延时时间内挂起,并在挂起结束后,当任务重新获得CPU使用权限时,直接运行该任务。

可选地,该方法还包括:

如果有可用的延时定时器,选定可用的延时定时器;

获取该任务的等待时间,根据该任务的等待时间,设定该任务的第二延时时间和延时次数;以及设定在等待时间结束时,调用所述选定的延时定时器将延时次数清零;

将该任务在第二延时时间内挂起;并在挂起结束后,当任务获得CPU使用权限时,重新判断系统的当前电流值是否高于该任务的运行电流阈值;如果不高于,则运行该任务;如果高于,将该任务的延时次数减一,判断该任务的延时次数是否小于或等于零;如果延时次数大于零,将该任务挂起并重复上述步骤;如果延时次数小于或等于零,运行该任务。

可选地,该方法还包括:

在所述选定的延时定时器中设置任务的优先级;

所述判断是否有可用的延时定时器包括:判断延时器中是否已设置了任务的优先级,若已设置,则判断该延时定时器不可用,若未设置,则判断该延时定时器可用。

依据本发明的另一方面,提供了一种任务运行的控制装置,包括:

系统电流值获取单元,用于在任务获得CPU使用权限时,获取系统的当前电流值;

控制单元,用于获取该任务的运行电流阈值;所述运行电流阈值为系统允许的最大瞬时电流值与该任务的功耗电流值之差;如果系统的当前电流值不高于该任务的运行电流阈值,运行该任务;如果系统的当前电流值高于该任务的运行电流阈值,将该任务挂起。

可选地,所述任务是对系统中的普通任务切割得到的子任务;所述任务在运行时不受其他非系统级的中断指令影响。

可选地,所述控制单元,用于判断是否有可用的延时定时器;如果没有可用的延时定时器,获取该任务的第一延时时间;将该任务在第一延时时间内挂起,并在挂起结束后,当任务重新获得CPU使用权限时,直接运行该任务。

可选地,所述控制单元,用于在有可用的延时定时器时,选定可用的延时定时器;获取该任务的等待时间,根据该任务的等待时间,设定该任务的第二延时时间和延时次数;以及设定在等待时间结束时,调用所述选定的延时定时器将延时次数清零;将该任务在第二延时时间内挂起;并在挂起结束后,当任务获得CPU使用权限时,重新判断系统的当前电流值是否高于该任务的运行电流阈值;如果不高于,则运行该任务;如果高于,将该任务的延时次数减一,判断该任务的延时次数是否小于或等于零;如果延时次数大于零,将该任务挂起并重复上述步骤;如果延时次数小于或等于零,运行该任务。

可选地,所述控制单元,还用于在所述选定的延时定时器中设置任务的优先级;以及用于判断延时器中是否已设置了任务的优先级,若已设置,则判断该延时定时器不可用,若未设置,则判断该延时定时器可用。

由上述可知,本发明的技术方案,在任务获得CPU使用权限时,将获取到的系统当前电流值与该任务的运行电流阈值进行比较,如果系统当前电流值高于该任务的运行电流阈值,将该任务挂起,反之运行该任务。该技术方案在不更改系统的任务调度算法的前提下,能够控制任务运行或挂起,减小了系统电流峰值,降低设备对电源功率的要求,可以扩大电源选型的范围,降低设备的成本,非常适合对嵌入式设备等对电源有着严格需求的产品。这样也减少了电压纹波,提高了电源输出电压的稳定性。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一个实施例的任务运行的控制方法的流程示意图;

图2示出了根据本发明一个实施例的包含电流采集模块的电流值采集电路示意图;

图3示出了根据本发明一个实施例的采用任务运行的控制方法对系统进行优化前后的电流-时间关系图

图4示出了根据本发明一个实施例的任务运行的控制装置的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

图1示出了根据本发明一个实施例的一种任务运行的控制方法的流程示意图,如图1所示,该方法包括:

步骤S110,当任务获得CPU使用权限时,获取系统的当前电流值。

系统即为设备的控制系统,任务为系统中执行的任务。例如,系统为可穿戴设备中的操作系统。具体地,可以通过在设备中安装电流采集模块,来采集系统的当前电流值。

图2示出了根据本发明一个实施例的包含电流采集模块的电流值采集电路示意图。如图2所示,在电源线路中串联一个毫欧级的采集电阻R,这样电阻两端的压降很小,采集电阻产生的热量也很低,不会影响设备的正常工作。采集电阻R并联有信号调理电路,可以采集电阻两端的电压,并对采集到的模拟信号进行滤波和缩放,最终通过CPU提供的ADC(Analog-to-digital converter,模数转换器)通道,将采集到的电压信号转换成电流值。以嵌入式设备为例,可以根据系统的功能,得到系统的预期电流值大小和等级,并根据采集元件的数值,进一步确定信号调理电路的缩放因子,一般地,需要对采集到的信号进行放大。由于嵌入式设备自身就对电流消耗有着严格的需求,因此可以采用超低功耗运放,以减少额外的电流消耗。信号放大之后,通过ADC进行采样和量化并最终转换为电压和电流数值。

在另一实施例中,为使电流采集带来的消耗更少,可以通过在电流采集电路输出端加一个运放,将其输入到一个电压比较器中。在电压比较器中设定比较阈值,在超出此比较阈值之后再进行电流采集,也就是说,如果不超过该比较阈值,可以不进行步骤S110-S140。

步骤S120,获取该任务的运行电流阈值;运行电流阈值为系统允许的最大瞬时电流值与该任务的功耗电流值之差。

在系统开发时,可以预估出系统允许的最大瞬时电流值。而每个任务在运行时可能会调用屏幕、USB接口等硬件,其功耗电流也是可以预估的。因此对每个任务都可以预先确定一个功耗电流值,以及确定一个系统的最大瞬时电流值,用系统的最大瞬时电流值减去任务的功耗电流值就得到了该任务的运行电流阈值。

步骤S130,如果系统的当前电流值不高于该任务的运行电流阈值,运行该任务。

步骤S140,如果系统的当前电流值高于该任务的运行电流阈值,将该任务挂起。

可以看出,如果系统的当前电流值加上该任务的功耗电流值超过了该系统允许的最大瞬时电流值(可能是预估得到的),那么由于该系统对应的设备选配的电源是根据系统允许的最大瞬时电流值适配的,就可能造成系统故障,此时将任务挂起,反之则允许任务运行。

可见,图1所示的方法,在任务获得CPU使用权限时,将获取到的系统当前电流值与该任务的运行电流阈值进行比较,如果系统当前电流值高于该任务的运行电流阈值,将该任务挂起,反之运行该任务。该技术方案在不更改系统的任务调度算法的前提下,能够控制任务运行或挂起,减小了系统电流峰值,降低设备对电源功率的要求,可以扩大电源选型的范围,降低设备的成本,非常适合对嵌入式设备等对电源有着严格需求的产品。由于系统的电流趋于平缓,电源输出的电流也相对稳定,这样也减少了电压纹波,提高了电源输出电压的稳定性,使得电源更加耐用。

在本发明的一个实施例中,图1所示的方法中,任务是对系统中的普通任务切割得到的子任务;任务在运行时不受其他非系统级的中断指令影响。

以高瞬时功耗任务为例,其在系统里不作为闭环操作一部分的任务,这些任务由于不向其它任务发送消息或信号量,即任务执行结果不作为其他任务运行的前提和输入,因此这些任务的运行没有实时性的要求,运行结果不会对系统可靠性构成影响,与其他任务耦合度很低。将这些任务分割为多段子任务,并保证子任务在运行时不受其他非系统级的中断指令控制,可以保证子任务在运行后可以不被其他任务中断。这是由于子任务本身的运行就受到了电流限制,在得到运行机会后如果将其中断,在该子任务重新获得CPU运行权限后还要执行电流值的判断操作,这无疑是增加了电流消耗。而系统级的中断指令往往是为了满足系统中存在的如告警处理等事件处理。由于告警处理中最为紧急的操作一般为执行类似开关量等简单动作,因此不会对系统功耗构成影响,中断返回时,不必重新对子任务进行电流值的判断而是可以直接运行。而如果告警中断需要处理的事件较复杂,则需将不影响中断返回时系统功耗的操作放进中断处理,其他非紧急操作通过发送消息的方式由其他高优先级任务完成。同时该技术方案不需要更改系统的任务调度算法,保持了系统的稳定性。

在本发明的一个实施例中,图1所示的方法中,将该任务挂起包括:判断是否有可用的延时定时器;如果没有可用的延时定时器,获取该任务的第一延时时间;将该任务在第一延时时间内挂起,并在挂起结束后,当任务重新获得CPU使用权限时,直接运行该任务。

如果系统中有可用的延时定时器,那么可以利用该延时定时器来设置任务的挂起,但是如果没有可用的延时定时器,就需要将任务挂起一段相对较长的时间,在该任务挂起结束后,重新获得CPU使用权限时,由于该任务已经延迟了很久,因此直接运行而不再去判断该任务的电流运行阈值与系统当前电流值的关系。

而系统中如果有可用的延时定时器,那么任务的延迟处理可以更灵活,例如在本发明的一个实施例中,上述方法还包括:如果有可用的延时定时器,选定可用的延时定时器;获取该任务的等待时间,根据该任务的等待时间,设定该任务的第二延时时间和延时次数;以及设定在等待时间结束时,调用选定的延时定时器将延时次数清零;将该任务在第二延时时间内挂起;并在挂起结束后,当任务获得CPU使用权限时,重新判断系统的当前电流值是否高于该任务的运行电流阈值;如果不高于,则运行该任务;如果高于,将该任务的延时次数减一,判断该任务的延时次数是否小于或等于零;如果延时次数大于零,将该任务挂起并重复上述步骤;如果延时次数小于或等于零,运行该任务。

考虑到任务的运行也需要时间,因此第二延时时间和延时次数的乘积应小于该任务的等待时间。这样一个任务如果不满足运行条件,就会被挂起较短的一段延时时间,在重新获得CPU使用权限时,如果还不满足运行条件,就会被继续挂起。为避免任务饿死,任务的延时次数可以被设置,当延时次数小于或等于零时,不再根据电流值判断该任务是否可以被运行,而是直接运行该任务。

在本发明的一个实施例中,上述方法还包括:在选定的延时定时器中设置任务的优先级;判断是否有可用的延时定时器包括:判断延时器中是否已设置了任务的优先级,若已设置,则判断该延时定时器不可用,若未设置,则判断该延时定时器可用。

在本实施例中,系统可以存在多个可用的延时定时器。当任务需要挂起时,查询是否有可用的延时定时器,如果有,就选定该延时定时器,并将该任务的优先级数值写入,这样既声明了该延时定时器已被一个任务使用,也使得可以根据延时定时器中的优先级数值,在有任务可以运行时,从挂起的任务中选取优先级更高的任务来运行。例如定义一个unsigned char型的全局变量作为延时定时器的使能标志位,在该使能标志位中写入任务的优先级数值。类似地,任务的延时次数也可以为unsigned char型的全局变量,可被该任务和中断服务函数修改。

每个任务在运行结束后,都可以调用系统的延时函数,这时就可以从被挂起的函数中选择优先级较高的任务来运行。上述方法也可以以对任务的程序代码修改来实现,例如在将高瞬时功耗的程序切割为多段,在每段程序的代码前增加系统电流值获取、自身电流运行阈值及判断逻辑,等等。图3示出了根据本发明一个实施例的采用任务运行的控制方法对系统进行优化前后的电流-时间关系图,从图3中可以看出,该方法有效地减小了系统的电流峰值,使得电流-时间曲线变得相对平缓。

图4示出了根据本发明一个实施例的一种任务运行的控制装置的结构示意图,如图4所示,任务运行的控制装置400包括:

系统电流值获取单元410,用于在任务获得CPU使用权限时,获取系统的当前电流值。

控制单元420,用于获取该任务的运行电流阈值;运行电流阈值为系统允许的最大瞬时电流值与该任务的功耗电流值之差;如果系统的当前电流值不高于该任务的运行电流阈值,运行该任务;如果系统的当前电流值高于该任务的运行电流阈值,将该任务挂起。

可见,图4所示的装置,通过各单元的相互配合,在任务获得CPU使用权限时,将获取到的系统当前电流值与该任务的运行电流阈值进行比较,如果系统当前电流值高于该任务的运行电流阈值,将该任务挂起,反之运行该任务。该技术方案在不更改系统的任务调度算法的前提下,能够控制任务运行或挂起,减小了系统电流峰值,降低设备对电源功率的要求,可以扩大电源选型的范围,降低设备的成本,非常适合对嵌入式设备等对电源有着严格需求的产品。由于系统的电流趋于平缓,电源输出的电流也相对稳定,这样也减少了电压纹波,提高了电源输出电压的稳定性,使得电源更加耐用。

在本发明的一个实施例中,图4所示的装置中,任务是对系统中的普通任务切割得到的子任务;任务在运行时不受其他非系统级的中断指令影响。

在本发明的一个实施例中,图4所示的装置中,控制单元420,用于判断是否有可用的延时定时器;如果没有可用的延时定时器,获取该任务的第一延时时间;将该任务在第一延时时间内挂起,并在挂起结束后,当任务重新获得CPU使用权限时,直接运行该任务。

在本发明的一个实施例中,上述装置中,控制单元420,用于在有可用的延时定时器时,选定可用的延时定时器;获取该任务的等待时间,根据该任务的等待时间,设定该任务的第二延时时间和延时次数;以及设定在等待时间结束时,调用选定的延时定时器将延时次数清零;将该任务在第二延时时间内挂起;并在挂起结束后,当任务获得CPU使用权限时,重新判断系统的当前电流值是否高于该任务的运行电流阈值;如果不高于,则运行该任务;如果高于,将该任务的延时次数减一,判断该任务的延时次数是否小于或等于零;如果延时次数大于零,将该任务挂起并重复上述步骤;如果延时次数小于或等于零,运行该任务。

在本发明的一个实施例中,上述装置中,控制单元420,还用于在选定的延时定时器中设置任务的优先级;以及用于判断延时器中是否已设置了任务的优先级,若已设置,则判断该延时定时器不可用,若未设置,则判断该延时定时器可用。

需要说明的是,上述各装置实施例的具体实施方式与前述对应方法实施例的具体实施方式相同,在此不再赘述。

综上所述,本发明的技术方案,在任务获得CPU使用权限时,将获取到的系统当前电流值与该任务的运行电流阈值进行比较,如果系统当前电流值高于该任务的运行电流阈值,将该任务挂起,反之运行该任务。该技术方案在不更改系统的任务调度算法的前提下,能够控制任务运行或挂起,减小了系统电流峰值,降低设备对电源功率的要求,可以扩大电源选型的范围,降低设备的成本,非常适合对嵌入式设备等对电源有着严格需求的产品。由于系统的电流趋于平缓,电源输出的电流也相对稳定,这样也减少了电压纹波,提高了电源输出电压的稳定性,使得电源更加耐用。

需要说明的是:

在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的任务运行的控制装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1