一种基于多级反馈队列的事件注入引擎的任务调度方法

文档序号:6547110阅读:137来源:国知局
一种基于多级反馈队列的事件注入引擎的任务调度方法
【专利摘要】本发明属于计算机系统的事件注入【技术领域】,特别涉及一种基于多级反馈队列的事件注入引擎的任务调度方法。本发明包括:扫描器根据用户指令或系统控制信号扫描目标系统,返回包括目标系统所有脆弱点类型的扫描结果;根据所有脆弱点或用户需求分析扫描结果,确定需要注入的批量型事件的类型;扫描器将需要注入的批量型事件类型信息发送到事件模型库;事件模型库接收扫描器发送来的批量型事件类型信息,并根据批量型事件的类型选取相应的事件等。本发明具有适用范围广、反馈开销小、兼容性好、事件注入引擎利用率高,更加灵活、高效、合理的实现批量型事件注入等优点。
【专利说明】一种基于多级反馈队列的事件注入引擎的任务调度方法
【技术领域】
[0001]本发明属于计算机系统的事件注入【技术领域】,特别涉及一种基于多级反馈队列的事件注入引擎的任务调度方法。
【背景技术】
[0002]事件注入技术是指通过向目标系统注入事件,同时观测和回收系统对所注入事件的反应信息并对回收的信息进行分析,进而向测试者提供相关结果的过程。在计算机系统可用性评测中,事件注入技术不但可以评测系统的某些特定指标,还可以评测系统运行时非故障类和人为因素对系统的影响。目前,事件注入技术的研究主要集中在由事件注入引擎向目标系统简单依序注入单个事件或离散地逐个注入事件的方式,导致效率较低、开销较大,无法实现高效的批量型事件注入。因此,适应批量型事件注入引擎设计便成为一个亟待解决的问题。
[0003]目前,关于事件注入的研究仍较少。现有专利主要包括:1)“基于事件注入的计算机网络可信性评测装置(200620020624.0) ”。该专利针对不同级别容错机制,向目标系统注入各种网络事件,主要关心网络安全方面的问题。主要适用于向目标系统逐个注入网络相关类型事件,没有考虑注入批量性事件时事件注入引擎的优化调度问题。2)“一种脚本注入事件处理方法和系统(200710303986.X)”。该专利通过接收脚本注入检测系统输出的脚本事件,检测是否存在XSS(Cross Site Scripting)攻击并以量化形式输出结果,与本发明专利应用范围、采用方法均不同。3)“智能全自动单粒子事件故障注入器(200510111494.1)”针对的是在HDL仿真时模拟空间福射环境等情形。此外,“Event-controlled errorinjection system(5008885),,、“Single_event transient injection simulation methodfor high-frequency circuits (CN2013113637620130418) ”均与本发明专利米用方法或应用范围不同。现有文献主要涉及基于事件注入的可信性、可靠性、安全性等问题,均是先提出事件模型或评测模型,针对不同目标系统选择相应事件类型,最终评测目标系统或软件的相关指标。均没有考虑批量型事件注入的情形,更没有提出适应批量型事件注入引擎的任务调度方法(包括“刘宇楠.基于事件注入的可靠性评测方法的设计与实现[D].哈尔滨工业大学2009”、“黄永平,常鹏飞,郭凯,金玉善.基于事件注入机制的软件调试方法与实现[J].吉林大学学报(工学版).2012(09)”等)。
[0004]从以上分析可知,现阶段事件注入研究的不足主要是:大多采用由事件注入引擎向目标系统简单依序注入单个事件或离散地逐个注入事件的方式,导致效率较低、开销较大,无法实现高效的批量型事件注入。因此,提出一种适应批量型事件注入的事件注入引擎的优化任务调度方法是非常必要的,其好处是可以更加灵活、高效、合理的实现批量型事件注入的任务调度。

【发明内容】

[0005]本发明的目的在于提供一种更加适用于批量型事件注入的事件,反馈开销小、兼容性好、事件注入引擎利用率高,能够更加灵活、高效、合理的实现批量型事件注入的注入引擎优化任务调度方法。
[0006]本发明的目的是这样实现的:
[0007](I)扫描器根据用户指令或系统控制信号扫描目标系统,返回包括目标系统所有脆弱点类型的扫描结果;
[0008](2)根据所有脆弱点或用户需求分析扫描结果,确定需要注入的批量型事件的类型;
[0009](3)扫描器将需要注入的批量型事件类型信息发送到事件模型库;
[0010](4)事件模型库接收扫描器发送来的批量型事件类型信息,并根据批量型事件的类型选取相应的事件;
[0011](5)事件模型库为每个事件设置一个事件控制块ECB,ECB作为每个事件在事件注入引擎的任务调度过程中存在的标志,保存事件注入器对事件进行管理和调度所需的全部信息,包括事件标识、事件参数、事件状态、事件优先级、事件注入标准时间和事件注入失败计数器;
[0012](6)当步骤(4)执行完成后,事件模型库将生成的批量型事件序列发送给排队器;
[0013](7)排队器将从事件模型库获取的批量型事件序列按照每个事件的ECB中优先级的大小排序,生成以优先级最高的事件为队首、优先级最低的事件为队尾的事件后备队列,事件后备队列长度为m ;
[0014](8)排队器将事件后备队列发送到后备队列寄存器,事件注入器中的就绪调度引擎可最快找到并调度优先级最高的事件到事件就绪队列中;
[0015](9)批量型事件由就绪调度引擎调度进入事件注入器:
[0016](9.1)当事件就绪队列S1未满,队列长度小于n,且事件后备队列不为空时,就绪调度引擎首先向阻塞调度引擎发送调度信号,阻塞调度引擎接收到就绪调度引擎发送来的调度信号后检查注入失败阻塞队列是否为空;若注入失败阻塞队列为空,跳转到(9.2);若不空,即注入失败阻塞队列中存在已注入失败且等待再次调度的事件,跳转到(9.3);
[0017](9.2)就绪调度引擎在接收到阻塞调度引擎发送来的反馈信号后,按照FCFS算法从事件注入器外的事件后备队列队首取下一个事件,入队到事件就绪队列S1队尾,并将其ECB中的事件状态设置为就绪状态,直到S1队满或事件后备队列空为止;
[0018](9.3)就绪调度引擎在接收到阻塞调度引擎发送来的反馈信号后优先调度注入失败阻塞队列中的事件,阻塞调度引擎根据事件ECB中的注入失败计数器判断进一步调度方式,若注入失败阻塞队列队首事件注入失败次数小于正整数j次,跳转到(9.4),若队首事件注入失败次数大于等于j次,则跳转到(9.5);
[0019](9.4)阻塞调度引擎取下该事件并调度给就绪调度引擎,就绪调度引擎将该事件入队到S1队尾,并将其ECB中的事件状态设置为就绪状态,直到S1队满或注入失败阻塞队列空为止;
[0020](9.5)阻塞调度引擎根据其ECB中的事件标识直接给事件模型库发送重新获取该事件及其ECB的信号,阻塞调度引擎从注入失败阻塞队列取下并删除该事件,直到注入失败阻塞队列空为止,就绪调度引擎对该事件重新执行(9.1)完整调度过程。
[0021](10)事件注入器内事件注入的任务调度:[0022](10.1)多级反馈调度引擎按照FCFS算法取下事件就绪队列Si队首事件并发送到事件注入引擎;
[0023](10.2)事件注入引擎将事件ECB中的事件状态设置为注入状态,并根据事件参数对相应目标实施注入;
[0024](10.3)事件注入引擎监视注入过程,包括注入耗时和注入成功与否:若事件根据ECB在对应的时间片内成功完成注入,跳转到(10.4);若事件根据ECB中在对应的时间片内未成功完成注入,跳转到(10.5);若事件在注入过程中注入失败,不能继续注入,则跳转到(10.6);
[0025](10.4)事件注入引擎将事件ECB中事件状态设置为完成状态,将事件撤离事件注入器,恢复事件注入引擎自身现场状态,准备注入下一事件;
[0026](10.5)事件注入引擎向多级反馈调度引擎发送注入未完成信号,并将事件退还给多级反馈队列引擎,恢复自身现场状态准备注入下一事件,多级反馈队列引擎收到注入未完成信号后,接收退回的事件,从事件就绪队列Si调度下一事件给事件注入引擎,再将被退回的事件调度到事件就绪队列Si+1的队尾;
[0027](10.6)事件注入引擎无需等待时间片结束,直接将失败事件调度到注入失败阻塞队列队尾,将ECB中的事件状态设置为阻塞状态,注入失败计数器加I ;当事件处在注入失败阻塞队列队首,且就绪调度引擎向阻塞调度引擎发送调度信号时,阻塞调度引擎根据事件ECB中的注入失败次数判断进一步调度方式。
[0028]时间片设置及调度方法是:当事件在队列Si, i是正整数,i e [I, k)中时,根据TSi+1 = 2TSi,Tsl为ECB中的一个标准时间片,若事件注入引擎对事件在对应时间片内未成功完成注入,则将事件放入队列Si+1队尾,当一个事件依次降到Sk队列时,则事件注入引擎便采取2H倍的标准时间片轮转方式持续实施注入,直到事件完成注入。
[0029]在步骤(10.5)中:当S1-Sp1队列均空时,多级反馈调度引擎才调度Si队列中的事件给事件注入引擎,当事件注入引擎在对队列Si中事件实施注入时,若有新的事件进入优先权更高的队列,则新事件将经由多级反馈调度引擎向事件注入引擎发送抢占信号,事件注入引擎接收到抢占信号后暂停注入,向多级反馈调度引擎发送注入未完成信号,将事件退还给多级反馈队列引擎,并恢复自身现场状态,再为高优先权事件实施注入,多级反馈调度引擎将原事件放回原队列Si的末尾,而不是下一级队列的末尾。
[0030]本发明的有益效果是:
[0031]将多级反馈队列与多层次调度模型机制相融合,实现了反馈开销小、兼容性好、事件注入引擎利用率高,更加灵活、高效、合理的批量型事件注入。为批量型事件中的每个事件均设置事件控制块ECB,ECB中包括事件的标识、参数、状态、优先级、注入标准时间和失败次数计数器等,强化了对事件的管理和调度,实现了按照优先级原则进行事件注入的优化任务调度方式。同时,将大部分待注入事件存放在资源紧俏的事件注入器外,减小了事件注入器资源的占用和运行负载,精简了事件注入器的设计。因此,本发明具有适用范围广、反馈开销小、兼容性好、事件注入引擎利用率高,更加灵活、高效、合理的实现批量型事件注入等优点。可广泛应用于国防工业和国民经济的各种关键任务系统中的事件注入【技术领域】,特别是对批量型事件实施事件注入等情形。【专利附图】

【附图说明】
[0032]图1基于多级反馈队列的事件注入引擎的任务调度示意图;
[0033]图2批量型事件由就绪调度引擎调度进入事件注入器流程图;
[0034]图3事件注入器内事件注入的任务调度流程图。
【具体实施方式】
[0035]下面结合附图对本发明做进一步描述。
[0036]本发明的基于多级反馈队列的事件注入引擎的任务调度方法,将多级反馈队列与多层次调度模型机制相融合,设计事件注入引擎的任务调度方法。本方法反馈开销小、兼容性好、事件注入引擎利用率高,能够更加灵活、高效、合理的实现批量型事件注入。
[0037]本方法在事件注入引擎的任务调度流程中涉及的组件包括:事件注入器、扫描器、事件模型库、排队器和后备队列寄存器。基于多级反馈队列的事件注入引擎的任务调度示意图见附图1。其中各器件的工作原理和调度流程说明如下:
[0038]1、扫描器
[0039]I)扫描器根据用户指令或系统控制信号扫描目标系统,返回包括目标系统所有脆弱点类型的扫描结果;
[0040]2)根据所有脆弱点或用户需求分析扫描结果,确定需要注入的批量型事件的类型;
[0041]3)最后,扫描器将需要注入的批量型事件类型信息发送到事件模型库。
[0042]2、事件模型库
[0043]I)事件模型库接收扫描器发送来的批量型事件类型信息,并根据批量型事件的类型选取相应的事件;
[0044]2)事件模型库为每个事件设置了一个事件控制块(ECB),ECB作为每个事件在事件注入引擎的任务调度过程中存在的标志,其中保存了事件注入器对事件进行管理和调度所需的全部信息,包括事件标识、事件参数、事件状态(包括就绪、注入、完成、阻塞四种状态)、事件优先级(利用O~255中某一整数表示,其中“O”表示最高优先权,数值越大,优先权越低)、事件注入标准时间和事件注入失败计数器;
[0045]3)当I)执行完成后,事件模型库将生成的批量型事件序列(其中每个事件均设置有ECB)发送给排队器。
[0046]3、排队器和后备队列寄存器
[0047]I)排队器将从事件模型库获取的批量型事件序列按照每个事件的ECB中优先级的大小排序,生成以优先级最高的事件为队首、优先级最低的事件为队尾的事件后备队列。其中,事件后备队列长度为m(m是正整数);
[0048]2)排队器将事件后备队列发送到后备队列寄存器。由此,事件注入器中的就绪调度引擎可最快找到并调度优先级最高的事件到事件就绪队列中。
[0049]4、事件注入器及其任务调度流程
[0050]事件注入器包括事件注入引擎、就绪调度引擎、多级反馈队列引擎、阻塞调度引擎、事件就绪队列 集合和注入失败阻塞队列。
[0051]其中,事件就绪队列集合包括事件就绪队列S1,事件就绪队列S2,…,事件就绪队列sk,事件就绪队列长度均为n,调度优先级为Si>S2>S3>…〉Sk,时间片设置规则为TSi+1 =2TSi(i e [l,k)),Tsi为事件注入引擎在注入每个事件时根据其ECB获得的标准时间片,注入失败阻塞队列长度为P。以上k、n、1、P均是正整数。此外,当注入失败阻塞队列和事件后备队列同时存在待调度事件时,就绪调度引擎优先调度注入失败阻塞队列中的事件。
[0052]本发明的事件注入的任务调度流程分4.1,4.2两个层次,流程分别如下:
[0053]4.1批量型事件由就绪调度引擎调度进入事件注入器流程(见附图2)
[0054]I)当事件就绪队列S1未满(队列长度小于η)且事件后备队列不为空时,就绪调度引擎首先向阻塞调度引擎发送调度信号,阻塞调度引擎接收到就绪调度引擎发送来的调度信号后检查注入失败阻塞队列是否为空。若注入失败阻塞队列为空,跳转到2)。若不空,即注入失败阻塞队列中存在已注入失败且等待再次调度的事件,跳转到3);
[0055]2)就绪调度引擎在接收到阻塞调度引擎发送来的反馈信号后,按照FCFS (先来先调度)算法从事件注入器外的事件后备队列队首取下一个事件,入队到事件就绪队列S1队尾,并将其ECB中的事件状态设置为就绪状态,直到S1队满或事件后备队列空为止;
[0056]3)此时,就绪调度引擎在接收到阻塞调度引擎发送来的反馈信号后优先调度注入失败阻塞队列中的事 件。其中,阻塞调度引擎根据事件ECB中的注入失败计数器判断进一步调度方式。若注入失败阻塞队列队首事件注入失败次数小于j(j为正整数)次,跳转到4)。若队首事件注入失败次数大于等于j次,则跳转到5);
[0057]4)阻塞调度引擎取下该事件并调度给就绪调度引擎,就绪调度引擎将该事件入队到S1队尾,并将其ECB中的事件状态设置为就绪状态,直到S1队满或注入失败阻塞队列空为止;
[0058]5)阻塞调度引擎根据其ECB中的事件标识直接给事件模型库发送重新获取该事件及其ECB的信号,然后,阻塞调度引擎从注入失败阻塞队列取下并删除该事件,直到注入失败阻塞队列空为止。就绪调度引擎对该事件重新执行4.1完整调度过程。
[0059]4.2事件注入器内事件注入的任务调度流程(见附图3)
[0060]I)多级反馈调度引擎按照FCFS(先来先调度)算法取下事件就绪队列Si队首事件并发送到事件注入引擎;
[0061]2)事件注入引擎将事件ECB中的事件状态设置为注入状态,并根据事件参数对相应目标实施注入;
[0062]3)事件注入引擎监视注入过程,包括注入耗时和注入成功与否。若该事件根据其ECB在对应的时间片内成功完成注入,跳转到4);若该事件根据其ECB中在对应的时间片内未成功完成注入,跳转到5);若该事件在其注入过程中注入失败,不能继续注入,则跳转到6);
[0063]4)事件注入引擎将该事件ECB中事件状态设置为完成状态,将其撤离事件注入器,恢复事件注入引擎自身现场状态,准备注入下一事件;
[0064]5)事件注入引擎向多级反馈调度引擎发送注入未完成信号,并将该事件退还给多级反馈队列引擎,恢复自身现场状态准备注入下一事件。多级反馈队列引擎收到注入未完成信号后,接收退回的事件,从事件就绪队列Si调度下一事件给事件注入引擎,再将被退回的事件调度到事件就绪队列Si+1的队尾;
[0065]6)此时,事件注入引擎无需等待时间片结束,直接将失败事件调度到注入失败阻塞队列队尾,同时将其ECB中的事件状态设置为阻塞状态,注入失败计数器加I。当事件处在注入失败阻塞队列队首,且就绪调度引擎向阻塞调度引擎发送调度信号时,阻塞调度引擎根据事件ECB中的注入失败次数判断进一步调度方式,如4.1所述。
[0066]本发明的涉及4.2中过程5)的时间片设置及调度方法是:当事件在队列Si (i是正整数,i e [1,k))中时,根据TSi+1 = 2TSi (Tsi为ECB中的一个标准时间片),若事件注入引擎对其在对应时间片内未成功完成注入,则将该事件放入队列Si+1队尾。当一个事件依次降到Sk队列时,则事件注入引擎便采取2H倍的标准时间片轮转方式持续实施注入,直到该事件完成注入。
[0067]本发明的涉及4.2中过程5)的优先权抢占方法是:当S1?Sp1队列均空时,多级反馈调度引擎才调度Si队列中的事件给事件注入引擎。当事件注入引擎在对队列Si中事件实施注入时,若有新的事件进入优先权更高的队列,则新事件将经由多级反馈调度引擎向事件注入引擎发送抢占信号,事件注入引擎接收到抢占信号后暂停注入,向多级反馈调度引擎发送注入未完成信号,将该事件退还给多级反馈队列引擎,并恢复自身现场状态,再为高优先权事件实施注入。此时,多级反馈调度引擎将原事件放回原队列Si的末尾,而不是下一级队列的末尾。
[0068]本发明将多级反馈队列与多层次调度模型机制相融合,实现了更加适用于批量型事件注入的基于多级反馈队列的事件注入引擎的任务调度方法。下面结合三个具体实施例详细阐述使用本发明方法对批量型事件序列实施注入时事件注入引擎的任务调度流程。由此可延伸到更大的批量型事件的事件注入应用中。
[0069]本方法在事件注入引擎的任务调度流程中涉及的组件包括:事件注入器、扫描器、事件模型库、排队器和后备队列寄存器。
[0070]1、扫描器
[0071]I)扫描器根据用户指令或系统控制信号扫描目标系统,返回包括目标系统所有脆弱点类型的扫描结果;
[0072]2)根据所有脆弱点或用户需求分析扫描结果,确定需要注入的批量型事件的类型包括针对CPU利用率型和针对内存利用率型两种;
[0073]3)最后,扫描器将针对CPU利用率型和针对内存利用率型两种类型信息发送到事件模型库。
[0074]2、事件模型库
[0075]I)事件模型库接收扫描器发送来的针对CPU、内存利用率型两种类型信息,并根据这两种类型选取事件Al、事件A2 ;
[0076]2)事件模型库为事件A1、A2分别设置了一个事件控制块(ECB),对应事件标识、事件参数、事件状态、事件优先级、事件注入标准时间和事件注入失败计数器顺序,Al的ECB信息为:Al、al、无状态、0、ls、0 ;A2的ECB信息为:A2、a2、无状态、l、ls、0。另外,设定事件B已经注入失败一次,处于注入失败阻塞队列队首,B的ECB信息为:B、b、阻塞状态、2、2s、
1
[0077]3)当I)执行完成后,事件模型库将生成的批量型事件序列A1、A2 (均设置有ECB)发送给排队器。
[0078]3、排队器和后备队列寄存器[0079]I)排队器将从事件模型库获取的批量型事件序列Al、A2按照ECB中优先级的大小排序,因Al的优先级为0、A2的优先级为I,故生成以Al队首、A2为队尾的事件后备队列。其中,事件后备队列长度m = 5;
[0080]2)排队器将事件后备队列发送到后备队列寄存器。由此,事件注入器中的就绪调度引擎可按优先级依次调度Al、A2到事件就绪队列中。
[0081]4、事件注入器及其任务调度流程
[0082]事件注入器包括事件注入引擎、就绪调度引擎、多级反馈队列引擎、阻塞调度引擎、事件就绪队列集合和注入失败阻塞队列。
[0083]其中,事件就绪队列集合包括事件就绪队列S1,事件就绪队列S2,…,事件就绪队列sk,事件就绪队列长度均为η = 5,调度优先级为Si>S2>S3>…〉Sk,时间片设置规则为TSi+1= 2TSi(i e [l,k)),Tsl为事件注入引擎在注入每个事件时根据其ECB获得的标准时间片,注入失败阻塞队列长度P = 5。以上k、n、1、p均是正整数。此外,当注入失败阻塞队列和事件后备队列同时存在待调度事件时,就绪调度引擎优先调度注入失败阻塞队列中的事件。
[0084]本发明的事件注入的任务调度流程分4.1,4.2两个层次,流程分别如下: [0085]4.1批量型事件由就绪调度引擎调度进入事件注入器流程
[0086]I)此时,事件就绪队列S1为空且事件后备队列存在事件A1、A2。就绪调度引擎首先向阻塞调度引擎发送调度信号,阻塞调度引擎接收到就绪调度引擎发送来的信号后检查发现注入失败阻塞队列存在事件B,故跳转到3);
[0087]2)就绪调度引擎在接收到阻塞调度引擎发送来的注入失败阻塞队列已为空反馈信号后,按照FCFS (先来先调度)算法从事件注入器外的事件后备队列队首依次取下事件A1、A2,入队到事件就绪队列S1队尾,并将A1、A2的ECB中事件状态设置为就绪状态。此时,事件后备队列和注入失败阻塞队列均为空,就绪调度引擎暂时停止调度;
[0088]3)就绪调度引擎在接收到阻塞调度引擎发送来的反馈信号后优先调度注入失败阻塞队列中的事件B。阻塞调度引擎根据事件ECB中的注入失败次数与j的关系判断进一步调度方式,设定j = 2。由于事件B的注入失败次数为1,故跳转到4);当事件B再次注入失败,即注入失败次数变为2时,跳转到5);
[0089]4)阻塞调度引擎取下事件B并调度给就绪调度引擎,就绪调度引擎将事件B入队到31中,并将其ECB中的事件状态由阻塞状态更改为就绪状态。此时,由于事件就绪队列S1未满且事件后备队列存在事件A1、A2,故跳转到2);
[0090]5)阻塞调度引擎根据事件B的ECB中事件标识给事件模型库发送重新获取事件B及其ECB的信号,然后,阻塞调度引擎从注入失败阻塞队列取下并删除事件B,直到注入失败阻塞队列空为止。就绪调度引擎对该事件重新执行4.1完整调度过程。
[0091]4.2事件注入器内事件注入的任务调度流程
[0092]I)多级反馈调度引擎按照FCFS(先来先调度)算法取下事件就绪队列S1队首事件B并发送到事件注入引擎;
[0093]2)事件注入引擎将事件B的ECB中事件状态设置为注入状态,并根据事件B的参数b对相应目标实施注入;
[0094]3)事件注入引擎监视注入过程,包括注入耗时和注入成功与否。事件B在其注入过程中再次注入失败,不能继续注入,故跳转到6);事件Al在其注入标准时间Is内成功完成注入,跳转到4);事件A2在其注入标准时间Is未成功完成注入,跳转到5);
[0095]4)事件注入引擎将事件Al的ECB中事件状态设置为完成状态,将其撤离事件注入器,即事件Al注入完成。事件注入引擎恢复自身现场状态,准备注入下一事件;
[0096]5)事件注入引擎向多级反馈调度引擎发送注入未完成信号,并将事件A2退还给多级反馈队列引擎,恢复自身现场状态准备注入下一事件。多级反馈队列引擎收到注入未完成信号后,接收事件A2,此时事件B已再次进入S1,则多级反馈队列再次将事件B调度给事件注入引擎,然后,将事件A2调度到事件就绪队列S2的队尾。此时,事件B在其注入标准时间2s内成功完成,则事件注入引擎将事件B的ECB中事件状态设置为完成状态,将其撤离事件注入器,即事件B注入完成。当S1空时,多级反馈调度引擎再次调度S2中的事件A2给事件注入引擎,根据时间片设置规则,事件注入引擎在其注入标准时间的2倍,即4s内成功完成,则事件注入引擎将事件A2的ECB中事件状态设置为完成状态,将其撤离事件注入器,即事件A2注入完成;
[0097]6)此时,事件注入引擎无需等待时间片结束,直接将事件B调度到注入失败阻塞队列中,同时将其ECB中的事件状态设置为阻塞状态,注入失败次数为2。首先,由于j =2,当就绪调度引擎向阻塞调度引擎发送调度信号时,阻塞调度引擎根据事件B的事件标识B直接给事件模型库发送重新获取事件B及其ECB的信号,其次,阻塞调度引擎从注入失败阻塞队列取下并删除事件B,直到注入失败阻塞队列空为止。之后,事件B由事件模型库重新生成,此时其ECB信息为出、13、无状态、2、28、0,并经由排队器、后备队列寄存器后,如前述4.1的调度流程,经就绪调度引擎再次调度进入事件就绪队列S1队尾。
[0098]本发明所提出的一种基于多级反馈队列的事件注入引擎的任务调度方法,将多级反馈队列与多层次调度模型机制相融合,为批量型事件中的每个事件均设置事件控制块ECB,强化了对事件的管理和调度,实现了按照优先级原则进行事件注入的优化任务调度方式。具有适用范围广、反馈开销小、兼容性好、事件注入引擎利用率高,更加灵活、高效、合理的实现批量型事件注入等优点。可广泛应用于国防工业和国民经济的各种关键任务系统中的事件注入【技术领域】,特别是对批量型事件实施事件注入等情形。
【权利要求】
1.一种基于多级反馈队列的事件注入引擎的任务调度方法,其特征在于: (1)扫描器根据用户指令或系统控制信号扫描目标系统,返回包括目标系统所有脆弱点类型的扫描结果; (2)根据所有脆弱点或用户需求分析扫描结果,确定需要注入的批量型事件的类型; (3)扫描器将需要注入的批量型事件类型信息发送到事件模型库; (4)事件模型库接收扫描器发送来的批量型事件类型信息,并根据批量型事件的类型选取相应的事件; (5)事件模型库为每个事件设置一个事件控制块ECB,ECB作为每个事件在事件注入引擎的任务调度过程中存在的标志,保存事件注入器对事件进行管理和调度所需的全部信息,包括事件标识、事件参数、事件状态、事件优先级、事件注入标准时间和事件注入失败计数器; (6)当步骤(4)执行完成后,事件模型库将生成的批量型事件序列发送给排队器; (7)排队器将从事件模型库获取的批量型事件序列按照每个事件的ECB中优先级的大小排序,生成以优先级最高的事件为队首、优先级最低的事件为队尾的事件后备队列,事件后备队列长度为m ; (8)排队器将事件后备队列发送到后备队列寄存器,事件注入器中的就绪调度引擎可最快找到并调度优先级最高的事件到事件就绪队列中; (9)批量型事件由就绪调度引擎调度进入事件注入器: (9.1)当事件就绪队列S1未满,队列长度小于n,且事件后备队列不为空时,就绪调度引擎首先向阻塞调度引擎发送调度信号,阻塞调度引擎接收到就绪调度引擎发送来的调度信号后检查注入失败阻塞队列是否为空;若注入失败阻塞队列为空,跳转到(9.2);若不空,即注入失败阻塞队列中存在已注入失败且等待再次调度的事件,跳转到(9.3); (9.2)就绪调度引擎在接收到阻塞调度引擎发送来的反馈信号后,按照FCFS算法从事件注入器外的事件后备队列队首取下一个事件,入队到事件就绪队列S1队尾,并将其ECB中的事件状态设置为就绪状态,直到S1队满或事件后备队列空为止; (9.3)就绪调度引擎在接收到阻塞调度引擎发送来的反馈信号后优先调度注入失败阻塞队列中的事件,阻塞调度引擎根据事件ECB中的注入失败计数器判断进一步调度方式,若注入失败阻塞队列队首事件注入失败次数小于正整数j次,跳转到(9.4),若队首事件注入失败次数大于等于j次,则跳转到(9.5); (9.4)阻塞调度引擎取下该事件并调度给就绪调度引擎,就绪调度引擎将该事件入队到S1队尾,并将其ECB中的事件状态设置为就绪状态,直到S1队满或注入失败阻塞队列空为止; (9.5)阻塞调度引擎根据其ECB中的事件标识直接给事件模型库发送重新获取该事件及其ECB的信号,阻塞调度引擎从注入失败阻塞队列取下并删除该事件,直到注入失败阻塞队列空为止,就绪调度引擎对该事件重新执行(9.1)完整调度过程。 (10)事件注入器内事件注入的任务调度: (10.1)多级反馈调度引擎按照FCFS算法取下事件就绪队列Si队首事件并发送到事件注入引擎; (10.2)事件注入引擎将事件ECB中的事件状态设置为注入状态,并根据事件参数对相应目标实施注入; (10.3)事件注入引擎监视注入过程,包括注入耗时和注入成功与否:若事件根据ECB在对应的时间片内成功完成注入,跳转到(10.4);若事件根据ECB中在对应的时间片内未成功完成注入,跳转到(10.5);若事件在注入过程中注入失败,不能继续注入,则跳转到(10.6); (10.4)事件注入引擎将事件ECB中 事件状态设置为完成状态,将事件撤离事件注入器,恢复事件注入引擎自身现场状态,准备注入下一事件; (10.5)事件注入引擎向多级反馈调度引擎发送注入未完成信号,并将事件退还给多级反馈队列引擎,恢复自身现场状态准备注入下一事件,多级反馈队列引擎收到注入未完成信号后,接收退回的事件,从事件就绪队列Si调度下一事件给事件注入引擎,再将被退回的事件调度到事件就绪队列Si+1的队尾; (10.6)事件注入引擎无需等待时间片结束,直接将失败事件调度到注入失败阻塞队列队尾,将ECB中的事件状态设置为阻塞状态,注入失败计数器加I ;当事件处在注入失败阻塞队列队首,且就绪调度引擎向阻塞调度引擎发送调度信号时,阻塞调度引擎根据事件ECB中的注入失败次数判断进一步调度方式。
2.根据权利要求1所述的一种基于多级反馈队列的事件注入引擎的任务调度方法,其特征在于,时间片设置及调度方法是:当事件在队列Si, i是正整数,i e [I, k)中时,根据TSi+1 = 2TSi,Tsl为ECB中的一个标准时间片,若事件注入引擎对事件在对应时间片内未成功完成注入,则将事件放入队列Si+1队尾,当一个事件依次降到Sk队列时,则事件注入引擎便采取2H倍的标准时间片轮转方式持续实施注入,直到事件完成注入。
3.根据权利要求1所述的一种基于多级反馈队列的事件注入引擎的任务调度方法,其特征在于,在步骤(10.5)中:当S1~Sp1队列均空时,多级反馈调度引擎才调度Si队列中的事件给事件注入引擎,当事件注入引擎在对队列Si中事件实施注入时,若有新的事件进入优先权更高的队列,则新事件将经由多级反馈调度引擎向事件注入引擎发送抢占信号,事件注入引擎接收到抢占信号后暂停注入,向多级反馈调度引擎发送注入未完成信号,将事件退还给多级反馈队列引擎,并恢复自身现场状态,再为高优先权事件实施注入,多级反馈调度引擎将原事件放回原队列Si的末尾,而不是下一级队列的末尾。
【文档编号】G06F9/48GK103970603SQ201410216140
【公开日】2014年8月6日 申请日期:2014年5月21日 优先权日:2014年5月21日
【发明者】王慧强, 何占博, 冯光升, 吕宏武, 郭方方, 林俊宇 申请人:哈尔滨工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1