一种任务执行方法及装置、嵌入式设备与流程

文档序号:13512829阅读:104来源:国知局
一种任务执行方法及装置、嵌入式设备与流程

本发明涉及计算机领域,特别涉及一种任务执行方法、一种任务执行装置和一种嵌入式设备。



背景技术:

目前,通常在嵌入式设备中设置多个定时器(称为平台定时器,按照待执行任务设置平台定时器的定时时长,平台定时器以一时间点为起点开始计时,当计时的时长到达时产生中断,在平台定时器产生中断时执行所述待执行任务)以完成复杂、繁多的任务,嵌入式设备需要完成的工作越多其使用定时器的数量越多。

通常在嵌入式设备中预先设置数量不等的定时器,以确保嵌入式设备能够及时的执行繁多的任务,在设置定时器的数量时既不能设置太多也不能设置太少。定时器数量设置较多,共用一个定时器的任务数量较少,虽然能够及时执行各个任务,但是由于每个平台定时器为一个硬件定时器,针对每个平台定时器均需要维护定时时长、时钟分频计算、中断处理等,因此,设置的平台定时器数量较多时,设置和维护平台定时器的成本较高。定时器数量设置较少时,共用同一个平台定时器的任务数量较多,而定时器一次只能设置一个定时时长,因此共用同一个平台定时器的多个任务不能并行执行只能串行执行,即只有执行完一个任务之后再执行下一个任务,效率较低。

不管是哪种类型的嵌入式设备,为及时执行繁多的任务,均需要设置和维护多个平台定时器,任务执行效率低且维护成本高。



技术实现要素:

鉴于上述问题,本发明提供一种任务执行方法、装置和嵌入式设备,以解决现有技术中任务执行效率低、维护成本高的技术问题。

本发明实施例,第一方面,提供一种任务执行方法,在该方法中预置的平台定时器按照第一时长周期性地产生中断,方法包括:

在接收到包含待执行任务的任务执行命令时,配置与所述待执行任务对应的时间数据结构,所述时间数据结构中包含执行所述待执行任务的定时时长;

每监控到所述平台定时器产生一次中断时,对当前每个待执行任务执行以下步骤:将待执行任务的时间数据结构中的定时时长减去所述第一时长得到新的定时时长,并在所述新的定时时长为零时执行所述待执行任务。

本发明实施例,第二方面,提供一种任务执行装置,装置包括:

平台定时器,用于按照第一时长周期性地产生中断;

任务接收单元,用于在接收到包含待执行任务的任务执行命令时,触发配置单元;

配置单元,用于配置与所述待执行任务对应的时间数据结构,所述时间数据结构中包含执行所述待执行任务的定时时长;

监控单元,用于监控平台定时器,并在每监控到所述平台定时器产生一次中断时触发任务执行单元;

任务执行单元,用于对当前每个待执行任务执行以下步骤:将待执行任务的时间数据结构中的定时时长减去所述第一时长得到新的定时时长,并在所述新的定时时长小于等于零时执行所述待执行任务。

本发明实施例,第三方面,提供一种嵌入式设备,该嵌入式设备包括前述任务执行装置。

本发明技术方案,在接收到新的待执行任务时,为该待执行任务设置包含定时时长的时间数据结构,在每监控到平台定时器产生中断时,统一对当前所有的待执行任务的定时时长进行修改,并且在待执行任务的定时时长到达时执行该待执行任务。采用本发明技术方案,一方面,只需要设置和维护一个平台定时器即可对所有待执行任务进行处理,维护成本较低、代码量较低,适用于各种类型设备中,适用性较强;另一方面,由于每个待执行任务的定时时长设置在时间数据结构中,无需在定时平台中设置定时时长,因此,所有待执行任务可以并行处理,整体上提高任务执行的效率和速度。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。

图1为本发明实施例中任务执行方法的流程图之一;

图2a、图2b为本发明实施例中执行待执行任务的示意图;

图3为本发明实施例中任务执行方法的流程图之二;

图4为本发明实施例中任务执行方法的流程图之三;

图5为本发明实施例中任务执行方法的流程图之四;

图6为本发明实施例中执行待执行任务的示意图;

图7为本发明实施例中执行待执行任务装置的结构示意图之一;

图8为本发明实施例中执行待执行任务装置的结构示意图之二;

图9为本发明实施例中执行待执行任务装置的结构示意图之三。

具体实施方式

为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明实施例提供的任务执行方法/装置可以设置在pc、平板电脑、ipad、或智能手机中,本申请对于该任务执行方法的应用场景不做严格限定,本任务执行方法/装置尤其是在嵌入式设备中效果显得尤为明显。

实施例一

参见图1,为本发明实施例中任务执行方法的流程图,在该方法中预先设置有一个按照第一时长周期性地产生中断的平台定时器,该平台定时器在系统上电时即开始工作,该方法包括:

步骤101、接收包含待执行任务的任务执行命令。

步骤102、配置与所述待执行任务对应的时间数据结构,所述时间数据结构中包含执行所述待执行任务的定时时长。

本发明实施例中,待执行任务的定时时长用于表示从某一时刻开始经过一个时间段(该时间段的取值为定时时长)后执行所述待执行任务。

步骤103、每监控到所述平台定时器产生一次中断时,对当前每个待执行任务执行以下步骤:将待执行任务的时间数据结构中的定时时长减去所述第一时长得到新的定时时长,并在所述新的定时时长小于等于零时执行所述待执行任务。

本发明实施例中,待执行任务的定时时长大于第一时长,定时时长可以是第一时长的正整数倍也可以不是正整数倍。当定时时长不是第一时长的正整数倍时,则可能会存在到达某个周期时,定时时长减去第一时长后小于0;当定时时长为第一时长的正整数倍时,则在某一个周期,定时时长减去第一时长后为0。如图2a所示,假设定时时长为4.5倍的第一时长(用t表示),即a=4.5t,按照步骤103的方式,则在第t4中断时a=0.5t,则在第t5中断时a-t<0。如图2b所示,假设定时时长a=5t,按照步骤103的方式,则在第t5中断时a-t=0。

本发明实施例中,平台定时器的第一时长即为平台定时器的精度,为减少时延和误差,将平台定时器的第一时长的取值设置为一个较小的值(例如设置为微秒量级)。将待执行任务的定时时长设置为第一时长的正整数倍,例如将定时时长设置为毫秒或秒量级。对于本领域技术人员而言,待执行任务的定时时长的取值、第一时长的取值可以根据实际需求灵活设置,本申请不作严格限定。

本发明实施例中,可以通过调用预置的监控函数实时地或者按照第二时长周期性地监控平台定时器产生中断的情况,其中所述第二时长小于第一时长。优选地,第一时长为第二时长的正整数倍。

本发明实施例中,监控函数监控平台定时器产生中断的情况,具体可通过但不仅限于以下三种方式实现:

方式1、预先在中断服务程序中设置一个相对时间参数(用ct表示),该ct的初始值为0;当平台定时器每产生一个中断时,则将该ct加上第一时长,即ct=ct+t;当ct达到预置的最大值时,当平台定时器每产生一个中断,则将ct减去第一时长,即ct=ct-t;当ct达到0时,则当平台定时器每产生一个中断时,则将该ct加上第一时长……依此类推。监控函数按照第二时长周期性地读取ct的取值,将本次读取的ct取值与前一次读取的ct取值进行比较,若ct取值发生变化则确定监控平台产生一次中断。

方式2、预先在中断服务程序中设置一个相对时间参数(用n表示),该n的初始值为0;当平台定时器每产生一个中断时,则将该n加上1,即n=n+1;当n达到预置的最大值时,当平台定时器每产生一个中断,则将n减去1,即n=n-1;当n达到0时,则当平台定时器每产生一个中断时,则将该n加上1……依此类推。监控函数按照第二时长周期性地读取n的取值,将本次读取的n取值与前一次读取的n取值进行比较,若n取值发生变化则确定监控平台产生一次中断。

方式3、预先在中断服务程序中设置一个计数器(用n表示),该n的初始值为0;当平台定时器每产生一个中断时,则将该n加上1,即n=n+1,…依此类推。监控函数按照第二时长周期性地读取n的取值,将本次读取的n取值与前一次读取的n取值进行比较,若n取值发生变化则确定监控平台产生一次中断。

本发明实施例中,前述步骤101与步骤102具有严格的先后执行顺序,先执行步骤101再执行步骤102。步骤103与步骤101、步骤102没有严格的先后执行顺序,步骤103可以在步骤101之前执行,也可以在步骤101之后执行,还可以在步骤102之后执行,本申请不做严格限定。

优选地,本发明实施例中,前述步骤102中,具体可通过但不仅限于以下两种方式实现:

方式1、预先设置时间数据结构的构建信息,当接收到新的待执行任务时,按照构建信息构建与该新的待执行任务对应的时间数据结构,当新的待执行任务执行完毕时删除对应的时间数据结构。

在前述方式1中,步骤102中,配置与所述待执行任务对应的时间数据结构包括以下步骤a1~步骤a2:步骤a1、按照预置的时间数据结构构建信息,构建初始时间数据结构;步骤a2、根据所述待执行任务设置所述初始时间数据结构中的参数的取值,得到与所述待执行任务对应的时间数据结构。

优选地,如图3所示,所述方法还进一步包括步骤104:

步骤104、在待执行任务执行完毕时删除所述待执行任务对应的时间数据结构。

方式2、预先配置有一定数量的时间数据结构,在该时间数据结构中还包括一个用于表示该时间数据结构的状态的状态参数,当接收到新的待执行任务时,从预置的时间数据结构中选取其中一个当前状态为空闲状态的时间数据结构分配给新的待执行任务。

时间数据结构的状态可以包括空闲状态和非空闲状态,当为空闲状态时表示该时间数据结构没有被占用,当为非空闲状态时表示该时间数据结构已经被某个待执行任务占用,可以用不同的数字表示状态,也可以用字符表示状态,本申请不做严格限定。例如:用“1”表示非空闲状态、用“0”表示空闲状态;用“idle”表示空闲状态,用“busy”表示非空闲状态;用“y”表示空闲状态,用“n”表示非空闲状态。

在方式2中,前述步骤102中,配置与所述待执行任务对应的时间数据结构包括以下步骤b1~步骤b2:步骤b1、从预置的多个时间数据结构中,选取当前状态为空闲状态的一个时间数据结构作为初始时间数据结构;步骤b2、根据所述待执行任务设置所述初始时间数据结构中的参数的取值,得到与所述待执行任务对应的时间数据结构,并将该时间数据结构的状态设置为非空闲状态。

优选地,在前述图1、图3所示的方法中还可进一步包括步骤104,如图4所:

步骤105、在待执行任务执行完毕时删除所述待执行任务对应的时间数据结构。

本发明实施例中,在任务执行指令中携带有用于描述待执行任务详细信息的描述信息,该描述信息可以包括:待执行任务的执行函数的名称、待执行任务的运行次数的取值、定时时长的取值等。因此,在前述方式1的时间数据结构构建信息中定义时间数据结构包含的参数个数、参数类型、参数属性、定义参数的先后顺序等,则例如时间数据结构可包含以下参数:时间数据结构的id信息、待执行任务的运行次数、待执行任务的定时时长、待执行任务的执行函数名称等。前述步骤102中,可以根据待执行任务的描述信息设置初始时间数据结构中的参数的取值。

本发明实施例中,在为待执行任务配置时间数据结构之后,建立该时间数据结构的id信息与待执行任务的映射关系,例如可以以建立列表的方式存储前述映射关系。

本发明实施例中,对于方式1,由于待执行任务在执行完毕时删除其对应的时间数据结构,因此,未被删除的时间数据结构则表示对应的待执行任务未被执行完毕,则前述步骤103中,可通过轮询方式依次轮询当前所有的时间数据结构,每询问到一个时间数据结构时,将该时间数据结构中的定时时长减去第一时长得到新的定时时长。

对于方式2,由于待执行任务在执行完毕时,将该待执行任务对应的时间数据结构的状态修改为空闲状态,即释放该时间数据结构;因此,前述步骤103中可通过轮询方式轮询所有时间数据结构,每轮询到一个时间数据结构时执行以下操作:读取该时间数据结构的状态;若状态为空闲状态,则不做处理,继续轮询下一个时间数据结构;若状态为非空闲状态,则表示该时间数据结构分配给一个待执行任务且该待执行任务未执行完毕,将该时间数据结构中的定时时长减去第一时长得到新的定时时长。

假设待执行任务fi,则为该fi配置的时间数据结构用structi表示,structi如下所示:

本发明实施例中,有些待执行任务的执行次数大于1,在该待执行任务的定时时长小于等于0时执行一次该待执行任务,继续进行下一次执行时需要重新设置定时时长,因此为进一步加快定时时长的设置速度和效率,本发明实施例中,可以在设置待执行任务的时间数据结构的时候,在该时间数据结构中还设置一个取值与定时时长初始值相同的备份定时时长,且该备份定时时长的取值在整个执行待执行任务的过程中一直保持不变。假设待执行任务fi,则为该fi配置的包含备份定时时长的时间数据结构用structi表示,structi如下所示:

因此,本发明实施例中,还可以在前述方法流程中进一步包括以下步骤106~步骤108,如图5所示:

步骤106、将待执行任务的运行次数减1得到新的运行次数,并判断新的运行次数是否为零,若是则执行步骤107,若否则执行步骤108;

步骤107、确定所述待执行任务执行完毕;

步骤108、将所述待执行任务的时间数据结构中的定时时长的取值设置为与备份定时时长一致。

为便于本领域技术人员对本申请技术方案的理解,下面以一具体的实例进行描述,假设包括三个待执行任务f1、f2和f3,f1、f2、f3的定时时长依次用a1、a2、a3表示,且a1、a2、a3的初始值依次设置为6t、5t和4t,f1、f2和f3的备份定时时长依次用b1、b2、b3表示,且b1、b2、b3的取值依次与a1、a2、a3的初始值相同,即b1、b2、b3的取值依次为6t、5t和4t,f1、f2和f3的运行次数依次用n1、n2、n3表示,且n1、n2、n3的初始值依次设置为1、2、3,则执行f1、f2、f3的时序如图6所示。在监控到t1中断时,当前待执行任务包括f1,将a1减去t得到新的定时时长a1=5t;在监控到t2中断时,当前待执行任务包括f1,将a1减去t得到新的定时时长a1=4t;在监控到t3中断时,当前待执行任务包括f1和f2,将a1和a2分别减去t得到新的定时时长a1=3t、a2=4t;在监控到t4中断时,当前待执行任务包括f1和f2,将a1和a2分别减去t得到新的定时时长a1=2t、a2=3t;在监控到t5中断时,当前待执行任务包括f1、f2和f3,将a1、a2和a3分别减去t得到新的定时时长a1=t、a2=2t、a3=3t;监控到t6中断时,当前待执行任务包括f1、f2和f3,将a1、a2和a3分别减去t得到新的定时时长a1=0、a2=t、a3=2t,此时,执行f1,并将f1的运行次数n1减去1得到新的运行次数n1=0,则确定f1执行完毕;监控到t7中断时,当前待执行任务包括f2和f3,将a2和a3分别减去t得到新的定时时长a2=0、a3=t,此时执行f2,并且将n2减去1得到新的运行次数n2=1,根据b2设置a2得到a2=5t;监控到t8中断时,当前待执行任务包括f2和f3,将a2和a3分别减去t得到新的定时时长a2=4t、a3=0,则执行f3,并将n3减去1,得新的运行次数n3=2,根据b3设置a3得到a3=4t;监控到t9中断时,当前待执行任务包括f2和f3,将a2和a3分别减去t得到新的定时时长a2=3t、a3=3t;监控到t10中断时,当前待执行任务包括f2和f3,将a2和a3分别减去t得到新的定时时长a2=2t、a3=2t;监控到t11中断时,当前待执行任务包括f2和f3,将a2和a3分别减去t得到新的定时时长a2=t、a3=t;当监控到t12中断时,当前待执行任务包括f2和f3,将a2和a3分别减去t得到新的定时时长a2=0、a3=0,此时执行f2和f3,分别将n2、n3减去1得到新的运行次数为n2=0,n3=1,此时确认f2执行完毕,根据b3设置a3得到a3=4t;监控到t13中断时,当前待执行任务包括f3,将a3分别减去t得到新的定时时长a3=3t;监控到t14中断时,当前待执行任务包括f3,将a3减去t得到新的定时时长a3=2t;监控到t15中断时,当前待执行任务包括f3,将a3减去t得到新的定时时长a3=t;监控到t16中断时,当前待执行任务包括f3,将a3减去t得到新的定时时长a3=0,则执行f3,并将n3减去1得到新的运行次数n3=0,则确认f3执行完毕。

实施例二

基于前述实施例一提供的任务执行方法的相同构思,本发明实施例二提供一种任务执行装置,该任务执行装置的结构如图7所示,包括:

平台定时器1,用于按照第一时长周期性地产生中断。

本发明实施例中,平台定时器1在任务执行装置上电时即开始工作。

任务接收单元2,用于在接收到包含待执行任务的任务执行命令时,触发配置单元3。

配置单元3,用于配置与所述待执行任务对应的时间数据结构,所述时间数据结构中包含执行所述待执行任务的定时时长。

本发明实施例中,待执行任务的定时时长用于表示从某一时刻开始经过一个时间段(该时间段的取值为定时时长)后执行所述待执行任务。

监控单元4,用于监控平台定时器1,并在每监控到所述平台定时器1产生一次中断时触发任务执行单元5。

本发明实施例中,监控单元4可以通过调用预置的监控函数实时地或者按照第二时长周期性地监控平台定时器1产生中断的情况,其中所述第二时长小于第一时长。

任务执行单元5,用于对当前每个待执行任务执行以下步骤:将待执行任务的时间数据结构中的定时时长减去所述第一时长得到新的定时时长,并在所述新的定时时长小于等于零时执行所述待执行任务。

本发明实施例中,平台定时器1的第一时长即为平台定时器1的精度,为减少时延和误差,将平台定时器1的第一时长的取值设置为一个较小的值(例如设置为微秒量级)。将待执行任务的定时时长设置为第一时长的正整数倍,例如将定时时长设置为毫秒或秒量级。对于本领域技术人员而言,待执行任务的定时时长的取值、第一时长的取值可以根据实际需求灵活设置,本申请不作严格限定。

本发明实施例中,配置单元3配置与所述待执行任务对应的时间数据结构,具体可通过以下两个示例实现。

示例1,所述配置单元3,具体用于:按照预置的时间数据结构构建信息,构建初始时间数据结构;根据所述待执行任务设置所述初始时间数据结构中的参数的取值,得到与所述待执行任务对应的时间数据结构。

优选地,在图7所示的装置中还进一步包括删除单元6,如图8所示:

删除单元6,用于在待执行任务执行完毕时删除所述待执行任务对应的时间数据结构。

示例2,所述配置单元3,具体用于:从预置的多个时间数据结构中,选取当前状态为空闲状态的一个时间数据结构作为初始时间数据结构;根据所述待执行任务设置所述初始时间数据结构中的参数的取值,得到与所述待执行任务对应的时间数据结构,并将该时间数据结构的状态设置为非空闲状态。

优选地,在图7所示的装置中还可进一步包括修改单元7,如图9所述:

修改单元7,用于在待执行任务执行完毕时将所述待执行任务对应的时间数据结构中的状态修改为空闲状态。

本发明实施例中,在任务执行指令中携带有用于描述待执行任务详细信息的描述信息,该描述信息可以包括:待执行任务的执行函数的名称、待执行任务的运行次数的取值、定时时长的取值等。因此,在前述方式1的时间数据结构构建信息中定义时间数据结构包含的参数个数、参数类型、参数属性、定义参数的先后顺序等,则例如时间数据结构可包含以下参数:时间数据结构的id信息、待执行任务的运行次数、待执行任务的定时时长、待执行任务的执行函数名称等。在示例1和示例2中,配置单元3可以根据待执行任务的描述信息修改初始时间数据结构中的参数的取值。

本发明实施例中,在为待执行任务配置时间数据结构之后,建立该时间数据结构的id信息与待执行任务的映射关系,例如可以以建立列表的方式存储前述映射关系。

本发明实施例中,有些待执行任务的执行次数大于1,在该待执行任务的定时时长小于等于0时执行一次该待执行任务,继续进行下一次执行时需要重新设置定时时长,因此为进一步加快定时时长的设置速度和效率,本发明实施例中,可以在设置待执行任务的时间数据结构的时候,在该时间数据结构中还设置一个取值与定时时长初始值相同的备份定时时长,且该备份定时时长的取值在整个执行待执行任务的过程中一直保持不变。

实施例三

本发明实施例三提供一种嵌入式设备,包括前述图7、图8或图9所示的任务执行装置。

以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,对本领域普通技术人员而言,能够理解本发明的方法和装置的全部或者任何步骤或者部件可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件固件、软件或者他们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用它们的基本编程技能就能实现的。

本领域普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的上述实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括上述实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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