CN104834564A - 任务调度的方法和装置 - Google Patents

任务调度的方法和装置 Download PDF

Info

Publication number
CN104834564A
CN104834564A CN201510259832.XA CN201510259832A CN104834564A CN 104834564 A CN104834564 A CN 104834564A CN 201510259832 A CN201510259832 A CN 201510259832A CN 104834564 A CN104834564 A CN 104834564A
Authority
CN
China
Prior art keywords
task
time
scheduling
cycle
dispatch deal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510259832.XA
Other languages
English (en)
Other versions
CN104834564B (zh
Inventor
魏君颖
樊富春
杜菁菁
胡星
闫庆宏
杨洋
杨美燕
杨尊好
韩婷婷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baidu Online Network Technology Beijing Co Ltd
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201510259832.XA priority Critical patent/CN104834564B/zh
Publication of CN104834564A publication Critical patent/CN104834564A/zh
Application granted granted Critical
Publication of CN104834564B publication Critical patent/CN104834564B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了一种任务调度的方法和装置。其中,任务调度的方法的一具体实施方式包括:根据调度周期周期性地触发如下调度处理操作;所述调度处理操作包括:获取当前调度处理操作的调度时间;获取每个待调度任务的时间参数,其中,所述时间参数包括待调度任务的最近启用时间和任务执行周期,所述任务执行周期为待调度任务相邻两次执行开始时间之间的间隔;输出所述任务执行周期、所述最近启用时间与所述调度时间满足预设条件的待调度任务至任务池;分配并执行任务池中的任务。该实施方式提高了任务调度的效率。

Description

任务调度的方法和装置
技术领域
本申请涉及计算机技术领域,具体涉及任务调度处理技术领域,尤其涉及一种任务调度的方法和装置。
背景技术
任务调度是操作系统的重要组成部分。对于周期性任务的统一调度,现有技术中主要通过判断当前时间与任务上次执行开始时间之间的时间差大于任务执行间隔来确定调度任务,在一些实现中,为了避免任务在执行时被再次调度,还需要在任务被调度时对任务上锁,在任务当前次执行完成时对任务解锁。这种任务调度的方法,在每个任务被调度一次的过程中增加加锁、解锁两次数据写操作,当需要调度的任务数量较大时,存在调度效率较低的问题。
发明内容
本申请的目的在于提出一种改进的任务调度的方法和装置,来解决以上背景技术部分提到的技术问题。
第一方面,本申请提供了一种任务调度的方法,所述方法包括:根据调度周期周期性地触发如下调度处理操作;所述调度处理操作包括:获取当前调度处理操作的调度时间;获取每个待调度任务的时间参数,其中,所述时间参数包括待调度任务的最近启用时间和任务执行周期,所述任务执行周期为待调度任务相邻两次执行开始时间之间的间隔;输出所述任务执行周期、所述最近启用时间与所述调度时间满足预设条件的待调度任务至任务池;分配并执行任务池中的任务。
在一些实施例中,所述预设条件包括:所述调度时间与所述最近启用时间的差除以所述任务执行周期得到的余数小于所述调度周期。
在一些实施例中,所述预设条件包括:待调度任务的拟调度时间迟于上一次调度处理操作的调度时间且早于或等于当前调度处理操作的调度时间,其中,所述拟调度时间由所述最近启用时间加上整数个所述任务执行周期获得。
在一些实施例中,所述调度周期满足以下条件:所有待调度任务的任务执行周期是所述调度周期的整数倍。
在一些实施例中,所述方法还包括:判断任务池中的任务是否全部被分配或执行;若是,则结束任务调度。
在一些实施例中,当所述调度处理操作是首次调度处理操作时,当前调度处理操作的调度时间为当前时间;当所述调度处理操作不是首次调度处理操作时,当前调度处理操作的调度时间为前一个调度时间加上一个调度周期的时间。
第二方面,本申请提供了一种任务调度的装置,所述装置包括:调度触发模块,配置用于根据调度周期周期性地触发调度处理模块执行调度处理操作;所述调度处理模块,配置用于执行调度处理操作,包括:调度时间获取单元,配置用于获取所述调度触发模块触发当前调度处理操作的调度时间;任务参数获取单元,配置用于获取每个待调度任务的时间参数,其中,所述时间参数包括待调度任务的最近启用时间和任务执行周期,所述任务执行周期为待调度任务相邻两次执行开始时间之间的间隔;判断及输出单元,配置用于输出所述任务执行周期、所述最近启用时间与所述调度时间满足预设条件的待调度任务至任务池;任务分配及执行模块,配置用于分配及执行任务池中的任务。
在一些实施例中,所述预设条件包括:所述调度时间与所述最近启用时间的差除以所述任务执行周期得到的余数小于所述调度周期。
在一些实施例中,所述预设条件包括:待调度任务的拟调度时间迟于上一次调度处理操作的调度时间且早于或等于当前调度处理操作的调度时间,其中,所述拟调度时间由所述最近启用时间加上整数个所述任务执行周期获得。
在一些实施例中,所述调度周期满足以下条件:所有待调度任务的任务执行周期是所述调度周期的整数倍。
在一些实施例中,所述装置还包括:任务检测模块,配置用于判断任务池中的任务是否全部被分配或执行;并且,在任务池中的任务全部被分配或执行时,结束任务调度。
在一些实施例中,当所述调度处理操作是首次调度处理操作时,当前调度处理操作的调度时间为当前时间;当所述调度处理操作不是首次调度处理操作时,当前调度处理操作的调度时间为前一个调度时间加上一个调度周期的时间。
本申请提供的任务调度的方法和装置,通过调度周期周期性地触发调度处理操作,在调度操作里,通过任务执行周期、最近启用时间与调度时间满足的预设条件输出待调度的任务,而后对输出的任务进行分配并执行,在不增加数据读写负担的基础上实现了任务的统一调度,从而提高了任务调度的效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是根据本申请的任务调度的方法的一个实施例的流程图;
图2是图1中的实施例的调度处理操作的流程图;
图3是根据本申请的调度处理操作中基于调度时间的时间参数与调度时间的关系示意图;
图4是根据本申请的调度处理操作中基于任务执行间隔的调度效果示意图;
图5是根据本申请的任务调度的方法的一个实施例的流程图;
图6是根据本申请的任务调度装置的一个实施例的结构示意图;
图7是根据本申请的一个实施例的任务调度服务器系统的示意图;
图8示出了可以应用本申请实施例的示例性系统架构。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
请参考图1,其示出了任务调度的方法的一个实施例的流程100。本实施例主要以该方法应用于包含有处理器的电子设备中来举例说明,该电子设备可以包括智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio LayerIV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。本申请的任务调度的方法,包括以下步骤:
步骤101,根据调度周期周期性地触发调度处理操作。
在本实施例中,电子设备(例如任务调度应用运行于其上的便携计算机)可以根据调度周期计算调度时间,并在每个调度时间到达的时刻周期性地触发对任务的调度处理操作(例如任务调度应用的一个调度处理进程)的执行。
其中,调度周期是触发调度处理操作的时间间隔,其可以是预设的一个时间段,例如可以是5秒。调度时间可以是电子设备每次触发调度操作的时间。每次调度处理操作被触发的对应时间可以作为当前调度处理操作的调度时间。
在本实施例的一些实现方式中,电子设备可以在本步骤中完成调度时间的计算。当首次触发调度处理操作时,电子设备可以将当前时间作为所触发的调度处理操作的调度时间;当不是首次触发调度处理操作时,电子设备可以将前一个调度时间加上一个调度周期的时间作为所触发的调度处理操作的调度时间。
以下将以windows系统C++语言开发为例,给出根据调度周期周期性地触发调度处理操作的一个实现。
在C++语言中,用scheduleTime表示调度时间,scheduleInterval表示调度周期,则电子设备根据调度周期计算调度时间可以通过以下语句实现:
scheduleTime=now();
scheduleInterval=5;
scheduleTime=scheduleTime+scheduleInterval;
其中,当所述调度处理操作是首次调度处理操作时,scheduleTime=now();其中,now()为系统获取当前时间的函数;该语句表示,电子设备首次触发调度处理操作时,将当前时间作为首次触发调度处理操作时间,即首次触发的调度处理操作的调度时间;
设置调度周期为5秒,scheduleInterval=5;
当电子设备不是首次触发调度处理操作时,scheduleTime=scheduleTime+scheduleInterval;该语句表示,电子设备可以在触发一次调度处理操作的执行后,将该次调度处理操作的调度时间加上一个调度周期(scheduleInterval)即5秒的时间作为下一个调度时间,并在时间达到下一个调度时间时,触发下一次调度处理操作。
触发调度处理操作是对任务进行调度处理的操作,其在C++语言中可以通过一个调度处理进程来实现。比如触发一个调度处理进程可以是:
new ScheduleProcess(scheduleTime,scheduleInterval).start();
其中,new ScheduleProcess是触发一个新的调度处理进程的函数,该函数与调度周期和调度时间有关。之后,电子设备可以通过sleep函数(休眠函数)休眠一个调度周期(scheduleInterval),如:sleep(scheduleInterval)。
然后,电子设备可以根据计算的调度时间触发下一个调度处理进程。电子设备在满足每个调度时间时触发一个对应的新的调度处理进程可以实现为:
While(True){
new ScheduleProcess(scheduleTime,scheduleInterval).start();
sleep(scheduleInterval);
scheduleTime=scheduleTime+scheduleInterval;
}
这样,通过一个死循环,每隔一个调度周期的时间,电子设备得到一个新的调度时间,每对应一个调度时间,电子设备触发一个新的调度处理进程。
步骤102,通过执行调度处理操作输出符合预设条件的待调度任务至任务池。
在本实施例中,电子设备通过执行调度处理操作可以输出符合预设条件的待调度任务至任务池作为待执行任务以供分配及执行。其中,本实施例中的调度处理操作的流程如图2所示。图2中示出的调度处理操作的流程102包括:
步骤1021,获取当前调度处理操作的调度时间。
在本实施例的调度处理操作中,电子设备首先可以获取步骤101中得到的触发当前调度处理操作的调度时间,也可以在本步骤中计算当前调度处理操作的调度时间。其中,当调度处理操作是首次调度处理操作时,电子设备可以获取调度处理操作被触发的当前时间作为当前调度处理操作的调度时间,当调度处理操作不是首次调度处理操作时,电子设备可以将前一个调度时间加上一个调度周期的时间为当前调度处理操作的调度时间。当电子设备在本步骤中计算当前调度处理操作的调度时间时,可以使用如步骤101中描述的计算方法。
步骤1022,获取每个待调度任务的时间参数。
在本实施例的调度处理操作中,电子设备接着可以获取每个待调度任务的时间参数。其中,上述时间参数是对应待调度任务的、与时间相关联的参数,在本实施例中可以包括待调度任务的最近启用时间和任务执行周期。
其中,待调度任务可以包括系统中所有已经启用的任务,也可以仅包括所有已经启用的任务中没有被调度过或某次调度后需要下次调度的任务,本申请对此不做限定。可选地,任务的启用时间可以是任务被创建后首次启用的时间,也可以是任务启用后被用户暂停进行修改后重新启用的时间。在本实施例中,待调度任务的最近启用时间,可以表示任务最后一次被启用的时间。实践中,这些任务可以是周期性的任务,也可以是非周期性的任务。当任务是非周期性任务时,经过一次调度执行即结束。当任务是周期性任务时,每隔一个任务执行周期需要被调度执行一次。这里的任务执行周期可以是任务相邻两次执行开始时间之间的间隔。
举例而言,用户在电子终端(例如计算机、智能手机等等)上启用一个资源监控的任务,以每分钟检测一次电子终端的内存和/或磁盘的占用情况,则该任务属于周期性任务,其任务执行周期为1分钟。当用户启用该任务后,该任务的最近启用时间可以是用户启用该任务的时间。如果在上述资源监控任务运行过程中,用户将任务暂停,并修改为每两分钟检测一次电子终端的内存和/或磁盘的占用情况之后再次启用该任务,则任务的执行周期修改为2分钟,最近启用时间可以为上述再次启用该任务的时间。任务被启用后就可以作为待调度任务。
在本实施例的一些实现方式中,任务执行周期与调度周期满足以下关系:所有待调度任务的任务执行周期是调度周期的整数倍。例如,在上述资源监控任务中,每个资源监控任务的任务执行周期都是以分钟为最小单位,则调度周期可以是任意能被分钟整除的时间段,例如可以是1秒、2秒、3秒、4秒、5秒、6秒、10秒、12秒、15秒、20秒、30秒、60秒等。
值得说明的是,执行调度处理操作的电子设备可以是用户完成任务启用操作的上述电子终端,此时,电子设备可以执行其上的任务调度操作以调度在其上启用的任务。执行调度处理操作的电子设备也可以是用于调度并执行所启用的任务的远程服务器(例如,对上述电子终端上的包括资源监控任务的应用提供支持的后台服务器),此时,该电子设备可以通过有线连接方式或者无线连接方式从上述电子终端获取这些任务及时间参数。上述无线连接方式包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
步骤1023,输出时间参数与调度时间满足预设条件的待调度任务至任务池。
在本实施例中,电子设备可以将步骤1022中获取的任务的时间参数与步骤1021获取的调度时间之间满足预设条件的待调度任务作为待执行任务输出至任务池。其中,上述任务池可以是对待执行任务进行缓存的组件,任务调度开始时,任务池被创建,任务调度结束时,任务池被清除。在这里,预设条件可以是预设的用于判断任务是否为待执行任务的条件。电子设备通过预设条件可以确保任务在一个调度周期内被实时地调度。
在一些实施例中,预设条件可以是基于待调度任务的最近启用时间和调度周期的判断条件,例如预设条件可以包括:调度时间与最近启用时间的差除以任务执行周期得到的余数小于调度周期。该预设条件用公式表示如下:
(scheduleTime–modifyTime)%runInterval<scheduleInterval;
其中,scheduleTime为当前调度操作的调度时间,modifyTime为任务的最近启用时间,runInterval为任务执行周期,scheduleInterval为调度周期。以下结合图3的时间参数与调度时间的关系示意300,对该预设条件进行详细说明。
作为一个示例,如图3所示,假设调度周期310为10秒,在以秒为单位的时间轴上,有多个调度时间(如第10秒、第20秒、第30秒等等),在每个调度时间上,电子设备触发一次调度处理操作。在时刻321(例如是第35秒),一个任务A被一个用户A启用,成为待调度任务,则时刻321为该待调度任务A的最近启用时间。在图3的示例中,该待调度任务的任务执行间隔320为1分钟(60秒)。则在时刻321该任务A被启用后,到达第一个调度时间,即时刻311时,一个调度处理操作被触发。此时,当前调度处理操作的调度时间对应的时刻311与任务A的最近启用时间321的差除以任务执行周期320得到的余数为(40秒-35秒)%60秒=5秒,该余数5秒小于调度周期310即10秒,因此,该任务A在时刻311触发的调度处理操作里被作为待执行任务输出至任务池。同理,在之后的第50秒、第60秒、第70秒、第80秒、第90秒等为调度时间触发的调度处理操作中,调度时间对应的时刻与任务A的最近启用时间321的差除以任务执行周期320得到的余数分别为15秒、25秒、35秒、45秒、55秒等,均大于调度周期310即10秒,该任务A不会被输出至任务池。直到时刻312(即第100秒)为调度时间触发的调度处理操作中,(100秒-35秒)%60秒=5秒,小于10秒,该任务A再次被作为待执行任务输出至任务池。同样,在任务A没有被用户A停止或修改的情况下,在时刻313、时刻314等,该任务A都会被再次调度。
相似地,对于在任务A启用之前的时刻331(在第20秒与第30秒之间)被用户B启用的任务B,假设任务B的任务执行间隔330为2分钟,则任务B在第30秒、第150秒、第270秒(未示出)等等为调度时间触发的调度处理操作中被作为待执行任务输出至任务池。
对于大量的任务,如任务A、任务B、任务C、任务D等等,电子设备可以在每个任务被启用后,每隔一个该任务的任务执行间隔将其作为待执行任务输出至任务池。
本领域技术人员可以理解的是,即使任务在与某个调度时间相同的时刻被启用,此时预设条件中的余数为0秒,小于调度周期10秒,而由于调度处理操作被触发后执行的滞后性,该任务仍然会在该调度时间触发的调度处理操作中被输出。而在下一个调度时间,由于预设条件中的余数为10秒,不小于调度周期10秒,从而任务不会再次被输出。如图4所示,该预设条件可以实现:任务在其最近启用时间(如时刻421)后的每一个任务执行周期(如任务执行周期420)中的一个调度周期(如一个调度周期410)的时间内被调度,而且在其同一个任务执行周期内不会被重复调度。
在另一些实施例中,预设条件也可以是基于当前的调度时间和任务的拟调度时间的判断条件。其中,上述拟调度时间由任务的最近启用时间加上整数个任务执行周期获得。预设条件可以包括:待调度任务的拟调度时间迟于上一次调度处理操作的调度时间且早于或等于当前调度处理操作的调度时间。以下仍结合图3的时间参数与调度时间的关系示意300,对该预设条件进行详细说明。
作为另一个示例,如图3所示,调度周期310为10秒,在以秒为单位的时间轴上,有多个调度时间(如第10秒、第20秒、第30秒等等)。在时刻321(例如是第35秒),一个任务A被用户A启用,成为待调度任务。时刻321为该待调度任务A的最近启用时间。该待调度任务A的任务执行间隔320例如为1分钟(60秒)。该调度任务A的拟调度时间可以包括时刻321(如第35秒)、时刻322(第35秒+1×60秒=95秒)、时刻323(第35秒+2×60秒=155秒)、时刻324(第35秒+3×60秒=215秒)等等。待调度任务A被启用后,在时刻311为调度时间的调度处理操作中,电子设备判断该调度任务A的拟调度时间即时刻321(第35秒)落入迟于上一次调度处理操作的调度时间(第30秒)且早于或等于时刻311(第40秒)的时间区间内。此时,该调度任务A被作为待执行任务输出值任务池。同理,在第50秒、第60秒、第70秒、第80秒、第90秒等为调度时间的调度处理操作中,电子设备判断该调度任务A的拟调度时间即时刻322(第95秒)不会落入迟于上一次调度处理操作的调度时间且早于或等于当前调度处理操作的调度时间的时间区间内,该待调度任务A不会被作为待执行任务输出至任务池。直到在时刻312(第100秒)为调度时间的调度处理操作中,该待调度任务A的拟调度时间(时刻322)落入迟于第90秒且早于或等于第100秒的时间区间内,该待调度任务A被作为待执行任务输出至任务池。同样,在任务A没有被用户A停止或修改的情况下,在时刻313、时刻314等为调度时间的调度处理操作中,该待调度任务A被作为待执行任务输出至任务池。
相似地,对于在任务A启动之前的时刻331(在第20秒与第30秒之间)被用户B启动的任务B,假设任务B的任务执行间隔330为2分钟,则任务B在第30秒、第150秒、第270秒(未示出)等等为调度时间触发的调度处理操作中被作为待执行任务输出至任务池。
对于大量的任务,如任务A、任务B、任务C、任务D等等,电子设备可以在每个任务被启用后,每隔一个该任务的任务执行间隔将其作为待执行任务输出至任务池。
本领域技术人员同样可以理解的是,即使任务在与某个调度时间相同的时刻被启用,由于调度处理操作被触发后执行的滞后性,电子设备会判断该任务的拟调度时间(启用时间)等于当前调度处理操作的调度时间。该任务会在该调度时间触发的调度处理操作中被输出。而在下一个调度时间,由于该任务的拟调度时间(启用时间)不迟于前一次调度处理操作的调度时间,从而任务不会再次被输出。如图4所示,该预设条件可以实现:任务在其最近启用时间(如时刻421)后的每一个任务执行周期(如任务执行周期420)中的一个调度周期(如一个调度周期410)的时间内被调度,而且在其同一个任务执行周期内不会被重复调度。
可以理解,对于非周期性任务,假设任务执行周期为无穷大,上述的预设条件同样适用。
步骤103,分配并执行任务池中的任务。
在本实施例中,电子设备可以将任务池中的任务分配给其上的执行进程来执行,也可以将任务池中的任务分配给与其连接的执行设备来执行。
当电子设备是用于调度并执行所启用的任务的远程服务器时,该远程服务器可以是一台服务器,也可以是通过无线连接方式或者有线连接方式相连的多台服务器。其中,上述无线连接方式包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UWB(ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。可选地,上述多台服务器可以包括一台调度服务器和至少一台执行服务器。其中,调度服务器可以根据调度周期周期性地触发并执行调度处理操作,输出符合上述预设条件的待调度任务至任务池,之后将任务池中的任务分配给执行服务器。执行服务器在不执行任务时进行等待,当任务池中有任务时,领取任务并执行。可选地,在C++程序中,电子设备可以通过以下的语句实现任务的领取及执行:
Task=GetTask();//无任务时等待,有任务时获得任务、返回
RunTask(task);//执行任务
其中,GetTask()是用于从任务池中获取任务的函数,可以在无任务时等待,有任务时获取任务,RunTask(task)是对任务task的执行函数。电子设备可以在C++程序中通过一个死循环实现对任务的获取和执行。
对于本实施例而言,应用的场景可以为,远程服务器上的任务调度平台根据调度周期周期性地触发调度处理操作;远程服务器在接收到不同用户在不同电子终端(例如计算机、智能手机等等)启用的不同任务,分别获取这些任务的时间参数,并在调度处理操作中按照对应任务执行周期周期性地将符合预设条件的任务输出至任务池后进行分配并执行。对于启用任务的电子终端而言,其可以周期性地获取任务执行的结果,或者在任务执行的结果满足一定条件是接收预警信息。例如电子终端启用的任务是上述的资源监控任务,远程服务器可以在每次执行完该任务时将电子终端的内存和/或磁盘的占用情况反馈至电子终端,也可以在电子终端的内存和/或磁盘的占用超过预设的百分比时向电子终端发送提醒信息。本申请的上述实施例有助于提高任务调度的效率。
应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。例如,在图1的流程100中,步骤102和步骤103也可以同时并列执行。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
进一步参考图5,其示出了本申请的任务调度的方法的一个实施例的流程500。该任务调度的方法500,包括以下步骤:
步骤501,根据调度周期周期性地触发调度处理操作。
在本实施例中,电子设备(例如任务调度应用运行于其上的便携计算机)可以根据调度周期计算调度时间,并在每个调度时间到达的时刻周期性地触发任务的调度处理操作(例如任务调度应用的一个调度处理进程)。在一些实施例中,当首次触发调度处理操作时,电子设备可以将当前时间作为所触发的调度处理操作的调度时间;当不是首次触发调度处理操作时,电子设备可以将前一个调度时间加上一个调度周期的时间作为所触发的调度处理操作的调度时间。
步骤502,通过执行调度处理操作输出符合预设条件的待调度任务至任务池。
在本实施例中,电子设备通过执行调度处理操作可以输出符合预设条件的待调度任务至任务池作为待执行任务以供分配及执行。其中,本实施例中的调度处理操作包括:获取当前调度处理操作的调度时间;获取每个待调度任务的时间参数;输出时间参数与调度时间满足预设条件的待调度任务至任务池。
其中,当前调度处理操作的调度时间可以是直接获取的由步骤501中根据调度周期计算得到的调度时间,也可以是在本步骤中计算得到的调度时间。每个待调度任务的时间参数可以包括待调度任务的最近启用时间和任务执行周期。可选地,任务执行周期与调度周期满足以下关系:所有待调度任务的任务执行周期是调度周期的整数倍。
在本实施例中,预设条件可以是预设的用于判断任务是否为待执行任务的条件。电子设备可以通过判断任务执行周期、最近启用时间与调度时间是否满足预设条件,确保任务在一个调度周期内被实时地调度。在一些实现中,预设条件可以包括:调度时间与最近启用时间的差除以任务执行周期得到的余数小于调度周期。在另一些实现中,预设条件可以包括:待调度任务的拟调度时间迟于上一次调度处理操作的调度时间且早于或等于当前调度处理操作的调度时间。其中,上述拟调度时间由任务的最近启用时间加上整数个任务执行周期获得。以上预设条件可以达到的效果是:任务在其启用后的每一个任务执行周期中的一个调度周期的时间内被调度,而且在其同一个任务执行周期内不会被重复调度。
步骤503,分配并执行任务池中的任务。
在本实施例中,电子设备可以将任务池中的任务分配给其上的执行进程来执行,也可以将任务池中的任务分配给与其连接的执行设备来执行。
步骤504,判断任务池中的任务是否全部被分配或执行。
在本实施例中,电子设备可以对任务池中的任务进行判断,以确定任务池中的任务全部被分配或执行。其中,电子设备可以通过任务池中任务的数量进行判断,当任务池中的任务数量为0时,判断任务池中的任务全部被分配或执行,否则判断任务池中的任务没有全部被分配或执行。
步骤505,结束任务调度。
在本实施例中,如果步骤504中判断任务池中的任务全部被分配或执行,则表示暂时没有待执行的任务,电子设备可以结束任务调度以暂停调度处理操作的执行。
另一方面,如果步骤504中判断任务池中的任务没有全部被分配或执行,则继续执行步骤501,周期性地触发调度处理操作的执行。
在本实施例中,上述实现流程中的步骤501、步骤502、步骤503分别与图1所示实施例中的步骤101、步骤102、步骤103基本相同,在此不再赘述。
进一步参考图6,作为对上述各图所示方法的实现,本申请提供了一种任务调度装置的一个实施例,该装置实施例与图1所示的方法实施例相对应,该装置具体可以应用于电子设备中。
如图6所示,本实施例所述的任务调度装置600包括:调度触发模块601,配置用于根据调度周期周期性地触发调度处理模块602执行调度处理操作;调度处理模块602配置用于执行调度处理操作,包括:调度时间获取单元6021,配置用于获取调度触发模块601触发当前调度处理操作的调度时间;任务参数获取单元6022,配置用于获取每个待调度任务的时间参数;判断及输出单元6023,配置用于输出任务执行周期、最近启用时间与调度时间满足预设条件的待调度任务至任务池;任务分配及执行模块603,配置用于分配并执行任务池中的任务。
在本实施例中,调度触发模块601可以根据调度周期计算对调度处理操作进行触发的时间,即调度时间,并在每个调度时间到达的时刻周期性地触发调度处理模块602执行调度处理操作。在一些实施例中,调度触发模块601首次触发调度处理模块602执行调度处理操作时,可以将当前时间作为所触发的调度处理操作的调度时间;之后调度触发模块601触发调度处理模块602执行调度处理操作时,可以将前一个调度时间加上一个调度周期的时间作为所触发的调度处理操作的调度时间。
在本实施例中,调度处理模块602可以通过执行调度处理操作输出符合预设条件的待调度任务至任务池。调度处理模块602可以首先通过调度时间获取单元6021获取调度触发模块601触发当前调度处理操作的调度时间,或者通过调度时间获取单元6021计算当前调度处理操作的调度时间;然后通过任务参数获取单元6022获取每个待调度任务的时间参数;之后通过判断及输出单元6023输出任务执行周期、最近启用时间与调度时间满足预设条件的待调度任务至任务池。其中,上述时间参数包括待调度任务的最近启用时间和任务执行周期,任务执行周期为待调度任务相邻两次执行开始时间之间的间隔。判断及输出单元6023可以通过判断任务执行周期、最近启用时间与调度时间是否满足预设条件,确保任务在一个调度周期内被实时地调度。在一些实现中,预设条件可以包括:调度时间与最近启用时间的差除以任务执行周期得到的余数小于调度周期。在另一些实现中,预设条件可以包括:待调度任务的拟调度时间迟于上一次调度处理操作的调度时间且早于或等于当前调度处理操作的调度时间。其中,上述拟调度时间由任务的最近启用时间加上整数个任务执行周期获得。
在本实施例中,任务分配及执行模块603可以将调度处理模块602输出至任务池中的任务分配给任务调度装置600上的执行进程来执行,也可以将任务池中的任务分配给与任务调度装置600连接的执行设备来执行。
在本实施例的一些实现方式中,任务调度装置600还可以包括任务检测模块(未示出),配置用于判断任务池中的任务是否全部被分配或执行;并且,在任务池中的任务全部被分配或执行时,结束任务调度。
在本实施例的一些实现方式中,调度周期满足以下条件:所有待调度任务的任务执行周期是调度周期的整数倍。
本领域技术人员可以理解,上述任务调度装置600还包括一些其他公知结构,例如处理器、存储器等,为了不必要地模糊本公开的实施例,这些公知的结构在图6中未示出。
值得说明的是,虽然任务调度装置600作为一个整体描述如上,但并非对其进行的限定。本申请的任务调度装置600中的模块还可以根据需要分别设在不同的电子设备上。例如,调度触发模块601和调度处理模块602可以设于同一电子设备上,任务分配及执行模块603可以设于另一电子设备上。本申请的任务调度装置600中的模块还可以包括不同的单元,同一模块的不同单元根据需要分别设在不同的电子设备上。例如,任务分配及执行模块603可以包括任务分配单元和任务执行单元,其中,任务分配单元可以设在与调度触发模块601和调度处理模块602相同的电子设备中,而任务执行单元设在另一电子设备中。此时,任务调度装置600可以包括在图7示出的任务调度服务器系统700中。其中,任务调度服务器701可以包括任务分配及执行模块603的任务分配单元,而执行服务器702可以包括任务分配及执行模块603的任务执行单元。
如图7所示,任务调度服务器系统700包括任务调度服务器701和至少一台任务执行服务器702。其中,调度服务器701和任务执行服务器702之间通过网络703连接。网络703可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
任务调度服务器701配置用于根据调度周期周期性地触发调度处理模块执行调度处理操作;上述调度处理操作包括:获取调度触发模块触发当前调度处理操作的调度时间;获取每个待调度任务的时间参数,其中,该时间参数包括待调度任务的最近启用时间和任务执行周期,任务执行周期为待调度任务相邻两次执行开始时间之间的间隔;输出上述任务执行周期、上述最近启用时间与上述调度时间满足预设条件的待调度任务至任务池;将任务池中的任务分配给执行服务器702;执行服务器702配置用于从任务池中获取任务并执行。
图8示出了可以应用本申请实施例的示例性系统架构800。如图8所示,系统架构800可以包括电子终端801、802、网络803和服务器804。网络803用以在电子终端801、802和服务器804之间提供通信链路的介质。网络803可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户810、820可以在电子终端801、802中启用不同的任务。电子终端801、802通过网络803与服务器804交互,以接收或发送消息等。电子终端801、802上可以安装有各种通讯客户端应用,例如即时通信工具、邮箱客户端、社交平台软件等。
电子终端801、802可以是各种电子设备,包括但不限于个人电脑、智能手机、智能手表、平板电脑、个人数字助理等等。
服务器804可以是提供各种服务的服务器,其中的服务包括为用户810、820在电子终端801、802启用的任务提供任务调度的服务。服务器804可以对接收到的数据进行存储、分析等处理,并将处理结果反馈给电子终端。服务器804可以是一台服务器,也可以是图7所示的任务调度服务器系统。
需要说明的是,本申请实施例所提供的任务调度的方法可以由电子终端801、802执行,也可以由服务器804执行。任务调度的装置可以设置于电子终端801、802中,也可以设置于服务器804中。
应该理解,图8中的电子终端、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块或单元也可以设置在处理器中,例如,可以描述为:一种处理器包括调度触发模块,调度处理模块和任务分配模块。其中,这些模块或单元的名称在某种情况下并不构成对该模块或单元本身的限定,例如,调度触发模块还可以被描述为“配置用于根据调度周期周期性地触发调度处理模块执行调度处理操作的模块”。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。所述计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本申请的任务调度方法。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (12)

1.一种任务调度的方法,其特征在于,所述方法包括:
根据调度周期周期性地触发如下调度处理操作;
所述调度处理操作包括:
获取当前调度处理操作的调度时间;
获取每个待调度任务的时间参数,其中,所述时间参数包括待调度任务的最近启用时间和任务执行周期,所述任务执行周期为待调度任务相邻两次执行开始时间之间的间隔;
输出所述任务执行周期、所述最近启用时间与所述调度时间满足预设条件的待调度任务至任务池;
分配并执行任务池中的任务。
2.根据权利要求1所述的方法,其特征在于,所述预设条件包括:所述调度时间与所述最近启用时间的差除以所述任务执行周期得到的余数小于所述调度周期。
3.根据权利要求1所述的方法,其特征在于,所述预设条件包括:待调度任务的拟调度时间迟于上一次调度处理操作的调度时间且早于或等于当前调度处理操作的调度时间,其中,所述拟调度时间由所述最近启用时间加上整数个所述任务执行周期获得。
4.根据权利要求1所述的方法,其特征在于,所述调度周期满足以下条件:
所有待调度任务的任务执行周期是所述调度周期的整数倍。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
判断任务池中的任务是否全部被分配或执行;
若是,则结束任务调度。
6.根据权利要求1-5中任一所述的方法,其特征在于:
当所述调度处理操作是首次调度处理操作时,当前调度处理操作的调度时间为当前时间;
当所述调度处理操作不是首次调度处理操作时,当前调度处理操作的调度时间为前一个调度时间加上一个调度周期的时间。
7.一种任务调度的装置,其特征在于,所述装置包括:
调度触发模块,配置用于根据调度周期周期性地触发调度处理模块执行调度处理操作;
所述调度处理模块,配置用于执行调度处理操作,包括:
调度时间获取单元,配置用于获取所述调度触发模块触发当前调度处理操作的调度时间;
任务参数获取单元,配置用于获取每个待调度任务的时间参数,其中,所述时间参数包括待调度任务的最近启用时间和任务执行周期,所述任务执行周期为待调度任务相邻两次执行开始时间之间的间隔;
判断及输出单元,配置用于输出所述任务执行周期、所述最近启用时间与所述调度时间满足预设条件的待调度任务至任务池;
任务分配及执行模块,配置用于分配并执行任务池中的任务。
8.根据权利要求7所述的装置,其特征在于,所述预设条件包括:所述调度时间与所述最近启用时间的差除以所述任务执行周期得到的余数小于所述调度周期。
9.根据权利要求7所述的装置,其特征在于,所述预设条件包括:待调度任务的拟调度时间迟于上一次调度处理操作的调度时间且早于或等于当前调度处理操作的调度时间,其中,所述拟调度时间由所述最近启用时间加上整数个所述任务执行周期获得。
10.根据权利要求7所述的装置,其特征在于,所述调度周期满足以下条件:
所有待调度任务的任务执行周期是所述调度周期的整数倍。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
任务检测模块,配置用于判断任务池中的任务是否全部被分配或执行;并且
在任务池中的任务全部被分配或执行时,结束任务调度。
12.根据权利要求7-11中任一所述的装置,其特征在于:
当所述调度处理操作是首次调度处理操作时,当前调度处理操作的调度时间为当前时间;
当所述调度处理操作不是首次调度处理操作时,当前调度处理操作的调度时间为前一个调度时间加上一个调度周期的时间。
CN201510259832.XA 2015-05-20 2015-05-20 任务调度的方法和装置 Active CN104834564B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510259832.XA CN104834564B (zh) 2015-05-20 2015-05-20 任务调度的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510259832.XA CN104834564B (zh) 2015-05-20 2015-05-20 任务调度的方法和装置

Publications (2)

Publication Number Publication Date
CN104834564A true CN104834564A (zh) 2015-08-12
CN104834564B CN104834564B (zh) 2018-12-14

Family

ID=53812472

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510259832.XA Active CN104834564B (zh) 2015-05-20 2015-05-20 任务调度的方法和装置

Country Status (1)

Country Link
CN (1) CN104834564B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105320561A (zh) * 2015-11-09 2016-02-10 深圳市万普拉斯科技有限公司 任务管理方法和系统
CN105468450A (zh) * 2015-12-29 2016-04-06 华为技术有限公司 任务调度方法及系统
CN106775977A (zh) * 2016-12-09 2017-05-31 北京小米移动软件有限公司 任务调度方法、装置及系统
CN106815072A (zh) * 2017-01-16 2017-06-09 北京市天元网络技术股份有限公司 一种任务调度方法
CN107291946A (zh) * 2017-07-13 2017-10-24 深圳乐信软件技术有限公司 大数据etl任务调度方法及装置
CN108337725A (zh) * 2018-03-28 2018-07-27 佛山市丈量科技有限公司 终端设备的模块调度方法、装置以及系统
CN110532081A (zh) * 2019-09-02 2019-12-03 政采云有限公司 一种定时任务处理方法及装置
CN110609784A (zh) * 2018-06-15 2019-12-24 马上消费金融股份有限公司 任务调度方法及系统、存储介质及电子设备
CN110941479A (zh) * 2018-09-25 2020-03-31 广州虎牙信息科技有限公司 任务数据执行方法、服务器以及计算机存储介质
CN113064704A (zh) * 2021-03-18 2021-07-02 北京沃东天骏信息技术有限公司 任务处理方法、装置、电子设备和计算机可读介质
CN116048752A (zh) * 2022-12-29 2023-05-02 上海太阳生物技术有限公司 一种凝血分析仪的检测任务调度方法及凝血分析仪
CN116578380A (zh) * 2023-04-13 2023-08-11 浪潮智慧科技有限公司 一种数据采集工具的集群任务调度方法、设备及介质
CN117421106A (zh) * 2023-12-11 2024-01-19 湖南行必达网联科技有限公司 一种嵌入式软件的任务调度方法、系统及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030115239A1 (en) * 2000-09-22 2003-06-19 Atsushi Togawa Arithmetic processing system and arithmetic processing control method, task managemnt system and task management method, and storage medium
CN103207807A (zh) * 2012-01-12 2013-07-17 阿里巴巴集团控股有限公司 任务调度方法和装置
CN103885881A (zh) * 2014-04-03 2014-06-25 北京航空航天大学 一种基于VxWorks系统多任务机制的高实时并发测试方法
CN104536835A (zh) * 2014-12-12 2015-04-22 北京控制工程研究所 一种热备份实时控制系统中自适应任务调度方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030115239A1 (en) * 2000-09-22 2003-06-19 Atsushi Togawa Arithmetic processing system and arithmetic processing control method, task managemnt system and task management method, and storage medium
CN103207807A (zh) * 2012-01-12 2013-07-17 阿里巴巴集团控股有限公司 任务调度方法和装置
CN103885881A (zh) * 2014-04-03 2014-06-25 北京航空航天大学 一种基于VxWorks系统多任务机制的高实时并发测试方法
CN104536835A (zh) * 2014-12-12 2015-04-22 北京控制工程研究所 一种热备份实时控制系统中自适应任务调度方法

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10802877B2 (en) 2015-11-09 2020-10-13 Oneplus Technology (Shenzhen) Co., Ltd. Task management methods and system, and computer storage medium
CN105320561A (zh) * 2015-11-09 2016-02-10 深圳市万普拉斯科技有限公司 任务管理方法和系统
CN105320561B (zh) * 2015-11-09 2019-03-08 深圳市万普拉斯科技有限公司 任务管理方法和系统
CN105468450B (zh) * 2015-12-29 2019-02-05 华为技术有限公司 任务调度方法及系统
CN105468450A (zh) * 2015-12-29 2016-04-06 华为技术有限公司 任务调度方法及系统
CN106775977B (zh) * 2016-12-09 2020-06-02 北京小米移动软件有限公司 任务调度方法、装置及系统
CN106775977A (zh) * 2016-12-09 2017-05-31 北京小米移动软件有限公司 任务调度方法、装置及系统
CN106815072A (zh) * 2017-01-16 2017-06-09 北京市天元网络技术股份有限公司 一种任务调度方法
CN107291946B (zh) * 2017-07-13 2020-03-17 深圳乐信软件技术有限公司 大数据etl任务调度方法及装置
CN107291946A (zh) * 2017-07-13 2017-10-24 深圳乐信软件技术有限公司 大数据etl任务调度方法及装置
CN108337725B (zh) * 2018-03-28 2021-03-09 佛山市丈量科技有限公司 终端设备的模块调度方法、装置以及系统
CN108337725A (zh) * 2018-03-28 2018-07-27 佛山市丈量科技有限公司 终端设备的模块调度方法、装置以及系统
CN110609784A (zh) * 2018-06-15 2019-12-24 马上消费金融股份有限公司 任务调度方法及系统、存储介质及电子设备
CN110609784B (zh) * 2018-06-15 2021-06-29 马上消费金融股份有限公司 任务调度方法及系统、存储介质及电子设备
CN110941479A (zh) * 2018-09-25 2020-03-31 广州虎牙信息科技有限公司 任务数据执行方法、服务器以及计算机存储介质
CN110941479B (zh) * 2018-09-25 2023-04-07 广州虎牙信息科技有限公司 任务数据执行方法、服务器以及计算机存储介质
CN110532081B (zh) * 2019-09-02 2022-03-22 政采云有限公司 一种定时任务处理方法及装置
CN110532081A (zh) * 2019-09-02 2019-12-03 政采云有限公司 一种定时任务处理方法及装置
CN113064704A (zh) * 2021-03-18 2021-07-02 北京沃东天骏信息技术有限公司 任务处理方法、装置、电子设备和计算机可读介质
CN116048752A (zh) * 2022-12-29 2023-05-02 上海太阳生物技术有限公司 一种凝血分析仪的检测任务调度方法及凝血分析仪
CN116048752B (zh) * 2022-12-29 2024-06-04 上海太阳生物技术有限公司 一种凝血分析仪的检测任务调度方法及凝血分析仪
CN116578380A (zh) * 2023-04-13 2023-08-11 浪潮智慧科技有限公司 一种数据采集工具的集群任务调度方法、设备及介质
CN116578380B (zh) * 2023-04-13 2024-01-23 浪潮智慧科技有限公司 一种数据采集工具的集群任务调度方法、设备及介质
CN117421106A (zh) * 2023-12-11 2024-01-19 湖南行必达网联科技有限公司 一种嵌入式软件的任务调度方法、系统及设备
CN117421106B (zh) * 2023-12-11 2024-03-08 湖南行必达网联科技有限公司 一种嵌入式软件的任务调度方法、系统及设备

Also Published As

Publication number Publication date
CN104834564B (zh) 2018-12-14

Similar Documents

Publication Publication Date Title
CN104834564A (zh) 任务调度的方法和装置
Zhu et al. Scheduling stochastic multi-stage jobs to elastic hybrid cloud resources
CN112165691B (zh) 内容分发网络调度方法、装置、服务器和介质
CN112948079B (zh) 任务调度方法、装置、设备和计算机存储介质
CN104679595B (zh) 一种面向应用的IaaS层动态资源分配方法
Liu et al. A fast algorithm for energy-saving offloading with reliability and latency requirements in multi-access edge computing
Lin et al. A reinforcement learning-based power management framework for green computing data centers
CN105786600A (zh) 任务调度方法和装置
CN106775932B (zh) 一种云计算系统中随机事件触发的实时工作流调度方法
CN103235835A (zh) 用于数据库集群的查询实现方法和装置
CN110389816A (zh) 用于资源调度的方法、装置以及计算机程序产品
CN107797863B (zh) 一种云计算平台中细粒度资源匹配方法
Yang et al. Online learning-based server provisioning for electricity cost reduction in data center
CN107317836A (zh) 一种混合云环境下时间可感知的请求调度方法
Mansub Bassiri et al. Configuration reusing in on-line task scheduling for reconfigurable computing systems
Thai et al. Executing bag of distributed tasks on the cloud: Investigating the trade-offs between performance and cost
Dahal et al. Scheduling in multiprocessor system using genetic algorithms
Lampe et al. Let the clouds compute: cost-efficient workload distribution in infrastructure clouds
CN111176815B (zh) 一种操作系统的任务调度方法及装置
Al-Muhsen et al. Systems engineering approach to CPU scheduling for mobile multimedia systems
CN114462780A (zh) 一种机器人调度的方法、装置、计算机设备及存储介质
CN113641476A (zh) 一种任务调度方法、游戏引擎、设备及存储介质
CN114444700A (zh) 一种量子云计算平台作业调度与资源分配方法
Shiomoto et al. Policy gradient-based deep reinforcement learning for deadline-aware transfer over wide area networks
CN110058941A (zh) 任务调度管理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant