多目标扫描任务的调度方法与扫描装置与流程

文档序号:24063618发布日期:2021-02-26 11:49阅读:65来源:国知局
多目标扫描任务的调度方法与扫描装置与流程

[0001]
本发明属于计算机与网络安全技术领域,尤其是涉及一种多目标扫描任务并行执行的调度方法,以及一种扫描装置。


背景技术:

[0002]
现代操作系统如mac os x,unix,linux,windows等都支持多任务并发执行,即操作系统下可以同时运行多个任务。扫描任务的并行执行,每个任务都支持多目标扫描。通常,多个任务之间按照先来先执行的原则进行调度执行,而且采用抢占的方式占用系统资源,使得系统的整体性能被降低,给用户的体验较差。具体的说,多任务并发的情况下,后面创建的任务即使目标很少、耗时很短,也要等待排队调度,等待前面任务执行完成才能执行;而多个任务同时执行时,共同抢占系统资源,造成资源的无序分配而且分配给单个任务的资源必然会下降,从而变相的拉长每个任务的执行时间,导致每个任务耗时都会比单个任务执行耗时长出很多,直接降低扫描效率。


技术实现要素:

[0003]
为解决上述现有技术中存在的问题,本发明旨在提出一种多目标扫描任务的调度方法与扫描装置,依据任务属性,优化调度方式和任务并行时的资源分配方式,保证优先任务能优先占用资源,快速执行完成以释放资源,提高扫描效率。
[0004]
本发明的技术方案,一方面提供一种多目标扫描任务的调度方法,包括:根据扫描目标数与等待时长确定任务的优先级,以及,按照优先级对任务进行排队;根据优先级高低依次启动任务,并且根据优先级为任务分配相应的资源,并行执行。
[0005]
所述确定扫描任务的优先级,具体包括:任务创建时,记录当前任务的扫描目标数与创建时间;根据单个目标扫描所需时长与目标数确定当前扫描任务执行所需时长;根据当前时间与创建时间确定当前扫描任务的等待时长;根据执行所需时长与等待时长确定当前任务的优先级:执行所需时长越短,优先级越高;同时,等待时长越长,优先级越高。
[0006]
较佳的,所述当前任务的优先级计算公式p=n*t*(1-tw/tmax),其中,n表示当前任务的扫描目标数,t表示单个目标扫描所需时长,tw表示当前任务的等待时长,tmax表示预设的单个任务最大等待时长,且tw<tmax;p值越小,表示优先级越高。
[0007]
进一步优选的,基于所述优先级高低,依次启动扫描并分配执行所需任务资源,具体包括:预设:单个扫描任务可分配的最大任务资源rmax;执行单个扫描任务所需的最低任务资源rmin,为每一个并行任务预留rmin;为并行启动执行的最高优先级任务分配rmax,以及,每个非最高优先级任务分配资源的计算公式:,其中,r为当前可分配任务资源,rh为最高优先级任务的资源,pj为并行启动执行的第j个非最高优先级任务的优先级,s为并行启动执行的任务个数且s>1。
[0008]
设置包括cpu与内存的系统资源上限;若当前所有执行中的任务占用的系统资源超过上限,则停止分配任务资源,直至所述占用的系统资源低于上限。
[0009]
本发明的技术方案,另一方面提供一种扫描装置,具体包括:任务创建模块,用于创建扫描任务,同时记录当前任务的扫描目标数与创建时间;优先级确定模块,根据单个目标扫描所需时长与目标数确定当前扫描任务执行所需时长;根据当前时间与创建时间确定当前扫描任务的等待时长;根据任务执行所需时长与当前等待时长,确定任务的优先级:执行所需时长越长,优先级越低;同时,等待时长越长,优先级越高;排队队列模块,存储创建的待执行任务,根据优先级从高到低进行排列,等待读取;执行队列模块,按照优先级高低从排队队列模块读取待执行任务;任务资源分配模块,为执行队列中的任务分配包括进程与线程的任务资源;任务执行模块,调用分配的任务资源,并行执行扫描任务。
[0010]
作为优选的,上述扫描装置,还包括任务调度模块:预设系统资源上限,执行队列的任务数上限;每创建一个新的扫描任务,重新计算排队队列中的所有任务的优先级,根据当前任务优先级加入排队队列的相应位置;当执行队列中的任务数超过所述上限,停止从排队队列取任务;当执行队列出现空闲位置时,按照优先级高低从排队队列读取相应数量的任务加入执行队列,并分配任务资源,由任务执行模块启动扫描任务。
[0011]
根据以上所述的技术方案,本发明实现了以下有益效果:创建新的扫描任务后根据任务的相关属性计算优先级,并且按照优先级存入排队队列的相应位置,再根据优先级高低从排队队列读取任务加入执行队列,对执行队列中的任务根据优先级分配相应的任务资源,最后由所述任务资源实现扫描任务的执行。该过程中,任务的优先级的确定兼顾目标数和等待时长,目标数少的扫描任务优先执行的同时,等待时长长的任务优先级也会动态的向前调整;并且根据优先级分配相应的资源,保证优先级高的任务优先执行完成后释放资源,从而实现了合理调度扫描任务和分配任务资源,提高多目标扫描任务的执行效率。
附图说明
[0012]
图1为本发明的多目标扫描任务的调度方法实施例一与实施例二,主要工作流程示意图;图2为本发明的实施例三,扫描装置组成框图。
具体实施方式
[0013]
下面结合附图与实施例,对本发明的技术方案进行详细说明。
[0014]
如图1所示,多目标扫描任务的调度方法,主要包括:根据扫描目标数与等待时长确定任务的优先级,以及,按照优先级对任务进行排队;根据优先级高低依次启动任务,并且根据优先级为任务分配相应的资源,并行执行。具体包括以下s100至s500所述的步骤。
[0015]
s100,创建扫描任务,记录任务属性信息。具体为:记录当前任务的扫描目标数与创建时间;根据单个目标扫描所需时长与目标数确定当前扫描任务执行所需时长;根据当
前时间与创建时间确定当前扫描任务的等待时长。此处需要说明的是,所述单个目标扫描所需时长的确定方式,可以是进行一定次数的试验,得到不同内容的扫描任务在扫描单个目标时的平均时长,将该平均时长作为所述单个目标扫描所需时长,当然也可以通过其他方式,本发明对此不作限定。
[0016]
s200,根据任务的属性信息确定其任务优先级。根据扫描目标数与等待时长确定任务的优先级,具体包括:任务创建时,确定当前扫描任务的优先级:执行所需时长越长,优先级越低;同时,等待时长越长,优先级越高。
[0017]
作为优选的,当前任务的优先级计算公式p=n*t*(1-tw/tmax),其中,n表示当前任务的扫描目标数,t表示单个目标扫描所需时长,tw表示当前任务的等待时长,tmax表示预设的单个任务最大等待时长,且tw<tmax;p值越小,表示优先级越高。
[0018]
当tw≧tmax时,令p=0即最高优先级;以及,当扫描任务的优先级相同时,按照创建时间先后进行排队。
[0019]
s300,根据优先级将任务加入排队队列相应位置。将新创建的扫描任务加入排队队列时,重新计算处于排队中的当前所有任务的优先级,并根据优先级从高到低重新排列,其中新创建的扫描任务根据其优先级插入到相对应的位置。
[0020]
s400,从排队队列读取任务加入执行队列。具体包括:所述执行队列设置任务数上限,当执行中的任务数超过所述上限,停止从排队队列读取任务;当执行队列出现空闲位置时,按照优先级高低从排队队列读取相应数量的任务分配任务资源。
[0021]
作为另一优选的,执行队列也可以是周期的从排队队列读取任务,当一个执行周期内的所有任务都结束后,再从排队队列中读取相应数量的任务并行执行,所述的周期可以是并行执行的任务中执行时长最长的任务完成所需的时长。
[0022]
s500,分配任务资源,并行执行。加入执行队列中的任务,根据其优先级进行包括进程与线程的任务资源的分配。
[0023]
作为优选的,预设:单个扫描任务可分配的最大任务资源rmax;执行单个扫描任务所需的最低任务资源rmin,为每一个并行任务预留rmin,即如果执行队列任务数上限为x的话,全部可分配的资源实际为总资源减去(x*rmin);为并行启动执行的最高优先级任务分配rmax,以及,每个非最高优先级任务分配资源的计算公式:,其中,r为当前可分配任务资源,rh为最高优先级任务的资源,pj为并行启动执行的第j个非最高优先级任务的优先级,s为并行启动执行的任务个数且s>1。
[0024]
进一步优选的,设置包括cpu与内存的系统资源上限;若当前所有执行中的任务占用的系统资源超过上限,则停止分配任务资源,直至所述占用的系统资源低于上限。
[0025]
任务资源分配完成后,新读取的s个任务,并行启动,开始扫描各自的目标。
[0026]
下面通过两个实施例对本法买那个的多目标扫描任务调度方法进行说明。
[0027]
实施例一首先,根据需要先后创建2个扫描任务,其中任务1的扫描目标数为2、创建时间为t1,任务2的扫描目标数为3,创建时间为t2;其中,先创建的任务1已经加入排队队列中等待被执
行。具体实践中,创建时间以时间戳形式记录。
[0028]
根据s200中所述的优先级确定方法以及优选的计算公式,可以得到任务2创建并加入排队队列的时刻,两个任务的优先级分别是:任务1的优先级为p1=2*t*(1-tw1/tmax),其中tw1=t2-t1,因此可以得到p1=2t(tmax-t2+t1)/tmax,由于t1<t2,因此p1<2t;任务2的优先级为p2=3*t*(1-tw2/tmax),其中由于任务2创建时,其tw2=0,得到p2=3t;可见p1<p2,即任务1的优先级高于任务2,排队队列中任务2排在任务1后面。
[0029]
其次,如果执行队列的任务数上限是1个任务,那么一次只能读取一个任务,则先执行任务1,任务1执行完毕再读取并执行任务2;并且,由于每个任务被执行时都是单独执行,可以视为是执行中的最高优先级任务,分配单个扫描任务可分配的最大任务资源rmax。
[0030]
而如果执行队列的任务数上限大于等于2个,当执行队列为空时,任务1与任务2会同时被读取加入执行,这时就涉及到s500所述的任务资源分配。按照按优先级高低依次读取任务1与任务2加入执行队列,只不过进行资源分配后同时启动执行。具体的是:任务1与任务2相比是最高优先级,因此为任务1分配rh(rmax);对于任务2可分配的资源是,可分配资源r减去rh,由于任务2是除最高优先级任务1之外的唯一一个任务, j=1,s=1,故不适用步骤s500的分配公式,作为较佳的,任务2分配到的任务资源可以是r-rmax+rmin。
[0031]
所述的r、rmax、rmin可以是包括进程数和/或线程数。
[0032]
最后,系统按照上述计算结果分别为任务1与任务2分配相应的任务资源,同时启动执行。
[0033]
当任务开始执行后,执行队列中出现相应的空置任务,此时可以继续按照优先级从排队队列读取新的任务进行资源分配。
[0034]
实施例二在实施例一基础上,继续依次创建扫描任务3、任务4与任务5,其中任务3的扫描目标数为5、创建时间为t3,任务4的扫描目标数为4,创建时间为t4,任务5的扫描目标数为3,创建时间为t5,以任务5创建的时间t5为计算时间点,先创建的任务3与任务4已经存在于排队队列中。任务5创建后需要加入排队队列中,此时对任务5与任务3、4都重新计算任务优先级。
[0035]
为了便于叙述,假定预设tmax=240s、t=60s,同时简化时间戳t3=300s、t4=400s、t5=500s;则可以得到各任务的优先级:任务3的优先级:p3=5*t*(1-tw3/tmax),其中tw3=t5-t3,得到p3=50;任务4的优先级:p4=4*t*(1-tw4/tmax),其中tw4=t5-t4,得到p4=140;任务5的优先级:p5=3*t*(1-tw5/tmax),其中由于任务5创建时,其等待时长tw5=0,得到p5=180;可见,p3<p4<p5,排队队列中,任务3优先级最高,任务5优先级最低。
[0036]
假定执行队列的任务数上限为3,当实施例一的任务1与任务2至少一个执行完成后,从排队队列中按优先级高低依次读取任务加入执行队列。
[0037]
如果只有任务1执行完成,则读取任务3加入,计算其资源分配,由于只有一个任务加入,分配rmax,启动执行。
[0038]
如果执行队列的所有任务都执行完成,则同时读取任务3、4、5加入,任务3为优先
级最高的任务,分配资源r1=rmax,任务4分配资源r2=;任务5分配资源r3=;由于p4<p5,分析可见r2>r3,即分配给优先级高的任务更多的任务资源,提高执行效率。
[0039]
最后,系统按照上述计算结果分别为任务3、4、5分配相应的任务资源,同时启动执行。
[0040]
当任务开始执行后,执行队列中出现相应的空置,此时可以继续按照优先级从排队队列读取新的任务进行资源分配。
[0041]
若当前所有执行中的任务占用的系统资源cpu和/或内存超过上限,则停止分配任务资源,直至所述占用的系统资源低于上限。
[0042]
实施例三如图2所示,一种扫描装置,包括:任务创建模块,用于创建扫描任务,同时记录当前任务的扫描目标数与创建时间;优先级确定模块,根据任务执行所需时长与当前等待时长,确定任务的优先级:执行所需时长越长,优先级越低;同时,等待时长越长,优先级越高;排队队列模块,存储创建的待执行任务,根据优先级从高到低进行排列,等待读取;执行队列模块,按照优先级高低从排队队列模块读取待执行任务;任务资源分配模块,为执行队列中的任务分配包括进程与线程的任务资源;任务执行模块,调用分配的任务资源,并行执行扫描任务;任务调度模块,预设系统资源上限,执行队列的任务数上限;每创建一个新的扫描任务,重新计算排队队列中的所有任务的优先级,根据当前任务优先级加入排队队列的相应位置;当执行队列中的任务数超过所述上限,停止从排队队列取任务;当执行队列出现空闲位置时,按照优先级高低从排队队列读取相应数量的任务加入执行队列,并分配任务资源,由任务执行模块启动扫描任务。
[0043]
综上可见,本发明的技术方案中,任务的优先级的确定兼顾目标数和等待时长,目标数少的扫描任务优先执行的同时,等待时长长的任务优先级也会动态的向前调整;并且根据优先级分配相应的资源,保证优先级高的任务优先执行完成后释放资源,从而实现了合理调度扫描任务和分配任务资源,提高多目标扫描任务的执行效率。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1