本发明专利技术实施例公开了一种进程实时调度方法,包括:步骤A、预先设置进程任务的价值值,任务的价值值应根据任务本身的价值在进程的优先级值与当前所有进程最大优先级值之间取一个值;步骤B、当进程任务的优先级相近或相等时,比较进程任务的价值值,优先运行价值大的任务;或者,当系统过载时也比较当前所有任务的价值值,运行价值值最大的进程任务,保证系统整体价值最大化和被维持在一个可接受的水平之上。通过实施本发明专利技术,通过引入基于价值的抢占阀值,既可以在系统过载情况下,系统能保证关键任务的及时完成,维持系统性能优雅地降级,不致出现系统失效甚至崩溃,最终达到便整个系统价值最大化,还可以减少因颠簸现象造成的资源浪费。
【技术实现步骤摘要】
本专利技术涉及计算机进程调度领域,具体涉及。
技术介绍
随着L inux系统广泛应用于嵌入式系统、实时控制等领域,增强Linux内核的实 时性变得尤为重要,而Linux内核的核心是调度策略,调度策略的优化及实时性改进的根 本是调度算法,对实时调度算法的研究是实时领域的一个重要的研究领域。优先级驱动方 式是实时系统调度最常见的一种方式,根据任务的特定信息给每个任务一个优先级,当系 统需要进行调度时依据优先级选择下一个要运行的任务,保证系统公平、有效的响应完成 任务。实时调度策略可以分为三种基于优先级的调度策略、基于时间驱动的调度策略 和基于比例共享的调度策略。基于优先级的调度算法可以分为两种类型静态优先级调度 算法和动态优先级调度算法。最小裕度优先(Least Slack First)调度算法是实时系统中 比较常见的动态优先级调度算法,它是对最早截至期优先(EDF)调度算法的改进。最早时 限优先(EDF)算法是使用最多的一种动态优先级调度算法,该算法给就绪队列中的各个任 务根据它们的截止期限(Deadline)来分配优先级,具有最近的截止期限的任务具有最高 的优先级。LSF在系统中为每一个任务设定松弛时间,系统优先执行具有最小松弛时间的任 务。尽管在正常的系统负载下EDF算法和LSF算法表明了其最优性,但是在超载的情况下, 系统不可能保证所有的任务都能够满足截止期,这时EDF或者LSF算法会出现性能急剧下 降,可能导致不稳定由于错过重要任务最后期限。再者,截止期或者空闲时间任务不一定是 最关键的,在过载的情况下系统无法保证关键任务的及时完成,从而系统性能不能优雅地 降级,导致出现系统失效甚至崩溃。另外,在LSF算法中,当系统有一个以上最小裕度相近 或者相等且是系统中具有最小裕度的任务时,系统会发生频繁的任务切换,即颠簸现象,会 造成系统资源的浪费。
技术实现思路
本专利技术的目的在于提供,该算法能够保证在过载的情况 下,支持系统性能优雅地降级,不致出现系统失效甚至崩溃,使系统整体价值被最大化和被 维持在一个可接受的水平之上,同时减少颠簸现象造成的系统资源浪费。为了达到上述目的,本专利技术实施例提供了,包括步骤A、预先设置进程任务的价值值,任务的价值值应根据任务本身的价值在进程 的优先级值与当前所有进程最大优先级值之间取一个值;步骤B、当进程任务的优先级相近或相等时,比较进程任务的价值值,优先运行价 值大的任务;或者,当系统过载时也比较当前所有任务的价值值,运行价值值最大的进程任 务,保证系统整体价值最大化和被维持在一个可接受的水平之上。4所述预先设置进程任务的价值值具体为在进程控制块taSk_Struct中增加优先级相关属性任务剩余执行时间Ct,任务 提交时间Et,任务相对截至期限Dt,优先级值St,系统当前时间T,由优先级值定义公式得 St = (Et+Dt)-Ct-T ;保持LinUX2. 6内核的运行队列结构、候选任务的选取方式及实时任务优先级属 性不变,按优先级从小到大依次排列同一优先级任务;在时钟中断子程序中增加对裕度值的实时更新处理,即随着时钟周期增加任务剩 余执行时间ct,减小等待进程的优先级值st,也在时钟中断子程序中修改把价值值作为抢 占阀值的候选任务的选取操作;改进所要实现的实时调度算法,修改内核代码并重新编译,完成改进算法在系统 中的实现。所述步骤B包括B11、获取各个进程任务的优先级时间,当优先级相同时截止期靠前的任务优先级 越高;B12:判断当前系统是否存在一个以上优先级相近或相同的任务,若不存在,表明 系统任务不会发生颠簸现象,则进行步骤B18 ;B13、判断该优先级是否为当前系统最小优先级,若不是,则表明该任务不是最紧 急任务,则进行步骤B18;B14、判断该优先级是否大于0,当优先级小于0时淘汰该任务,裕度大于等于0参与调度。B15、获取这些优先级值相近或相同且其值大于等于0的任务的价值值;B16、比较这些优先级相近或相同且其值大于等于0的任务的价值值;B17、依据任务价值值的大小,依次抢占执行;B18、执行 LSF 调度。所述步骤B包括B21、当由于进程主动进入休眠状态、某个进程允许被抢占CPU或从中断或系统调 用返回到用户态等情况出现,调度时机带来,系统进入调度状态;B22、通过调度算法进行系统调度;B23、判断系统是否过载,若没有,维持现状执行;若是则按B24进行;B24、比较优先级值相近或相同且其值大于等于0的任务的价值值;B25、依据任务的价值值大小,具有最大价值值的任务优先抢占当前任务的CPU使 用权,依次类推执行;B26、判断系统是否恢复正常情况,若没有则跳到B24,以获取系统整体最大的价值 值,若正常跳到B22,系统正常运行。本专利技术通过引入基于价值的抢占阀值,既可以在系统过 载情况下,系统能保证关键任务的及时完成,维持系统性能优雅地降级,不致出现系统失效 甚至崩溃,最终达到便整个系统价值最大化,还可以减少因颠簸现象造成的资源浪费。本专利技术实施例通过引入基于价值的抢占阀值,既可以在系统过载情况下,系统能 保证关键任务的及时完成,维持系统性能优雅地降级,不致出现系统失效甚至崩溃,最终达 到便整个系统价值最大化,还可以减少因颠簸现象造成的资源浪费。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。图1为本专利技术实施例中的进程实时调度方法流程图;图2为本专利技术实施例中的预先设置进程任务的价值值方法流程图;图3为本专利技术实施例中的改进所要实现的实时调度算法流程图;图4为本专利技术实施例中的改进所要实现的实时调度算法另一流程图。具体实施例方式本专利技术实施例中提供了,其首先通过任务的价值值确定 任务价值,即任务的关键性,该任务相对于任务集中其他任务的重要程度。把任务的价值值 作为抢占阀值,是改进算法的关键。抢占阀值直接影响到任务切换的频率,也影响到任务截 止期的错失率,还影响到CPU的有效利用率。如果任务的价值值大于当前所有进程最大优 先级值,则调度算法退化为非抢占模型。若任务的价值值小于进程的裕度(优先级值),则 失去了赋予任务价值做法的意义。具体1的可以参阅图1中的流程图,包括SlOl 预先设置进程任务的价值值,任务的价值值应根据任务本身的价值在进程 的优先级值与当前所有进程最大优先级值之间取一个值;S102 当进程任务的优先级相近或相等时,比较进程任务的价值值,优先运行价值 大的任务;或者,当系统过载时也比较当前所有任务的价值值,运行价值值最大的进程任 务,保证系统整体价值最大化和被维持在一个可接受的水平之上。综上所述,任务的价值值应根据任务本身的价值在进程的裕度(优先级值)与当 前所有进程最大优先级值之间取一个值。每个任务除了按裕度分配优先级,还有一个价值 值,从而构成一个双优先级系统。双优先级系统即当任务的富裕度相近或相等时,比较任务 的价值值,优先运行价值大的任务,它可以减少颠簸现象造成的系统资源浪费。当系统过载 时也比较当前所有任务的价值值,运行价值本文档来自技高网...
【技术保护点】
一种进程实时调度方法,其特征在于,包括:步骤A、预先设置进程任务的价值值,任务的价值值应根据任务本身的价值在进程的优先级值与当前所有进程最大优先级值之间取一个值;步骤B、当进程任务的优先级相近或相等时,比较进程任务的价值值,优先运行价值大的任务;或者,当系统过载时也比较当前所有任务的价值值,运行价值值最大的进程任务,保证系统整体价值最大化和被维持在一个可接受的水平之上。
【技术特征摘要】
【专利技术属性】
技术研发人员:罗笑南,唐青华,傅明,
申请(专利权)人:中山大学,
类型:发明
国别省市:81[中国|广州]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。