一种基于单线程的任务调度方法及装置制造方法及图纸

技术编号:39188458 阅读:10 留言:0更新日期:2023-10-27 08:35
本申请提供一种基于单线程的任务调度方法及装置,可用于操作系统领域或其他领域,该方法包括:接收任务信息并创建任务,确定任务的第一优先级,以确定接收到的任务插入任务调度队列的位置;根据当前时间、该位置前各任务的预计执行时长及当前正在执行任务的剩余执行时长确定任务的开始执行时间,将任务放入任务调度队列;当任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU执行。该装置用于执行该方法。本申请通过单线程执行任务,且不会中断正在执行的任务,节省了同步和任务上下文切换的开销,确定各任务的开始执行时间,自动将任务发送到CPU执行,节约了轮询开销,降低了CPU利用率和对硬件的要求。要求。要求。

【技术实现步骤摘要】
一种基于单线程的任务调度方法及装置


[0001]本申请涉及操作系统
,尤其涉及一种基于单线程的任务调度方法及装置。

技术介绍

[0002]多线程的发展史可以说是一场资源效率之战,促进其发展的根本动力在于磁盘IO、内存IO、CPU运算速度的不平衡所造成的资源浪费,其中CPU运行速度最快、其次是内存、最慢的当属磁盘IO。
[0003]计算机中的每一个工作通常都包含它们两个以上的角色参与,当他们一起协作的时候问题就产生了,CPU执行速度非常快,使得CPU的效率要远远高过磁盘IO,所以CPU的大部分时间都是在等待内存和磁盘的IO完成,但因为CPU资源是非常宝贵的,所以就必须想一种办法把CPU在等待磁盘IO的这段时间利用起来。
[0004]为了更合理的利用CPU资源,把内存划分为多个块,不同的应用程序使用着各自的内存空间互不干涉,这里每个单独的应用程序也就变为了一个单独的进程,CPU可以在多个进程之间切换执行,当一个进程需要进行磁盘IO的时候CPU就切换到另外一个进程去执行指令,这样就让CPU的资源更合理的运用起来,随着内存的加大,可划分的块也越来越多,这样能“同时”运行的进程也越来越多,CPU在不同的进程之间切换执行,任务多的时候它会一直处于工作状态。
[0005]CPU基于进程的调度极大的提高了CPU的利用率,但是为了精益求精,发现基于进程的调度还有进一步改善的空间。因为CPU是基于进程切换的,一个进程工作时就意味着其他进程无法获得CPU资源。CPU选择了基于粒度更小的线程来调度执行任务。一个进程可以创建很多个线程来执行任务,没有了进程的界限区分,CPU会在线程之间来回切换的工作, CPU的时间片分的更细,以至它在多个线程之间切换执行,我们并没有明显的感知,这样我们的多个进程也变得可以“同时”工作了,同时CPU等待IO的几率又更加小了。
[0006]在某一个时间片之内永远只会有一个线程执行指令,因为时间片的单位太小以至于我们感知不到,以为多个程序的线程是“同时”执行的,但是进入了多核CPU时代后,多核心控制器可以同一时间执行不通过线程上的任务,从而真正意义上实现了多任务同时执行。
[0007]多任务处理是操作系统或计算机程序同时运行多个任务的能力。传统的多线程程序为每个要并发执行的任务分配一个单独的线程,这会导致上下文切换、争用条件和同步开销等问题。
[0008]线程要占用硬件资源去执行任务,线程越多占用的硬件资源就越多,每个线程之间虽然隔离,但是每个线程都会竞争系统资源。
[0009]多线程是基于提高CPU利用率,充分利用CPU资源的目的产生的,对CPU的硬件性能要求较高。但当硬件资源较为落后且十分有限时,难以满足多线程对CPU处理速度的要求,软件使用再多的线程也无法超越当前硬件资源的屏障。此时,由于CPU基于时间片对线程进
行调度需要CPU来回切换实现任务并行执行,这些操作进一步加重了CPU的负担,造成性能浪费,难以通过有限的硬件资源实现。

技术实现思路

[0010]针对现有技术中的问题,本申请提供一种基于单线程的任务调度方法及装置,能够至少部分地解决现有技术中的问题。
[0011]第一方面,本申请提供一种基于单线程的任务调度方法,包括:接收任务信息并创建任务,根据所述任务信息确定所述任务的第一优先级;当所述任务为一般优先级任务时,将任务调度队列的末尾作为所述任务插入的位置;当接收到的任务为高优先级任务时,根据所述高优先级任务的最晚完成时间和预计执行时长确定所述高优先级任务的最晚开始执行时间;根据所述最晚开始执行时间、所述任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定所述高优先级任务插入所述任务调度队列的位置;根据当前时间、任务调度队列中所述位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;当所述任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。
[0012]其中,当接收到的任务为高优先级任务时,所述将任务放入任务调度队列之后,还包括:更新所述任务调度队列中位于所述高优先级任务之后的任务的开始执行时间。
[0013]其中,所述根据当前时间、任务调度队列中所述位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间之前,还包括:根据各类任务的历史执行时长确定对应类别任务的预计执行时长。
[0014]其中,当存在任务到达开始执行时间,所述CPU仍被占用时,还包括:根据当前正在执行的任务所属类别的历史执行时长更新所述任务调度队列中各任务的开始执行时间。
[0015]其中,若发送到CPU进行执行的任务为循环执行的任务,当每次执行完成后,还包括:根据任务在预设时间段内每次执行所用的时长及本次执行时长更新任务的预计执行时长。
[0016]其中,若存在同时到达的任务,则所述根据所述任务信息确定所述任务的第一优先级之后,还包括:根据预设规则对一般优先级任务进行排序。
[0017]其中,所述根据预设规则对接收到的任务进行排序,包括:根据预设属性确定各一般优先级任务的第二优先级;根据所述第二优先级对各一般优先级任务进行排序。
[0018]第二方面,本申请提供一种基于单线程的任务调度装置,包括:
任务启动单元,用于接收任务信息并创建任务,根据所述任务信息确定所述任务的第一优先级;第一插入位置确定单元,当所述任务为一般优先级任务时,用于将任务调度队列的末尾作为所述任务插入的位置;第二插入位置确定单元,当接收到的任务为高优先级任务时,用于根据所述高优先级任务的最晚完成时间和预计执行时长确定所述高优先级任务的最晚开始执行时间;根据所述最晚开始执行时间、所述任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定所述高优先级任务插入所述任务调度队列的位置;开始执行时间获取单元,用于根据当前时间、任务调度队列中所述位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;任务发送单元,用于当所述任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。
[0019]第三方面,本申请提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例所述的方法。
[0020]第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。
[0021]第五方面,本申请提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。
[0022]本申请提供的基于单线程的任务调度方法及装置,接收任务信息并创建任务,根据任务信息确定任务的第一本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于单线程的任务调度方法,其特征在于,包括:接收任务信息并创建任务,根据所述任务信息确定所述任务的第一优先级;当所述任务为一般优先级任务时,将任务调度队列的末尾作为所述任务插入的位置;当接收到的任务为高优先级任务时,根据所述高优先级任务的最晚完成时间和预计执行时长确定所述高优先级任务的最晚开始执行时间;根据所述最晚开始执行时间、所述任务调度队列中各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定所述高优先级任务插入所述任务调度队列的位置;根据当前时间、任务调度队列中所述位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间,将任务放入任务调度队列;当所述任务调度队列中存在任务到达开始执行时间时,将到达开始执行时间的任务发送到CPU进行执行。2.根据权利要求1所述的基于单线程的任务调度方法,其特征在于,当接收到的任务为高优先级任务时,所述将任务放入任务调度队列之后,还包括:更新所述任务调度队列中位于所述高优先级任务之后的任务的开始执行时间。3.根据权利要求1所述的基于单线程的任务调度方法,其特征在于,所述根据当前时间、任务调度队列中所述位置之前各任务的预计执行时长及当前正在执行的任务的剩余执行时长确定接收到的任务的开始执行时间之前,还包括:根据各类任务的历史执行时长确定对应类别任务的预计执行时长。4.根据权利要求1所述的基于单线程的任务调度方法,其特征在于,当存在任务到达开始执行时间,所述CPU仍被占用时,还包括:根据当前正在执行的任务所属类别的历史执行时长更新所述任务调度队列中各任务的开始执行时间。5.根据权利要求1所述的基于单线程的任务调度方法,其特征在于,若发送到CPU进行执行的任务为循环执行的任务,当每次执行完成后,还包括:根据任务在预设时间段内每次执行所用的时长及本次执行时长更新任务的预计执行时长。6.根据权利要求1所述的基于单线程的任务调度方法,其特征在于,若存在同时到达的任务,则所述根据所述任务信息确定所述任务的第一优先级之后,还包括:根据预设规则对一般优先级任务进行排序。7.根据权利要求6所述的基于单线程的任务调度方法,其特征在于,所述根据预设规则对一般优先级任务进行排序,包括:根据预设属性确定各一般优先级任务的第二优先级;根据所述第二优先级对各一般优先级任务进行排序。8.一种基于单线程的任务调度装置,其特征在于,包括:任务启动单元,用于接收任务信息并创建任务,根据所述任务信息确定所述任务的第一优先级;第一插入位置确定单元,当所述任务为一般优先级任务时,用于将任...

【专利技术属性】
技术研发人员:朱超张晓涛
申请(专利权)人:西安华创马科智能控制系统有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1