一种检测任务死循环的方法及系统技术方案

技术编号:2831804 阅读:277 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种检测任务死循环的方法,包括:在基于优先级任务调度策略的系统中,预先设置最低优先级的死循环检测任务;该系统的时钟中断时,检测未运行所述死循环检测任务的时长是否大于预先设定的阈值,是则判定该系统出现任务死循环。本发明专利技术还公开了一种检测任务死循环的系统。使用本发明专利技术确保在基于优先级调度策略的系统中,不会发生低优先级任务死循环漏检测的情况,且任务死循环的检测不依赖于系统的任务调度策略。

【技术实现步骤摘要】

本专利技术涉及软件
,具体涉及一种检测任务死循环的方法及系统
技术介绍
随着软件应用领域的不断扩大和功能的不断增强,中央处理单元(CPU, Central Processing Unit)的处理能力越来越强,软件代码量越来越大,实现 也越来越复杂。同时为了提高系统的实时性和吞吐能力,软件系统一般都采 用多任务设计。现在操作系统的任务调度通常是基于优先级的任务调度,常见调度策略 分为优先级非抢占式调度、基于时间片轮转的优先级抢占式调度和非基于 时间片轮转的优先级抢占式调度。但不管何种调度策略,任务调度一般都是 通过时钟中断(例如系统时钟每10ms产生一个中断请求,触发系统执行相 应的中断服务例程)实现的。在产生每个时钟中断时,系统根据任务调度策 略决定下一个时钟周期的运行任务。如果下一个时钟周期的运行任务发生变 化,则进行任务切换;这个任务切换顺序也称为任务切换轨迹。任务切换轨 迹一般是由多个任务ID组成的一个列表。由于软件实现复杂,任务较多,容易产生任务死循环,即任务执行路径 进入一个无限循环,而且此循环路径中没有主动释放CPU,从而使系统服务 能力丧失。虽然任务管理是操作系统的设计实现重点,但遗憾的是操作系统 并没有提供任务死循环的检测和处理方法。现有的一种检测和处理任务死循环的方法是,通过时钟中断检测任务运 行时长来检测死循环,并进行死循环的处理。如果时钟中断检测到任务连续运行时长超过预定的阈值,则认为该任务出现死循环,然后产生中断以记录 该任务的相关任务信息,并进行相应的处理。 该方法的具体步骤是在时钟中断时,记录当前正在运行的任务标识(ID )和对应的运行时长, 如果任务发生切换则将该任务的运行时长清零;如果时钟中断时检测发现任 务连续运行时长超过预定的阈值,则认为此任务发生死循环,进行如下处理; 否则不做任何处理;通过任务ID获取死循环任务控制块信息、寄存器信息、 堆栈信息等,通过寄存器信息荻取任务调用栈信息;然后进行记录以便进行 问题定位;定位信息记录完成后复位系统,以便恢复故障。可见,该技术方案中,在任务发生切换时,将该任务的运行时长清零, 即该方案依赖任务调度策略,因此对于优先级抢占式调度系统存在漏检测。 具体来说,如果低优先级任务出现死循环,而且高优先级任务正常运行,此 时,由于低优先级任务向高优先级任务切换时,时钟中断将低优先级任务的 运行时长清零,因此即使低优先级任务进入了死循环,也无法检测到,从而 出现低优先级任务的死循环漏检测的情况。
技术实现思路
本专利技术实施例提供一种检测任务死循环的方法,在基于优先级调度策略的 系统中,避免低优先级任务死循环的漏检测,且使任务死循环的检测不依赖于 系统的任务调度策略。本专利技术实施例还提供一种检测任务死循环的系统,在基于优先级调度策略 的系统中,避免低优先级任务死循环的漏检测,且使任务死循环的检测不依赖 于系统的任务调度策略。为达到上述目的,本专利技术实施例的技术方案是这样实现的一种4企测任务死循环的方法,包括在基于优先级任务调度策略的系统中,预先设置最低优先级的死循环检测 任务;该系统的时钟中断时,检测未运行所述死循环检测任务的时长是否大于预 先设定的阈值,是则判定该系统出现任务死循环。一种检测任务死循环的系统,包括时钟、死循环检测任务执行模块以及检 测模块,所述时钟,用于为基于优先级调度策略的系统产生时钟中断信号; 所述死循环检测任务执行模块,用于运行该基于优先级调度策略的系统中 优先级最低的死循环检测任务;所述检测模块,用于在所述时钟产生中断信号时,检测所述死循环检测判定该基于优先级调度策略的系统出现任务死循环。与现有技术相比,本专利技术实施例所提供的技术方案,在基于优先级任务 调度策略的系统中,预先设置最低优先级的死循环检测任务;该系统的时钟判定该系统出现任务死循环。由于在基于优先级任务调度策略的系统中,一 旦出现死循环任务,则最低优先级的任务一定得不到调度,因此本专利技术实施 例利用低于系统所有任务优先级的死循环检测任务未运行的时长,来检测系 统是否发生死循环,从而,避免了系统的低优先级任务死循环漏检测的情况。 同时,由于时钟中断不受任务运行状态和系统调度策略的影响,从而使 得本专利技术实施例中任务死循环的检测不受系统中任务调度策略的影响。附图说明图1为本专利技术实施例中检测任务死循环的方法流程图; 图2为本专利技术实施例中检测任务死循环的系统结构图。具体实施方式下面结合附图及具体实施例对本专利技术进行详细说明。目前,基于优先级非抢占式调度策略的系统中,当前优先级的任务运行结束后进行任务切换,切换的任务是准备就绪的优先级高于当前任务优先级 的任务。非基于时间片轮转的优先级抢占式调度策略系统中,只要优先级高 于当前任务优先级的任务已经准备就绪,则在任务调度时,例如时钟中断产 生时,系统切换到该准备就绪的较高优先级任务的运行。基于时间片轮转的 优先级抢占式调度系统中,在当前任务运行过程中,高优先级任务可以抢占, 且与当前任务优先级相同的其它任务准备就绪时,优先级相当的任务之间以 相等的时间轮流运行,它们的运行机会均等。因此,对于基于优先级的任务调度策略,系统中出现死循环时,通常是的优先级抢占式调度)或与当前任务优先级相同(基于时间片轮转的优先级 抢占式调度)的任务可以得到调度,但是优先级低于当前任务优先级的任务 得不到调度,无法运行。因此,本专利技术实施例提供一种利用上述结果进行任 务死循环;险测的方法。本专利技术实施例提供的检测任务死循环的方法,在基于优先级任务调度策略的系统中,预先设置最低优先级的死循环检测任务;当该系统的时钟中断断该系统出现任务死循环。说明。实施例一本实施例利用全局计数器和对该全局计数器进行清零的死循环检测任 务,来判断未运行死循环检测任务的时长是否大于预设的阈值。图1为本专利技术实施例中检测任务死循环的方法流程图。如图l所示,该 方法包括以下步骤步骤100:在基于优先级任务调度策略的系统中,预设一个全局计数器 C,初始值为0;预设一个系统最低优先级的死循环才企测任务TL,死循环枱r 测任务TL每执行一次就对全局计数器C执行清零操作。实际应用中,TL也可以是对全局计数器C执行减操作。步骤101:在该系统的时钟中断时,对全局计数器执行加M操作,并检 测全局计数器C的值是否大于预定的计数器阈值N,如果检测到全局计数器 C的值大于预定的计数器阈值N,则判定该系统出现任务死循环。本步骤中,该计数器阈值N对应的时长阈值是N + Mx时钟周期。如果 预设的阈值为时长阈值K,则其对应的计数器阈值为K+时钟周期xM。如果需要进一步确定系统中发生死循环的任务是哪个,则还需执行步骤102。步骤102:在该系统进行任务调度时,如果任务发生了切换,则进一步 记录系统的任务切换轨迹,例如可以在操作系统提供的任务切换钩子中记 录;当N值和M值满足以下条件时,在判定出现死循环的系统中,可以确 定任务切换轨迹中除TL之外的优先级最低的任务为死循环任务TD,然后 执行步骤103。本步骤中,任务切换轨迹的中记录的任务个数为L。当进行L+1次任务 切换时,切换后的任务记录将覆盖最早的任务记录,即第1个记录,当进行 L+2次任务切换时,本次切换后的任务记录将覆盖第2个记录,以此类本文档来自技高网
...

【技术保护点】
一种检测任务死循环的方法,其特征在于,该方法包括:在基于优先级任务调度策略的系统中,预先设置最低优先级的死循环检测任务;该系统的时钟中断时,检测未运行所述死循环检测任务的时长是否大于预先设定的阈值,是则判定该系统出现任务死循 环。

【技术特征摘要】
1、一种检测任务死循环的方法,其特征在于,该方法包括在基于优先级任务调度策略的系统中,预先设置最低优先级的死循环检测任务;该系统的时钟中断时,检测未运行所述死循环检测任务的时长是否大于预先设定的阈值,是则判定该系统出现任务死循环。2、 如权利要求l所述的方法,其特征在于,所述检测未运行死循环检测任 务的时长是否大于预先设定的阈值包括该系统的时钟中断时,对预设的全局计数器C执行加M操作,其中所述M 为正整数;运行最低优先级的死循环检测任务时,对所述全局计数器C清零; 该系统的时钟中断时,检测所述全局计数器C的值是否大于根据所述预先 设定的阈值计算得到的计数器阈值。3、 如权利要求2所述的方法,其特征在于,所述根据预先设定的阈值得到 的计数器阈值为将所述预先设定的阈值除以时钟周期,再乘以M,得到计数器阈值。4、 如权利要求l所述的方法,其特征在于,所述检测未运行死循环检测任 务的时长是否大于预先设定的阈值包括运行所述死循环;险测任务时,记录系统时间;该系统的时钟中断时,检测当前的系统时间与所述记录的系统时间之间的 差值是否大于所述预先设定的阈值。5、 如权利要求4所述的方法,其特征在于,所述系统时间为系统绝对时间 或系统相对时间。6、 如权利要求1至5中任一项所述的方法,其特征在于,该方法进一步包 括在该系统进行任务调度时,记录该系统的任务切换轨迹;该方法进一步包括当在所述任务切换轨迹中记录的任务个数不小于该系 统所有任务的个数,且所述阈值使所述任务切换轨迹至少刷新一次时,则判定 所述任务切换轨迹中除所述死循环检测任务之外的优先级最低的任务为死循环 任务。7、 如权利要求6所述的方法,其特征在于,该方法进一步包括当所述任 务切换轨迹中除所述死循环检测任务之外的优先级最低的任务有多个时,判定 所述任务切换...

【专利技术属性】
技术研发人员:邵泽强
申请(专利权)人:上海华为技术有限公司
类型:发明
国别省市:31[中国|上海]

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

1