一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于固定时间片的任务调度方法、系统、设备及存储介质与流程

2022-03-08 22:33:41 来源:中国专利 TAG:


1.本发明属于计算机技术领域,尤其涉及一种基于固定时间片的任务调度方法、系统、电子设备及存储介质。


背景技术:

2.嵌入式操作系统被广泛应用于各类应用领域,比如消费电子、视像安防、工业控制等,其主要负责管理系统中各个任务。任务调度效率是衡量嵌入式操作系统性能的重要指标,它对应用场景的响应速度、产品综合体验有着重要影响。一般而言,任务调度需要借助操作系统的时钟节拍(tick)来完成。时钟节拍作用类似于人体的心脏,其每隔固定时间(比如10ms)增加一次计数,能为操作系统提供时间信息,为任务调度的时间选择提供依据。
3.传统基于固定时间片的操作系统中,任务创建时会被分配固定大小的时间片,以tick为单位。比如1个tick为10ms,时间片为60ms,则时间片值为6。系统每隔10ms来一次tick中断,此时进行一些系统全局的处理,比如增加总的tick计数;还会将当前任务的剩余时间片减1,当减为0时表示时间片用完,当前任务被挂起,添加到就绪任务队列中,并从就绪任务队列调度下一个任务运行。
4.传统基于固定时间片任务调度运行流程如图1a所示,创建任务时设定初始时间片为n,单位tick,剩余时间片n与初始时间片相同。每次tick中断产生时将n减1,当n减为0时表示任务时间片用完,当前任务被挂起,等待下次被调度运行。若运行过程中发生主动任务切换,比如以睡眠方式延时一段时间、或因等待某一事件而挂起,此时剩余时间片n尚未减为0,则记录n的值,等下次该任务被调度运行时,基于剩余时间片n来计数。
5.根据以上流程,当运行过程中发生主动任务切换时,已运行时间中,不足1个tick的部分将不会被计算,这样当任务时间片最后用完(n减为0)时,其实际运行的时间将大于理论时间片。在任务时间片减为0的过程中,发生主动任务切换的次数越多,则任务实际运行时间与理论时间片相差越大。
6.传统基于固定时间片的任务调度时间分布如图1b所示,任务的初始时间片t包含tick0-tickn,当任务在t1时刻发生主动切换时,实际已运行的时间为m毫秒,而被统计到的运行时间为1个tick,即tick0(10ms),不足一个tick的部分(图中p所示)将无法被统计到任务已运行时间中。最后当任务因时间片用完而发生调度时,其获得的执行时间将大于n 1个tick,且超出的时间长度不固定。
7.操作系统通常会根据应用场景的需要,给任务设定不同的优先级,进而分配不同大小的理论时间片值。按照传统方法,任务实际执行时间与理论时间片不一致,且误差不固定,这样势必导致任务调度无法满足应用场景的需要,从而影响系统性能。


技术实现要素:

8.本发明的目的在于提供一种基于固定时间片的任务调度方法、系统、电子设备及存储介质,旨在解决现有技术中任务实际运行时间与理论时间片不一致导致的系统性能不
佳的问题。
9.一方面,本发明提供一种基于固定时间片的任务调度方法,所述方法包括下述步骤:
10.调度运行就绪任务队列中的任务;
11.开启与所述任务对应的定时器,并基于所述任务的剩余时间片设定所述定时器的超时时间;
12.当所述任务发生主动切换时,基于所述任务的已运行时间片更新所述剩余时间片,并挂起所述任务;
13.当所述定时器超时时,基于所述任务的初始时间片重置所述剩余时间片,并挂起所述任务。
14.优选地,调度运行就绪任务队列中的任务之前,还包括:
15.当创建所述任务时,以毫秒为单位设定所述初始时间片及所述剩余时间片。
16.优选地,调度运行就绪任务队列中的任务之后,开启与所述任务对应的定时器之前,还包括:
17.判断所述剩余时间片是否小于预设的时间片阈值;
18.若小于,则基于所述时间片阈值更改所述剩余时间片。
19.优选地,基于所述任务的已运行时间片更新所述剩余时间片之前,还包括:
20.当所述任务发生主动切换时,以毫秒为单位记录所述已运行时间片。
21.另一方面,本发明提供了一种基于固定时间片的任务调度装置,所述装置包括:
22.任务调度单元,用于调度运行就绪任务队列中的任务;
23.定时器开启单元,用于开启与所述任务对应的定时器,并基于所述任务的剩余时间片设定所述定时器的超时时间;
24.时间片更新单元,用于当所述任务发生主动切换时,基于所述任务的已运行时间片更新所述剩余时间片,并挂起所述任务;以及
25.时间片重置单元,用于当所述定时器超时时,基于所述任务的初始时间片重置所述剩余时间片,并挂起所述任务。
26.优选地,所述装置还包括:
27.时间片设定单元,用于当创建所述任务时,以毫秒为单位设定所述初始时间片及所述剩余时间片。
28.优选地,所述装置还包括:
29.判断单元,用于判断所述剩余时间片是否小于预设的时间片阈值;
30.时间片更改单元,用于若所述剩余时间片小于所述时间片阈值,则基于所述时间片阈值更改所述剩余时间片。
31.优选地,所述时间片重置单元还包括:
32.时间片记录单元,用于当所述任务发生主动切换时,以毫秒为单位记录所述已运行时间片。
33.另一方面,本发明还提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述方法的步骤。
34.另一方面,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述方法的步骤。
35.本发明调度运行就绪任务队列中的任务,开启与该任务对应的定时器,并基于该任务的剩余时间片设定定时器的超时时间,当该任务发生主动切换时,基于该任务的已运行时间片更新剩余时间片,并挂起该任务,当定时器超时时,基于该任务的初始时间片重置剩余时间片,并挂起该任务,从而避免了因主动任务切换导致的执行时间被漏算的现象,实现了任务调度的精确控制,提升了系统整体性能。
附图说明
36.图1a是背景技术提供的传统基于固定时间片的任务调度方法的实现流程图;
37.图1b是背景技术提供的传统基于固定时间片的任务调度时间分布图;
38.图2a是本发明实施例一提供的基于固定时间片的任务调度方法的实现流程图;
39.图2b是本发明实施例一提供的基于固定时间片的任务调度时间分布图;
40.图3是本发明实施例二提供的基于固定时间片的任务调度方法的流程示例图;
41.图4是本发明实施例三提供的基于固定时间片的任务调度装置的结构示意图;以及
42.图5是本发明实施例四提供的电子设备的结构示意图。
具体实施方式
43.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
44.以下结合具体实施例对本发明的具体实现进行详细描述:
45.实施例一:
46.图2a示出了本发明实施例一提供的基于固定时间片的任务调度方法的实现流程,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
47.在步骤s201中,调度运行就绪任务队列中的任务。
48.本发明实施例适用于电子设备,该电子设备可以为手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、个人数字助理(personal digital assistant,pda)等终端设备,本技术实施例对移动通信设备的具体类型不作任何限制。
49.在本发明实施例中,从就绪任务队列中选择一个任务调度运行。在调度运行该任务之前,需要创建该任务,优选地,当创建该任务时,以毫秒为单位设定初始时间片及剩余时间片,而不再以tick为单位,以便于后续通过定时器来管理任务时间片。其中,在创建任务时设定的该任务的剩余时间片与初始时间片相同。
50.在步骤s202中,开启与该任务对应的定时器,并基于该任务的剩余时间片设定定时器的超时时间。
51.在本发明实施例中,该定时器具体可以为高精度定时器,每个任务对应一个定时
器,在该任务每一次被调度执行时,开启与该任务对应的定时器,并将该任务的剩余时间片设定为定时器的超时时间,即该定时器在该超时时间耗尽时触发。
52.考虑到该任务若非首次被调度运行,其剩余时间片可能非常小,该任务会执行很短时间后又被调度出去,而该调度行为本身也有开销,短时间内的频繁调度会导致系统性能下降。在开启与该任务对应的定时器之前,优选地,判断该任务的剩余时间片是否小于预设的时间片阈值,若小于,则基于时间片阈值更改剩余时间片,以保证该任务每次均可执行足够的时间,从而避免了短时间内的频繁调度影响系统性能,进一步提升了系统性能。其中,该时间片阈值即为该任务一次调度连续运行的最小时间段。
53.在步骤s203中,当该任务发生主动切换时,基于该任务的已运行时间片更新剩余时间片,并挂起该任务。
54.在本发明实施例中,在基于该任务的已运行时间片更新剩余时间片之前,优选地,当该任务发生主动切换时,以毫秒为单位记录已运行时间片,以便于准确地更新该任务的剩余时间片。当该任务发生主动切换时,定时器尚未触发,即该任务的剩余时间片尚未耗尽,此时,基于该任务的已运行时间片更新剩余时间片,该任务会被挂起,添加到就绪任务队列中,等待下次被调度运行。其中,更新后的剩余时间片作为下一次调度运行该任务的依据。
55.图2b为本实施例提供的基于固定时间片的任务调度时间分布图,该任务的初始时间片为t,当该任务首次被调度运行时,该任务的定时器的超时时间设为t,当任务在t1处首次发生主动切换时,记录该任务的已运行时间片time_past,并计算该任务的剩余时间片time_remain,time_remain=t-time_past。当该任务再一次被调度执行时,该任务的定时器的超时时间设为time_remain,以精确控制任务执行时间。
56.在步骤s204中,当定时器超时时,基于该任务的初始时间片重置剩余时间片,并挂起该任务。
57.在本发明实施例中,当定时器触发时,该任务的剩余时间片已耗尽,其回调函数会被执行,回调函数中将剩余时间片恢复为上述的初始时间片,该任务会被挂起,添加到就绪任务队列中,等待下一次被调度运行。
58.当需要再次调度运行该任务时,重复步骤s201-204,直至该任务执行完毕。
59.在本发明实施例中,调度运行就绪任务队列中的任务,开启与该任务对应的定时器,并基于该任务的剩余时间片设定定时器的超时时间,当该任务发生主动切换时,基于该任务的已运行时间片更新剩余时间片,并挂起该任务,当定时器超时时,基于该任务的初始时间片重置剩余时间片,并挂起该任务,从而避免了因主动任务切换导致的执行时间被漏算的现象,实现了任务调度的精确控制,提升了系统整体性能。
60.实施例二:
61.图3示出了本发明实施例二提供的基于固定时间片的任务调度方法的实现流程示例,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
62.在步骤s301中,在创建任务时,设定该任务的初始时间片t和剩余时间片t,t=t;
63.在步骤s302中,调度运行该任务;
64.在步骤s303中,判断剩余时间片t是否小于时间片阈值h,若小于,则执行步骤s304,否则跳转至步骤s305;
65.在步骤s304中,设定剩余时间片t=h;
66.在步骤s305中,开启定时器,并设定定时器的超时时间为t;
67.在步骤s306中,判断定时器是否超时,若定时器未超时,则重复该步骤,若定时器超时,则执行步骤s307;
68.在步骤s307中,重置剩余时间片t=t,挂起该任务,当需要再次调度运行该任务时,再次执行步骤s302;
69.在步骤s308中,当该任务发生主动切换时,更新t,挂起该任务,当需要再次调度运行该任务时,重复步骤s302-s308。
70.在本发明实时中,任务时间片以毫秒为单位,不再以tick为单位,每个任务对应一个定时器,在任务开始调度运行时,开启定时器,超时间隔设为任务的剩余时间片,当任务在运行的某一时间点发生主动调度时,精确计算任务的剩余时间片,并作为下次调度的依据,从而避免了因主动任务切换导致的任务执行时间被漏算的现象,实现了任务调度的精确控制,提升了系统整体性能;另外,通过设定一次调度运行的最小时长(时间片阈值),进一步提升了系统性能。
71.实施例三:
72.图4示出了本发明实施例三提供的基于固定时间片的任务调度装置的结构,为了便于说明,仅示出了与本发明实施例相关的部分,其中包括:
73.任务调度单元41,用于调度运行就绪任务队列中的任务;
74.定时器开启单元42,用于开启与该任务对应的定时器,并基于该任务的剩余时间片设定定时器的超时时间;
75.时间片更新单元43,用于当该任务发生主动切换时,基于该任务的已运行时间片更新剩余时间片,并挂起该任务;以及
76.时间片重置单元44,用于当定时器超时时,基于该任务的初始时间片重置剩余时间片,并挂起该任务。
77.优选地,该装置还包括:
78.时间片设定单元,用于当创建该任务时,以毫秒为单位设定初始时间片及剩余时间片。
79.优选地,该装置还包括:
80.判断单元,用于判断剩余时间片是否小于预设的时间片阈值;
81.时间片更改单元,用于若剩余时间片小于时间片阈值,则基于时间片阈值更改剩余时间片。
82.优选地,时间片重置单元还包括:
83.时间片记录单元,用于当该任务发生主动切换时,以毫秒为单位记录已运行时间片。
84.在本发明实施例中,基于固定时间片的任务调度装置的各单元可由相应的硬件或软件单元实现,各单元可以为独立的软、硬件单元,也可以集成为一个软、硬件单元,在此不用以限制本发明。基于固定时间片的任务调度装置的各单元的具体实施方式可参考前述方法实施例的描述,在此不再赘述。
85.实施例四:
86.图5示出了本发明实施例四提供的电子设备的结构,为了便于说明,仅示出了与本发明实施例相关的部分。
87.本发明实施例的电子设备5包括处理器50、存储器51以及存储在存储器51中并可在处理器50上运行的计算机程序52。该处理器50执行计算机程序52时实现上述各方法实施例中的步骤,例如图2a所示的步骤s201至s204。或者,处理器50执行计算机程序52时实现上述各装置实施例中各单元的功能,例如图4所示单元41至44的功能。
88.在本发明实施例中,调度运行就绪任务队列中的任务,开启与该任务对应的定时器,并基于该任务的剩余时间片设定定时器的超时时间,当该任务发生主动切换时,基于该任务的已运行时间片更新剩余时间片,并挂起该任务,当定时器超时时,基于该任务的初始时间片重置剩余时间片,并挂起该任务,从而避免了因主动任务切换导致的执行时间被漏算的现象,实现了任务调度的精确控制,提升了系统整体性能。
89.实施例五:
90.在本发明实施例中,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法实施例中的步骤,,例如图2a所示的步骤s201至s204。或者,该计算机程序被处理器执行时实现上述各装置实施例中各单元的功能,例如图4所示单元41至44的功能。
91.在本发明实施例中,调度运行就绪任务队列中的任务,开启与该任务对应的定时器,并基于该任务的剩余时间片设定定时器的超时时间,当该任务发生主动切换时,基于该任务的已运行时间片更新剩余时间片,并挂起该任务,当定时器超时时,基于该任务的初始时间片重置剩余时间片,并挂起该任务,从而避免了因主动任务切换导致的执行时间被漏算的现象,实现了任务调度的精确控制,提升了系统整体性能。
92.本发明实施例的计算机可读存储介质可以包括能够携带计算机程序代码的任何实体或装置、记录介质,例如,rom/ram、磁盘、光盘、闪存等存储器。
93.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献