CN116932227A - 一种基于单线程的任务调度方法及装置 - Google Patents
一种基于单线程的任务调度方法及装置 Download PDFInfo
- Publication number
- CN116932227A CN116932227A CN202311183774.8A CN202311183774A CN116932227A CN 116932227 A CN116932227 A CN 116932227A CN 202311183774 A CN202311183774 A CN 202311183774A CN 116932227 A CN116932227 A CN 116932227A
- Authority
- CN
- China
- Prior art keywords
- task
- execution time
- priority
- execution
- time
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000004590 computer program Methods 0.000 claims description 23
- 238000003780 insertion Methods 0.000 claims description 22
- 230000037431 insertion Effects 0.000 claims description 22
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 23
- 238000010586 diagram Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 239000002699 waste material Substances 0.000 description 5
- 238000005259 measurement Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 3
- 238000012913 prioritisation Methods 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种基于单线程的任务调度方法及装置,可用于操作系统领域或其他领域,该方法包括:接收任务信息并创建任务,确定任务的第一优先级,以确定接收到的任务插入任务调度队列的位置;根据当前时间、该位置前各任务的预计执行时长及当前正在执行任务的剩余执行时长确定任务的开始执行时间,将任务放入任务调度队列;当任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU执行。该装置用于执行该方法。本申请通过单线程执行任务,且不会中断正在执行的任务,节省了同步和任务上下文切换的开销,确定各任务的开始执行时间,自动将任务发送到CPU执行,节约了轮询开销,降低了CPU利用率和对硬件的要求。
Description
技术领域
本申请涉及操作系统技术领域,尤其涉及一种基于单线程的任务调度方法及装置。
背景技术
多线程的发展史可以说是一场资源效率之战,促进其发展的根本动力在于磁盘IO、内存IO、CPU运算速度的不平衡所造成的资源浪费,其中CPU运行速度最快、其次是内存、最慢的当属磁盘IO。
计算机中的每一个工作通常都包含它们两个以上的角色参与,当他们一起协作的时候问题就产生了,CPU执行速度非常快,使得CPU的效率要远远高过磁盘IO,所以CPU的大部分时间都是在等待内存和磁盘的IO完成,但因为CPU资源是非常宝贵的,所以就必须想一种办法把CPU在等待磁盘IO的这段时间利用起来。
为了更合理的利用CPU资源,把内存划分为多个块,不同的应用程序使用着各自的内存空间互不干涉,这里每个单独的应用程序也就变为了一个单独的进程,CPU可以在多个进程之间切换执行,当一个进程需要进行磁盘IO的时候CPU就切换到另外一个进程去执行指令,这样就让CPU的资源更合理的运用起来,随着内存的加大,可划分的块也越来越多,这样能“同时”运行的进程也越来越多,CPU在不同的进程之间切换执行,任务多的时候它会一直处于工作状态。
CPU基于进程的调度极大的提高了CPU的利用率,但是为了精益求精,发现基于进程的调度还有进一步改善的空间。因为CPU是基于进程切换的,一个进程工作时就意味着其他进程无法获得CPU资源。CPU选择了基于粒度更小的线程来调度执行任务。一个进程可以创建很多个线程来执行任务,没有了进程的界限区分,CPU会在线程之间来回切换的工作,CPU的时间片分的更细,以至它在多个线程之间切换执行,我们并没有明显的感知,这样我们的多个进程也变得可以“同时”工作了,同时CPU等待IO的几率又更加小了。
在某一个时间片之内永远只会有一个线程执行指令,因为时间片的单位太小以至于我们感知不到,以为多个程序的线程是“同时”执行的,但是进入了多核CPU时代后,多核心控制器可以同一时间执行不通过线程上的任务,从而真正意义上实现了多任务同时执行。
多任务处理是操作系统或计算机程序同时运行多个任务的能力。传统的多线程程序为每个要并发执行的任务分配一个单独的线程,这会导致上下文切换、争用条件和同步开销等问题。
线程要占用硬件资源去执行任务,线程越多占用的硬件资源就越多,每个线程之间虽然隔离,但是每个线程都会竞争系统资源。
多线程是基于提高CPU利用率,充分利用CPU资源的目的产生的,对CPU的硬件性能要求较高。但当硬件资源较为落后且十分有限时,难以满足多线程对CPU处理速度的要求,软件使用再多的线程也无法超越当前硬件资源的屏障。此时,由于CPU基于时间片对线程进行调度需要CPU来回切换实现任务并行执行,这些操作进一步加重了CPU的负担,造成性能浪费,难以通过有限的硬件资源实现。
发明内容
针对现有技术中的问题,本申请提供一种基于单线程的任务调度方法及装置,能够至少部分地解决现有技术中的问题。
第一方面,本申请提供一种基于单线程的任务调度方法,包括:
接收任务信息并创建任务,根据所述任务信息确定所述任务的第一优先级;
当所述任务为一般优先级任务时,将任务调度队列的末尾作为所述任务插入的位置;
当接收到的任务为高优先级任务时,根据所述高优先级任务的最晚完成时间和预计执行时长确定所述高优先级任务的最晚开始执行时间;根据所述最晚开始执行时间、所述任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定所述高优先级任务插入所述任务调度队列的位置;
根据当前时间、任务调度队列中所述位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;
当所述任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。
其中,当接收到的任务为高优先级任务时,所述将任务放入任务调度队列之后,还包括:
更新所述任务调度队列中位于所述高优先级任务之后的任务的开始执行时间。
其中,所述根据当前时间、任务调度队列中所述位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间之前,还包括:
根据各类任务的历史执行时长确定对应类别任务的预计执行时长。
其中,当存在任务到达开始执行时间,所述CPU仍被占用时,还包括:
根据当前正在执行的任务所属类别的历史执行时长更新所述任务调度队列中各任务的开始执行时间。
其中,若发送到CPU进行执行的任务为循环执行的任务,当每次执行完成后,还包括:
根据任务在预设时间段内每次执行所用的时长及本次执行时长更新任务的预计执行时长。
其中,若存在同时到达的任务,则所述根据所述任务信息确定所述任务的第一优先级之后,还包括:
根据预设规则对一般优先级任务进行排序。
其中,所述根据预设规则对接收到的任务进行排序,包括:
根据预设属性确定各一般优先级任务的第二优先级;
根据所述第二优先级对各一般优先级任务进行排序。
第二方面,本申请提供一种基于单线程的任务调度装置,包括:
任务启动单元,用于接收任务信息并创建任务,根据所述任务信息确定所述任务的第一优先级;
第一插入位置确定单元,当所述任务为一般优先级任务时,用于将任务调度队列的末尾作为所述任务插入的位置;
第二插入位置确定单元,当接收到的任务为高优先级任务时,用于根据所述高优先级任务的最晚完成时间和预计执行时长确定所述高优先级任务的最晚开始执行时间;根据所述最晚开始执行时间、所述任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定所述高优先级任务插入所述任务调度队列的位置;
开始执行时间获取单元,用于根据当前时间、任务调度队列中所述位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;
任务发送单元,用于当所述任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。
第三方面,本申请提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例所述的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。
第五方面,本申请提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。
本申请提供的基于单线程的任务调度方法及装置,接收任务信息并创建任务,根据任务信息确定任务的第一优先级;当接收到的任务为高优先级任务时,确定高优先级任务的最晚开始执行时间,从而进一步根据任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定高优先级任务插入任务调度队列的位置;根据当前时间、任务调度队列中插入位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;当任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。通过始终保持只有一个线程用于执行任务,在任务执行完成前,不会中断正在执行的任务,节省了同步和任务上下文切换所需的开销。当待加入任务调度队列的任务为高优先级任务时,能够自动为高优先级任务选择合适的插入位置,保证高优先级任务按时完成的同时,尽可能减少需要更新开始执行时间的任务数量,从而进一步节省计算资源。且本申请不需CPU对任务队列进行轮询,通过计算各任务的开始执行时间,当到达开始执行时间时,自动将任务发送到CPU进行执行,进一步节约了轮询所需的开销,大大降低了CPU的利用率,从而降低了对CPU等硬件的要求。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一些实施例提供的基于单线程的任务调度方法的流程图;
图2是本申请一些实施例提供的根据预设规则对一般优先级任务进行排序的流程图;
图3是本申请一些实施例提供的基于单线程的任务调度装置的结构示意图;
图4是本申请一些实施例提供的基于单线程的任务调度装置的结构示意图;
图5是本申请一些实施例提供的基于单线程的任务调度装置的结构示意图;
图6是本申请一些实施例提供的基于单线程的任务调度装置的结构示意图;
图7是本申请一些实施例提供的基于单线程的任务调度装置的结构示意图;
图8是本申请一些实施例提供的基于单线程的任务调度装置的结构示意图;
图9是本申请一些实施例提供的基于单线程的任务调度装置的结构示意图;
图10是本发明一些实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
下面对一些关键词进行解释:
时间片:多任务系统往往需要同时执行多道作业。作业数往往大于机器的CPU数,然而一颗CPU同时只能执行一项任务。通过时间片轮转的方式,能够让用户感觉任务正在同时进行,时间片是CPU分配给各个任务(线程)的时间。
线程上下文:指某一时间点CPU寄存器和程序计数器中的内容,CPU通过时间片分配算法来循环执行任务(线程),因为时间片非常短,所以CPU通过不停地切换线程执行。
上下文切换:CPU切换前,需要把当前任务的状态保存下来,以便下次切换回这个任务时可以再次加载这个任务的状态,然后加载下一任务的状态并执行。任务的状态保存及再加载,这段过程就叫做上下文切换。
流水线:多条指令重叠执行的技术,就像汽车工厂的装配线一样。不同步骤并行完成不同指令的不同部分,这些步骤的每一步称为流水线级。将一条指令在流水线中下移一步所需的时间称为处理器周期。由于各级同时进行,所以处理器的周期长度由最缓慢的流水线级所需的时间决定。
在传统的多线程程序中,每个任务都分配一个单独的线程,这些线程同时运行。每个线程都有自己的堆栈和程序计数器,并且独立于其他线程执行。操作系统在一个或多个CPU 内核上调度这些线程,并且这些线程共享内存和其他资源。但是,这种方法有以下几个问题:
1.用户态切换到内核态
针对操作系统来说,线程是十分宝贵的资源, 在操作系统层面,当使用CPU执行线程时,需要将线程由用户态切换到内核态,这是一个费时费力的过程。
当发生用户态和内核态之间的切换时,运行栈的信息发生了变化,对应的CPU中的寄存器信息也要发生变化。但是当用户线程完成系统调用的时候,还需要切换回用户态,继续执行代码,所以需要将发生系统调用之前的用户栈的信息保存起来,也就是将寄存器中的数据保存到线程所属的某块内存区域。这就涉及到了数据的拷贝,同时用户态切换到内核态还需要安全验证等操作。所以用户态和内核态之间的切换是十分耗费资源的。
2.上下文切换
为了能够实现任务并发执行,CPU在线程执行一定的时间片后会切换另一个线程来执行,导致线程上下文切换频繁,影响程序性能。
此外,操作系统(Operating System,OS)要想进行任务上下文切换,必须占用CPU来执行切换逻辑。然而,用户程序处于运行状态时,CPU已经被用户程序所占用,也即OS在此刻并未处于运行状态,自然也无法执行上下文切换。针对该问题,有两种解决策略,协作式策略与抢占式策略。
协作式策略依赖用户程序主动让出CPU,比如执行系统调用(System Call)或者出现除零等异常。但这种策略并非是可靠的,如果用户程序没有主动让出CPU,甚至是恶意死循环,那么该程序将会一直占用CPU,只能通过重启系统实现恢复。
抢占式策略则依赖硬件的定时中断机制(Timer Interrupt),OS会在初始化时向硬件注册中断处理回调(Interrupt Handler)。当硬件产生中断时,硬件会将CPU的处理权交给OS,OS就可以在中断回调上实现CPU上下文的切换。
上下文切换开销包含两种:直接消耗和间接消耗。其中,直接消耗包括由于CPU寄存器需要保存和加载、系统调度器的代码需要执行、TLB实例需要重新加载及CPU 的pipeline需要刷掉所产生的消耗。间接消耗包括多核的cache之间共享数据所产生的消耗,间接消耗对于程序的影响取决于线程工作区操作数据的大小。
3.浪费内存
为了能够达到任务并发执行的目的,需要创建大量的线程来实现,操作系统默认为线程分配1MB大小堆栈,随着线程数的增多,内存消耗也随之加剧。
4.受同步开销影响
当线程相互等待完成其任务或释放共享资源时,会发生同步开销。例如,如果两个线程同时访问共享资源,则一个线程可能需要等待另一个线程释放资源,然后才能访问它。此等待时间会降低系统的性能。
5.容易出现竞争条件
当两个或多个线程同时访问同一共享资源时,会发生争用条件,结果取决于执行顺序。例如,如果两个线程同时递增同一变量,则变量的最终值取决于线程的执行顺序。可以使用同步机制(如锁、信号量和监视器)解决此问题,但这些机制会带来额外的开销,且会增加系统的复杂性。
因此,多线程对CPU的处理能力和内存的大小都有较高的要求,当硬件资源较为落后且有限时,难以满足多线程对CPU处理速度和内存等硬件的要求,软件使用再多的线程也无法超越当前硬件资源的屏障。相反,多线程的并行处理和上下文切换机制反而会进一步加重CPU的负担,因此,本申请提供了一种基于单线程的任务调度方法及装置,以实现降低CPU利用率,从而进一步降低对CPU等硬件的要求。
下面以服务器作为执行主体为例,对本发明实施例提供的基于单线程的任务调度方法的具体实现过程进行说明。
图1是本申请一些实施例提供的基于单线程的任务调度方法的流程图,如图1所示,本申请提供的基于单线程的任务调度方法,包括:
S101:接收任务信息并创建任务,根据任务信息确定任务的第一优先级;
S102:当任务为一般优先级任务时,将任务调度队列的末尾作为任务插入的位置;
S103:当接收到的任务为高优先级任务时,根据高优先级任务的最晚完成时间和预计执行时长确定高优先级任务的最晚开始执行时间;根据最晚开始执行时间、任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定高优先级任务插入任务调度队列的位置;
S104:根据当前时间、任务调度队列中待插入位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;
S105:当任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。
本申请提供的基于单线程的任务调度方法,接收任务信息并创建任务,根据任务信息确定任务的第一优先级;当接收到的任务为高优先级任务时,确定高优先级任务的最晚开始执行时间,从而进一步根据任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定高优先级任务插入任务调度队列的位置;根据当前时间、任务调度队列中待插入位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;当任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行,通过单线程执行任务,在执行任务执行完成前,不会中断正在执行的任务,节省了同步和任务上下文切换所需的开销。当待加入任务调度队列的任务为高优先级任务时,能够自动为高优先级任务选择合适的插入位置,保证高优先级任务按时完成的同时,尽可能减少需要更新开始执行时间的任务数量,从而进一步节省计算资源。且本申请不需CPU对任务队列进行轮询,通过计算各任务的开始执行时间,在任务集合里主动选择到开始执行时间的任务去执行,进一步节约了轮询所需的开销,大大降低了CPU的利用率,从而降低了对CPU等硬件的要求。
下面对每个步骤进行详细解释。
S101:接收任务信息并创建任务,根据任务信息确定任务的第一优先级;
具体地,服务器根据接收到的任务信息创建任务,创建任务的过程可以包括:创建任务控制块(TCB)、创建任务主体函数等。由于本申请中,任务在执行过程中不会被中断,因此并不需要保存现场信息,可以根据实际需要选择是否设置为任务设置任务堆栈。为了降低对硬件的要求,本申请只设置一个任务调度队列。
第一优先级包括高优先级和一般优先级,当任务为一般优先级任务时,进入S102;当接收到的任务为高优先级任务时,进入S103。第一优先级可以是人工预先设定的,例如,将存在完成时限或完成时限较短的任务设置为高优先级任务,将其他任务设置为一般优先级任务。也可以是根据任务的类别等信息自动生成的,本申请对此不做限制。
接收的任务例如可以是主机访问其他设备的任务,例如主机和机床进行通讯以控制机床的任务、主机和测量设备进行通讯以获得设备测量信息的任务等,但本申请并不以此为限。
S102:当任务为一般优先级任务时,将任务调度队列的末尾作为任务插入的位置;
具体地,对于一般优先级的任务,按照先进先出(FIFO)的顺序进行执行,以任务调度队列的末尾为一般优先级任务的插入位置。
S103:当接收到的任务为高优先级任务时,根据高优先级任务的最晚完成时间和预计执行时长确定高优先级任务的最晚开始执行时间;根据最晚开始执行时间、任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定高优先级任务插入任务调度队列的位置;
具体地,使用任务的最晚完成时间扣除任务的预计执行时长即为任务的最晚开始执行时间。可以将当前时间与正在执行的任务的预计剩余执行时长相加后,按照开始执行时间的先后顺序与任务调度队列中各任务的预计执行时长相加,选择相加结果小于最晚开始执行时间的最靠后的位置,作为高优先级任务的插入位置。也可以根据实际需要适当提前该高优先级任务插入的位置,从而保证该高优先级任务能够按时完成。其中,正在执行的任务的预计剩余执行时长等于该任务的预计执行时长减去已执行的时长。
S104:根据当前时间、任务调度队列中待插入位置之前各任务的预计执行时长及及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;
具体地,待放入任务调度队列的任务的开始执行时间即为当前时间与任务调度队列中待插入位置之前各任务的预计执行时间及正在执行的任务的剩余执行时间之和,可以根据各任务的类型确定各任务的预计执行时间。
在一实施例中,可以预先计算并记录调度队列中各任务的预计执行时间之和,当有新任务加入或任务调度队列中有任务被执行时,对预计执行时间之和进行更新,避免每当有新任务到达时,都重新获取各任务的预计执行时间并进行求和,进一步节省了计算资源。
在上述各实施例的基础上,进一步地,本申请提供的基于单线程的任务调度方法在S104之前,还包括:
根据各类任务的历史执行时长确定对应类别任务的预计执行时长。
具体地,可以根据各类任务在历史各次中的执行时长确定各任务的预计执行时长,确定预计执行时长时,应尽量保证该类别任务能在该预计执行时长内执行完毕,从而使各任务间的执行互不影响。
在一实施例中,可以根据各类任务的历史执行时长确定对应类别任务在各时长下的频率直方图,选取满足历史执行时长小于该时长的频率之和大于预设阈值的最小时长作为该类任务的预计执行时长。例如,可以选择满足有80%的历史执行时长小于该时长的最小时长作为该类任务的预计执行时长,但本申请并不以此为限。
在另一实施例中,可以根据任务的各类属性生成特征向量,以任务的历史执行时长为标签,对预设的机器学习模型进行训练,使用各类别任务对应的训练后的机器学习模型预测任务的预计执行时长。使用的机器学习模型例如可以是DNN、CNN、随机森林模型等,本申请对此不做限制。
本申请提供的基于单线程的任务调度方法,通过根据各类任务的历史执行时长合理确定对应类别任务的预计执行时长,能够尽可能地避免任务执行冲突(当任务调度队列中有任务到达开始执行时间时,CPU上正在执行的任务仍未执行完成)或任务等待时间过长(当CPU空闲,且任务调度队列中有任务等待执行时,需要等待较长时间才能有任务到达开始执行时间)。
在一实施例中,当接收到的任务为高优先级任务时,S104之后,还包括:
更新任务调度队列中位于接收到的高优先级任务之后的任务的开始执行时间。
具体地,将高优先级任务插入任务调度队列后,任务调度队列中位于该高优先级任务之前的任务的开始执行时间保持不变,并更新位于该高优先级任务之后的任务的开始执行时间,各任务更新后的开始执行时间即为原开始执行时间与该高优先级任务的预计执行时长之和。
应当将高优先级任务限定在一较小比例内,例如1%,以防止频繁对开始执行时间进行更新,增大硬件资源负担,导致资源浪费。
S105:当任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。
具体地,当存在任务到达开始执行时间时,服务器的调度中心主动调度到达开始执行时间的任务至CPU开始执行。各任务的开始执行时间可以记录在任务控制块(TCB)中并由TCB进行监测,也可以记录在任务调度中心并由调度中心进行监测和调度,本申请对此不做限制。
通过为各任务设置开始执行时间,并在到达开始执行时间时主动调度任务开始执行,不需要CPU对任务调度队列进行轮询,避免了当没有任务到达时,CPU不断轮询造成CPU利用率升高,导致资源浪费。
本申请提供的基于单线程的任务调度方法,接收任务信息并创建任务,根据任务信息确定任务的第一优先级;当接收到的任务为高优先级任务时,确定高优先级任务的最晚开始执行时间,从而进一步根据任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定高优先级任务插入任务调度队列的位置;根据当前时间和任务调度队列中插入位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;当任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。通过单线程执行任务,在调度中心始终保持一个线程对任务进行调度,在任务执行完成前,不会中断正在执行的任务,节省了同步和任务上下文切换所需的开销。当待加入任务调度队列的任务为高优先级任务时,能够自动为高优先级任务选择合适的插入位置,保证高优先级任务按时完成的同时,尽可能减少需要更新开始执行时间的任务数量,从而进一步节省计算资源。且本申请不需CPU对任务队列进行轮询,通过计算各任务的开始执行时间,在任务集合里主动选择到开始执行时间的任务去执行,进一步节约了轮询所需的开销,大大降低了CPU的利用率,从而降低了对CPU等硬件的要求。
在上述各实施例的基础上,进一步地,若当存在任务到达开始执行时间,CPU仍被占用时,本申请提供的基于单线程的任务调度方法,还包括:
根据当前正在执行的任务所属类别的历史执行时长更新任务调度队列中各任务的开始执行时间。
具体地,可以根据当前正在执行的任务所属类别的最长历史执行时长与预计执行时长的差值更新任务调度队列中各任务的开始执行时间,各任务更新后的开始执行时间即为原开始执行时间与该差值之和。各类别任务的最长历史执行时长与预计执行时长的差值可以预先计算得到。
在一实施例中,可以选择满足有99%的历史执行时长小于该时长的最小时长作为该类任务的最长历史执行时长,以防止极端数据对开始执行时间的更新造成影响。可以根据实际需要对计算最长历史执行时长的比例进行调整,例如为98%、99.9%等,本申请对此不作限制。
本申请提供的基于单线程的任务调度方法,在当存在任务到达开始执行时间,CPU仍被占用时,通过根据当前正在执行的任务所属类别的历史执行时长更新任务调度队列中各任务的开始执行时间,避免了各任务的执行发生冲突,实现了不需中断正在执行的任务的同时,也能保证各任务正常执行。
在上述各实施例的基础上,进一步地,若发送到CPU进行执行的任务为循环执行的任务,则本申请提供的基于单线程的任务调度方法,当每次执行完成后,还包括:
根据任务在预设时间段内每次执行所用的时长及本次执行时长更新任务的预计执行时长。
具体地,当任务循环执行一段时间后,可以根据如下公式计算该任务更新后的预计执行时长:
其中,tnew为更新后的预计执行时长;为该任务在预设时间段内的平均执行时长,例如为5分钟内该任务每次执行的平均时长;t为该任务的本次执行时长;a为一0到1之间的常数,例如为0.4。
在一实施例中,计算任务在预设时间段内的平均执行时长时,可以去除任务在该时间段内的最大执行时长和最小执行时长后进行计算,从而避免极端值对预计执行时长的更新造成影响。
在一实施例中,当服务器接收到的任务均为循环执行的任务,且不再接收新的任务时,也可以在任务执行完成后,通过计算并更新各任务执行的间隔周期实现对下次开始执行时间的计算。任务的间隔周期即为任务相邻的两次执行的开始执行时间的间隔,更新后的间隔周期可以通过如下公式计算得到:
其中,tb,new为更新后的间隔周期;为该任务在预设时间段内的平均间隔周期,例如为5分钟内该任务每次开始执行的时间与上次开始执行的时间间隔的平均时长;tb为该任务的本次的间隔周期,即本次开始执行时间与上次开始执行时间的间隔时长;b为一0到1之间的常数,例如为0.4。该任务下次的开始执行时间即为当前时间加上更新后的间隔周期。
同样地,计算任务在预设时间段内的平均间隔周期时,可以去除任务在该时间段内的最大间隔周期和最小间隔周期后进行计算,从而避免极端值对间隔周期的更新造成影响。
本申请提供的基于单线程的任务调度方法,通过随着任务的执行,不断对任务的预计执行时长或任务执行的间隔周期进行更新,能够避免任务执行环境波动等原因导致任务执行冲突(当任务调度队列中有任务到达开始执行时间时,CPU上正在执行的任务仍未执行完成)或任务等待时间过长(当CPU空闲,且任务调度队列中有任务等待执行时,需要等待较长时间才能有任务到达开始执行时间),能够根据实际情况合理设置各任务的预计开始执行时间。
在一实施例中,若存在同时到达的任务,则本申请提供的基于单线程的任务调度方法,在S101之后,还包括:
根据预设规则对一般优先级任务进行排序。
具体地,当该批次任务中存在高优先级任务时,先按照S103-S105将高优先级任务插入任务调度队列中。当不存在高优先级任务,或高优先级任务均已被插入任务调度队列后,根据预设规则对一般优先级任务进行排序,此时,各一般优先级任务的开始执行时间等于当前时间与本次到达任务中排在当前任务之前的任务的预计执行时间、进行排序前任务调度队列中各任务的预计执行时间及正在执行的任务的剩余执行时间之和。
在一实施例中,可以先计算该批任务中排在最前面的任务的预计开始执行时间,并将该排在最前面的任务加入任务调度队列中,重复计算排在最前的任务的开始执行时间和加入任务调度队列的操作,直至所有任务都被加入任务调度队列中,从而避免当存在同时到达的任务时,需要采用不同的计算规则计算各任务的开始执行时间,保持计算规则的简洁性。
在一实施例中,如图2所示,根据预设规则对一般优先级任务进行排序例如可以包括:
S201:根据预设属性确定各一般优先级任务任务的第二优先级;
具体地,可以根据任务内容和任务属性设置任务的第二优先级。
例如,当任务为服务器访问其他设备的任务时,可以根据被访问设备的重要性设置任务的优先级,将重要设备的访问任务设置为一般优先级中具有较高优先级的任务,将非重要设备的访问任务设置为一般优先级中具有较低优先级的任务。
但由于本申请解决的主要问题为硬件较为落后,性能较差的问题,因此,不应设置过多的优先级,避免加重硬件设备的负担。
S202:根据第二优先级对各一般优先级任务进行排序。
具体地,对于多个高优先级的任务,可以根据任务的完成时间要求将任务插入任务调度队列;对于多个一般优先级的任务,则根据第二优先级对同时到达的任务进行排序,并依序放入任务调度队列。但第二优先级仅用于对同一批次到达的多个一般优先级任务排序,不会对已经进入任务调度队列的任务进行重新排序,从而避免低优先级的任务永远不会执行。
此外,各任务的第二优先级也可以是预设的,而非是根据属性动态确定的。根据预设规则对接收到的任务进行排序还可以是随机排序、根据任务ID进行排序等,本申请并不以此为限。
本申请提供的基于单线程的任务调度方法,当存在同时到达的任务时,根据预设规则对接收到的任务进行排序,但对于已经进入任务调度队列的任务,不会重新进行排序,保证了即使在多个任务同时到达时,系统也能根据实际需要公平、有效地管理任务的执行顺序。
基于同一发明构思,本申请实施例还提供了一种基于单线程的任务调度装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于基于单线程的任务调度装置解决问题的原理与基于单线程的任务调度方法相似,因此基于单线程的任务调度装置的实施可以参见基于软件性能基准确定方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图3是本申请一些实施例提供的基于单线程的任务调度装置的结构示意图,如图3所示,本申请提供的基于单线程的任务调度装置包括:任务启动单元310、第一插入位置确定单元320、第二插入位置确定单元330、开始执行时间获取单元340及任务发送单元350。
其中,任务启动单元310用于接收任务信息并创建任务;
具体地,任务启动单元310根据接收到的任务信息创建任务,创建任务的过程可以包括:创建任务控制块(TCB)、创建任务主体函数等。由于本申请中,任务在执行过程中不会被中断,因此并不需要保存现场信息,可以根据实际需要选择是否设置为任务设置任务堆栈。为了降低对硬件的要求,本申请只设置一个任务调度队列。
第一优先级包括高优先级和一般优先级。第一优先级可以是人工预先设定的,例如,将存在完成时限或完成时限较短的任务设置为高优先级任务,将其他任务设置为一般优先级任务。也可以是根据任务的类别等信息自动生成的,本申请对此不做限制。
接收的任务例如可以是主机访问其他设备的任务,例如主机和机床进行通讯以控制机床的任务、主机和测量设备进行通讯以获得设备测量信息的任务等,但本申请并不以此为限。
当任务为一般优先级任务时,第一插入位置确定单元320用于将任务调度队列的末尾作为任务插入的位置;
具体地,对于一般优先级的任务,按照先进先出(FIFO)的顺序进行执行,第一插入位置确定单元320以任务调度队列的末尾为一般优先级任务的插入位置。
当接收到的任务为高优先级任务时,第二插入位置确定单元330根据高优先级任务的最晚完成时间和预计执行时长确定高优先级任务的最晚开始执行时间;根据最晚开始执行时间、任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定高优先级任务插入任务调度队列的位置;
具体地,第二插入位置确定单元330使用任务的最晚完成时间扣除任务的预计执行时长即为任务的最晚开始执行时间。可以将当前时间与正在执行的任务的预计剩余执行时长相加后,按照开始执行时间的先后顺序与任务调度队列中各任务的预计执行时长相加,选择相加结果小于最晚开始执行时间的最靠后的位置,作为高优先级任务的插入位置。也可以根据实际需要适当提前该高优先级任务插入的位置,从而保证该高优先级任务能够按时完成。其中,正在执行的任务的预计剩余执行时长等于该任务的预计执行时长减去已执行的时长。
开始执行时间获取单元340用于根据当前时间和任务调度队列中待插入位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;
具体地,待放入任务调度队列的任务的开始执行时间即为当前时间与任务调度队列中待插入位置之前各任务的预计执行时间及正在执行的任务的剩余执行时间之和,可以根据各任务的类型确定各任务的预计执行时间。
在一实施例中,可以预先计算并记录调度队列中各任务的预计执行时间之和,当有新任务加入或任务调度队列中有任务被执行时,对预计执行时间之和进行更新,避免每当有新任务到达时,都重新获取各任务的预计执行时间并进行求和,进一步节省了计算资源。
任务发送单元350用于当任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。
具体地,当存在任务到达开始执行时间时,任务发送单元430主动调度到达开始执行时间的任务至CPU开始执行。通过为各任务设置开始执行时间,并在到达开始执行时间时主动调度任务开始执行,不需要CPU对任务调度队列进行轮询,避免了当没有任务到达时,CPU不断轮询造成CPU利用率升高,导致资源浪费。
本申请提供的基于单线程的任务调度装置,通过任务启动单元310、第一插入位置确定单元320、第二插入位置确定单元330、开始执行时间获取单元340及任务发送单元350,始终保持只有一个线程进行任务执行,在任务执行完成前,不会中断正在执行的任务,节省了同步和任务上下文切换所需的开销。当待加入任务调度队列的任务为高优先级任务时,能够自动为高优先级任务选择合适的插入位置,保证高优先级任务按时完成的同时,尽可能减少需要更新开始执行时间的任务数量,从而进一步节省计算资源。且本申请不需CPU对任务队列进行轮询,通过计算各任务的开始执行时间,在任务集合里主动选择到开始执行时间的任务去执行,进一步节约了轮询所需的开销,大大降低了CPU的利用率,从而降低了对CPU等硬件的要求。
图4是本申请一些实施例提供的基于单线程的任务调度装置的结构示意图,如图4所示,在上述各实施例的基础上,进一步地,当接收到的任务为高优先级任务时,本申请提供的基于单线程的任务调度装置还包括:
第一开始执行时间更新单元410,用于更新任务调度队列中位于高优先级任务之后的任务的开始执行时间。
本申请提供的基于单线程的任务调度装置,通过第一开始执行时间更新单元510,能够在插入高优先级任务之后,对位于高优先级任务之后的任务的开始执行时间即使进行更新,防止各任务的执行时间发生冲突。
图5是本申请一些实施例提供的基于单线程的任务调度装置的结构示意图,如图5所示,在上述各实施例的基础上,进一步地,本申请提供的基于单线程的任务调度装置还包括:
预计执行时长确定单元510,用于根据各类任务的历史执行时长确定对应类别任务的预计执行时长。
本申请提供的基于单线程的任务调度装置,通过预计执行时长确定单元510,能够合理设置各类别任务的预计执行时长,尽可能地避免任务执行冲突(当任务调度队列中有任务到达开始执行时间时,CPU上正在执行的任务仍未执行完成)或任务等待时间过长(当CPU空闲,且任务调度队列中有任务等待执行时,需要等待较长时间才能有任务到达开始执行时间)。
图6是本申请一些实施例提供的基于单线程的任务调度装置的结构示意图,如图6所示,在上述各实施例的基础上,进一步地,本申请提供的基于单线程的任务调度装置还包括:
第二开始执行时间更新单元610,用于根据当前正在执行的任务所属类别的历史执行时长更新任务调度队列中各任务的开始执行时间。
本申请提供的基于单线程的任务调度装置,在当存在任务到达开始执行时间,CPU仍被占用时,通过第二开始执行时间更新单元610更新任务调度队列中各任务的开始执行时间,避免了各任务的执行发生冲突,实现了不需中断正在执行的任务的同时,也能保证各任务正常执行。
图7是本申请一些实施例提供的基于单线程的任务调度装置的结构示意图,如图7所示,在上述各实施例的基础上,进一步地,本申请提供的基于单线程的任务调度装置还包括:
预计执行时长更新单元710,用于根据任务在预设时间段内每次执行所用的时长及本次执行时长更新任务的预计执行时长。
本申请提供的基于单线程的任务调度装置,通过预计执行时长更新单元710,随着任务的执行,不断对任务的预计执行时长或任务执行的间隔周期进行更新,能够避免任务执行环境波动等原因导致任务执行冲突(当任务调度队列中有任务到达开始执行时间时,CPU上正在执行的任务仍未执行完成)或任务等待时间过长(当CPU空闲,且任务调度队列中有任务等待执行时,需要等待较长时间才能有任务到达开始执行时间),能够根据实际情况合理设置各任务的预计开始执行时间。
图8是本申请一些实施例提供的基于单线程的任务调度装置的结构示意图,如图8所示,在上述各实施例的基础上,进一步地,本申请提供的基于单线程的任务调度装置还包括:
任务排序单元810,用于根据预设规则对一般优先级任务进行排序。
在一实施例中,如图9所示,本申请提供的任务排序单元810包括:优先级确定模块811及优先级排序模块812。
其中,优先级确定模块911用于根据预设属性确定各一般优先级任务的第二优先级;
优先级排序模块912用于根据第二优先级对各一般优先级任务进行排序。
此外,各任务的优先级也可以是预设的,而非是根据属性动态确定的。根据预设规则对接收到的任务进行排序还可以是随机排序、根据任务ID进行排序等,本申请并不以此为限。
本申请提供的基于单线程的任务调度装置,通过任务排序单元810,当存在同时到达的任务时,根据预设规则对接收到的各一般优先级任务进行排序,但对于已经进入任务调度队列的任务,不会重新进行排序,保证了即使在多个任务同时到达时,系统也能根据实际需要公平、有效地管理任务的执行顺序。
需要说明的是,本发明实施例提供的代码同步的冲突处理方法及装置可用于操作系统领域,也可用于除操作系统领域之外的任意技术领域,本发明实施例对基于单线程的任务调度方法及装置的应用领域不做限定。
图10是本发明一些实施例提供的电子设备的实体结构示意图,如图10所示,该电子设备可以包括:处理器(processor)1001、通信接口(Communications Interface)1002、存储器(memory)1003和通信总线1004,其中,处理器1001,通信接口1002,存储器1003通过通信总线1004完成相互间的通信。处理器1001可以调用存储器1003中的逻辑指令,以执行如下方法:接收任务信息并创建任务,根据任务信息确定任务的第一优先级;当任务为一般优先级任务时,将任务调度队列的末尾作为任务插入的位置;当接收到的任务为高优先级任务时,根据高优先级任务的最晚完成时间和预计执行时长确定高优先级任务的最晚开始执行时间;根据最晚开始执行时间、任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定高优先级任务插入任务调度队列的位置;根据当前时间、任务调度队列中位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;当任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。
接收任务信息并创建任务;根据当前时间和任务调度队列中各任务的预计执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;当任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。
此外,上述的存储器1003中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:接收任务信息并创建任务,根据任务信息确定任务的第一优先级;当任务为一般优先级任务时,将任务调度队列的末尾作为任务插入的位置;当接收到的任务为高优先级任务时,根据高优先级任务的最晚完成时间和预计执行时长确定高优先级任务的最晚开始执行时间;根据最晚开始执行时间、任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定高优先级任务插入任务调度队列的位置;根据当前时间、任务调度队列中位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;当任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。
本实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述各方法实施例所提供的方法,例如包括:接收任务信息并创建任务,根据任务信息确定任务的第一优先级;当任务为一般优先级任务时,将任务调度队列的末尾作为任务插入的位置;当接收到的任务为高优先级任务时,根据高优先级任务的最晚完成时间和预计执行时长确定高优先级任务的最晚开始执行时间;根据最晚开始执行时间、任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定高优先级任务插入任务调度队列的位置;根据当前时间、任务调度队列中位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;当任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (17)
1.一种基于单线程的任务调度方法,其特征在于,包括:
接收任务信息并创建任务,根据所述任务信息确定所述任务的第一优先级;
当所述任务为一般优先级任务时,将任务调度队列的末尾作为所述任务插入的位置;
当接收到的任务为高优先级任务时,根据所述高优先级任务的最晚完成时间和预计执行时长确定所述高优先级任务的最晚开始执行时间;根据所述最晚开始执行时间、所述任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定所述高优先级任务插入所述任务调度队列的位置;
根据当前时间、任务调度队列中所述位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;
当所述任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。
2.根据权利要求1所述的基于单线程的任务调度方法,其特征在于,当接收到的任务为高优先级任务时,所述将任务放入任务调度队列之后,还包括:
更新所述任务调度队列中位于所述高优先级任务之后的任务的开始执行时间。
3.根据权利要求1所述的基于单线程的任务调度方法,其特征在于,所述根据当前时间、任务调度队列中所述位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间之前,还包括:
根据各类任务的历史执行时长确定对应类别任务的预计执行时长。
4.根据权利要求1所述的基于单线程的任务调度方法,其特征在于,当存在任务到达开始执行时间,所述CPU仍被占用时,还包括:
根据当前正在执行的任务所属类别的历史执行时长更新所述任务调度队列中各任务的开始执行时间。
5.根据权利要求1所述的基于单线程的任务调度方法,其特征在于,若发送到CPU进行执行的任务为循环执行的任务,当每次执行完成后,还包括:
根据任务在预设时间段内每次执行所用的时长及本次执行时长更新任务的预计执行时长。
6.根据权利要求1所述的基于单线程的任务调度方法,其特征在于,若存在同时到达的任务,则所述根据所述任务信息确定所述任务的第一优先级之后,还包括:
根据预设规则对一般优先级任务进行排序。
7.根据权利要求6所述的基于单线程的任务调度方法,其特征在于,所述根据预设规则对一般优先级任务进行排序,包括:
根据预设属性确定各一般优先级任务的第二优先级;
根据所述第二优先级对各一般优先级任务进行排序。
8.一种基于单线程的任务调度装置,其特征在于,包括:
任务启动单元,用于接收任务信息并创建任务,根据所述任务信息确定所述任务的第一优先级;
第一插入位置确定单元,当所述任务为一般优先级任务时,用于将任务调度队列的末尾作为所述任务插入的位置;
第二插入位置确定单元,当接收到的任务为高优先级任务时,用于根据所述高优先级任务的最晚完成时间和预计执行时长确定所述高优先级任务的最晚开始执行时间;根据所述最晚开始执行时间、所述任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定所述高优先级任务插入所述任务调度队列的位置;
开始执行时间获取单元,用于根据当前时间、任务调度队列中所述位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;
任务发送单元,用于当所述任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。
9.根据权利要求8所述的基于单线程的任务调度装置,其特征在于,当接收到的任务为高优先级任务时,还包括:
第一开始执行时间更新单元,用于更新所述任务调度队列中位于所述高优先级任务之后的任务的开始执行时间。
10.根据权利要求8所述的基于单线程的任务调度装置,其特征在于,还包括:
预计执行时长确定单元,用于根据各类任务的历史执行时长确定对应类别任务的预计执行时长。
11.根据权利要求8所述的基于单线程的任务调度装置,其特征在于,还包括:
第二开始执行时间更新单元,用于根据当前正在执行的任务所属类别的历史执行时长更新所述任务调度队列中各任务的开始执行时间。
12.根据权利要求8所述的基于单线程的任务调度装置,其特征在于,还包括:
预计执行时长更新单元,用于根据任务在预设时间段内每次执行所用的时长及本次执行时长更新任务的预计执行时长。
13.根据权利要求8所述的基于单线程的任务调度装置,其特征在于,还包括:
任务排序单元,用于根据预设规则对一般优先级任务进行排序。
14.根据权利要求13所述的基于单线程的任务调度装置,其特征在于,所述任务排序单元包括:
优先级确定模块,用于根据预设属性确定各一般优先级任务的第二优先级;
优先级排序模块,用于根据所述第二优先级对各一般优先级任务进行排序。
15.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的方法。
17.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311183774.8A CN116932227B (zh) | 2023-09-14 | 2023-09-14 | 一种基于单线程的任务调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311183774.8A CN116932227B (zh) | 2023-09-14 | 2023-09-14 | 一种基于单线程的任务调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116932227A true CN116932227A (zh) | 2023-10-24 |
CN116932227B CN116932227B (zh) | 2023-12-22 |
Family
ID=88384670
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311183774.8A Active CN116932227B (zh) | 2023-09-14 | 2023-09-14 | 一种基于单线程的任务调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116932227B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130117756A1 (en) * | 2011-11-08 | 2013-05-09 | Electronics And Telecommunications Research Institute | Task scheduling method for real time operating system |
CN103902366A (zh) * | 2012-12-27 | 2014-07-02 | 中国航空工业集团公司第六三一研究所 | 一种不破坏客户操作系统自有调度策略的虚拟化调度方法 |
CN104915253A (zh) * | 2014-03-12 | 2015-09-16 | 中国移动通信集团河北有限公司 | 一种作业调度的方法及作业处理器 |
CN106155781A (zh) * | 2015-04-08 | 2016-11-23 | 中国科学院软件研究所 | 一种多智能体平台中的实时任务调度方法 |
CN108628672A (zh) * | 2018-05-04 | 2018-10-09 | 武汉轻工大学 | 任务调度方法、系统、终端设备及存储介质 |
CN112416546A (zh) * | 2020-11-10 | 2021-02-26 | 光华临港工程应用技术研发(上海)有限公司 | 多任务调度方法、电子装置和计算机存储介质 |
CN113157424A (zh) * | 2021-05-11 | 2021-07-23 | 中国建设银行股份有限公司 | 任务调度方法及装置 |
WO2022067531A1 (zh) * | 2020-09-29 | 2022-04-07 | 深圳大学 | 一种计算资源感知的任务调度方法 |
CN115391011A (zh) * | 2022-08-25 | 2022-11-25 | 中国电信股份有限公司 | 定时任务的调度方法、装置、设备、介质及程序 |
WO2022257435A1 (zh) * | 2021-06-11 | 2022-12-15 | 深圳前海微众银行股份有限公司 | 一种批量任务处理方法、装置、计算设备及存储介质 |
CN116010064A (zh) * | 2023-01-16 | 2023-04-25 | 北京航空航天大学 | Dag作业调度和集群管理的方法、系统及装置 |
-
2023
- 2023-09-14 CN CN202311183774.8A patent/CN116932227B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130117756A1 (en) * | 2011-11-08 | 2013-05-09 | Electronics And Telecommunications Research Institute | Task scheduling method for real time operating system |
CN103902366A (zh) * | 2012-12-27 | 2014-07-02 | 中国航空工业集团公司第六三一研究所 | 一种不破坏客户操作系统自有调度策略的虚拟化调度方法 |
CN104915253A (zh) * | 2014-03-12 | 2015-09-16 | 中国移动通信集团河北有限公司 | 一种作业调度的方法及作业处理器 |
CN106155781A (zh) * | 2015-04-08 | 2016-11-23 | 中国科学院软件研究所 | 一种多智能体平台中的实时任务调度方法 |
CN108628672A (zh) * | 2018-05-04 | 2018-10-09 | 武汉轻工大学 | 任务调度方法、系统、终端设备及存储介质 |
WO2022067531A1 (zh) * | 2020-09-29 | 2022-04-07 | 深圳大学 | 一种计算资源感知的任务调度方法 |
CN112416546A (zh) * | 2020-11-10 | 2021-02-26 | 光华临港工程应用技术研发(上海)有限公司 | 多任务调度方法、电子装置和计算机存储介质 |
CN113157424A (zh) * | 2021-05-11 | 2021-07-23 | 中国建设银行股份有限公司 | 任务调度方法及装置 |
WO2022257435A1 (zh) * | 2021-06-11 | 2022-12-15 | 深圳前海微众银行股份有限公司 | 一种批量任务处理方法、装置、计算设备及存储介质 |
CN115391011A (zh) * | 2022-08-25 | 2022-11-25 | 中国电信股份有限公司 | 定时任务的调度方法、装置、设备、介质及程序 |
CN116010064A (zh) * | 2023-01-16 | 2023-04-25 | 北京航空航天大学 | Dag作业调度和集群管理的方法、系统及装置 |
Non-Patent Citations (3)
Title |
---|
HAGRAS T 等: "A high performance low complexity algorithmfor compile-time task scheduling in heterogeneous systems", PARALLEL COMPUTING * |
李岩;王显山;: "实时操作系统任务调度算法的硬件实现", 计算机工程与应用, no. 35 * |
杨涌;潘波;郑建;刘光文;林小光;成亮;: "一种作业调度和计算资源动态分配方法", 电子技术与软件工程, no. 16 * |
Also Published As
Publication number | Publication date |
---|---|
CN116932227B (zh) | 2023-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8612986B2 (en) | Computer program product for scheduling ready threads in a multiprocessor computer based on an interrupt mask flag value associated with a thread and a current processor priority register value | |
US8423999B2 (en) | Computer system, virtual machine monitor and scheduling method for virtual machine monitor | |
CN106557369B (zh) | 一种多线程的管理方法及系统 | |
EP2562644B1 (en) | Systems and methods for bounding processing times on multiple processing units | |
US10271326B2 (en) | Scheduling function calls | |
US9298504B1 (en) | Systems, devices, and techniques for preempting and reassigning tasks within a multiprocessor system | |
JP2003298599A (ja) | 分散制御方法及び装置 | |
JP2009026302A (ja) | スリープキュー管理 | |
US10467054B2 (en) | Resource management method and system, and computer storage medium | |
US8640133B2 (en) | Equal duration and equal fetch operations sub-context switch interval based fetch operation scheduling utilizing fetch error rate based logic for switching between plurality of sorting algorithms | |
CN111897637B (zh) | 作业调度方法、装置、主机及存储介质 | |
CN112764904A (zh) | 基于多任务系统中防止低优先级任务饿死的方法 | |
CN112925616A (zh) | 任务分配方法、装置、存储介质及电子设备 | |
KR101373786B1 (ko) | 자원-기반 스케쥴러 | |
CN111597044A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
US10853133B2 (en) | Method and apparatus for scheduling tasks to a cyclic schedule | |
CN116932227B (zh) | 一种基于单线程的任务调度方法及装置 | |
WO2023165485A1 (zh) | 调度方法及计算机系统 | |
CN115904744A (zh) | 线程持锁方法、装置、电子设备及计算机可读介质 | |
Nosrati et al. | Task scheduling algorithms introduction | |
CN114035926A (zh) | 应用线程调度方法、装置、存储介质及电子设备 | |
CN111813531B (zh) | 一种操作系统时钟调度方法及系统 | |
JPH08314740A (ja) | プロセスディスパッチ方法 | |
US20130042247A1 (en) | Starvationless Kernel-Aware Distributed Scheduling of Software Licenses | |
Evequoz | Guaranteeing optional task completions on (m, k)-firm real-time systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |