CN102622300A - 多任务系统中死循环或类死循环的检测方法 - Google Patents

多任务系统中死循环或类死循环的检测方法 Download PDF

Info

Publication number
CN102622300A
CN102622300A CN2012101145028A CN201210114502A CN102622300A CN 102622300 A CN102622300 A CN 102622300A CN 2012101145028 A CN2012101145028 A CN 2012101145028A CN 201210114502 A CN201210114502 A CN 201210114502A CN 102622300 A CN102622300 A CN 102622300A
Authority
CN
China
Prior art keywords
endless loop
task
control block
type
infinite loop
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012101145028A
Other languages
English (en)
Other versions
CN102622300B (zh
Inventor
何三波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Maipu Communication Technology Co Ltd
Original Assignee
Maipu Communication Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Maipu Communication Technology Co Ltd filed Critical Maipu Communication Technology Co Ltd
Priority to CN201210114502.8A priority Critical patent/CN102622300B/zh
Publication of CN102622300A publication Critical patent/CN102622300A/zh
Application granted granted Critical
Publication of CN102622300B publication Critical patent/CN102622300B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及计算机技术。本发明解决了现有检测死循环或类死循环任务时对系统处理器资源消耗过多和检测较为复杂的问题,提供了一种多任务系统中死循环或类死循环的检测方法,其技术方案可概括为:首先生成一个最高优先级的死循环监控任务和一个最低优先级的死循环检测任务,死循环检测任务每睡眠一段时间后运行记录当前时刻,死循环监控任务每睡眠一定时间后运行检测系统是否出现死循环或类死循环,若有则定位并挂起死循环任务或类死循环任务,然后系统对挂起的死循环任务或类死循环任务进行定位和调试,记录信息并后续处理,最后释放处理资源。本发明的有益效果是:占用处理器资源低,适用于非时间片轮转的优先级抢占式操作系统。

Description

多任务系统中死循环或类死循环的检测方法
技术领域
本发明涉及计算机技术,特别涉及计算机操作系统的技术。
背景技术
在计算机操作系统中,有关死循环的检测及其处理是非常重要的技术,专利号为01112526.8,名称为《实时多任务下死循环下死循环处理的方法》描述了一种在实时多任务系统中,任务异常运行出现类死循环或者死循环的一种监控和处理方法。该专利的基本思想是使用系统时钟中断服务程序ISR和任务切换钩子函数来监控任务的运行时间,若任务运行时间大于某个阀值则认为该任务出现了死循环,此方法将大量消耗处理器资源。类似的系统时钟中断和任务切换挂钩函数来检测死循环的方法都存在相同的缺点。
发明专利号为:200610020335.5,名称为《一种死循环或者类死循环任务检测方法》描述了使用最高优先级的监控任务最低优先级的测试任务来检测死循环的方法,规避了系统时钟中断服务程序检测死循环消耗大量处理器资源的缺点,但该方法需要不停的调整测试任务的优先级,方法仍然比较复杂。
发明内容
本发明的目的就是克服目前检测死循环或类死循环任务时对系统处理器资源消耗过多和检测较为复杂的缺点,提供一种多任务系统中死循环或类死循环的检测方法。
本发明基于非时间片轮转的优先级抢占式操作系统。
本发明解决其技术问题,采用的技术方案是,多任务系统中死循环或类死循环的检测方法,其特征在于,包括以下步骤:
步骤1.系统生成一个最高优先级的死循环监控任务和一个最低优先级的死循环检测任务;
步骤2.死循环检测任务每睡眠一段时间后运行,运行时记录当前时刻;
步骤3.死循环监控任务每睡眠一定时间后运行,运行时检测系统是否出现死循环或类死循环,若是则进入步骤4,若不是则进入睡眠状态;
步骤4.死循环监控任务定位并挂起死循环任务或类死循环任务,死循环监控任务进入睡眠状态;
步骤5.系统对挂起的死循环任务或类死循环任务进行定位和调试,记录信息并后续处理;
步骤6.释放处理资源。
具体的,步骤2中,所述一段时间为1秒。
进一步的,步骤3中,所述一定时间为120秒。
具体的,步骤3中,所述运行时检测系统是否出现死循环或类死循环的方法为:死循环监控任务判断其运行的当前时刻与死循环检测任务运行时记录的时刻之差是否大于设置的时间阀值,若大于时间阀值则判断为系统出现死循环,若不大于时间阀值则认为系统当前未出现死循环。
再进一步的,步骤3中,所述设置的时间阀值为600秒。
具体的,所述步骤4包括以下步骤:
步骤41.死循环监控任务判断当前是否有死循环标志,进入步骤45,若没有则进入步骤42;
步骤42.死循环监控任务将死循环任务控制块变量清零,并向系统注册任务切换钩子函数;
步骤43.死循环监控任务设置死循环标志,并进入睡眠状态;
步骤44.系统任务切换,任务切换钩子函数执行,并在死循环任务控制块变量中记录当前死循环或类死循环任务控制块;
步骤45.死循环监控任务检测死循环任务控制块变量,该变量记录的任务控制块即为死循环任务控制块。
再进一步的,步骤44中,任务切换钩子函数执行,并在死循环任务控制块变量中记录当前死循环任务控制块或类死循环任务控制块的方法为:系统中死循环任务或类死循环任务以及优先级高于该死循环任务或类死循环任务优先级的任务将会得到调度,任务之间的切换会调用注册的任务切换钩子函数,任务切换钩子函数在被调用运行时,对于将被调度的任务,若死循环任务控制块变量还没有记录,则记录即将被调度任务的任务控制块;否则,若将被调度任务的任务控制块中的优先级小于已经记录的死循环任务控制块变量中的任务控制块的优先级,则将死循环任务控制块变量记录为即将被调度任务的任务控制块。
具体的,步骤6中,所述释放处理资源包括注销已经注册的任务切换钩子函数、清除死循环标志及清除死循环任务控制块变量。
再进一步的,步骤5中,系统对挂起的死循环任务或类死循环任务进行定位的方法为:利用用户接口函数记录日志信息,并利用操作系统提供的标准接口函数分析死循环或者类死循环任务堆栈,精确定位死循环出现的位置。
具体的,所述用户接口函数为计算机设备厂家自己实现的接口函数。
本发明的有益效果是,通过上述多任务系统中死循环或类死循环的检测方法,在基于非时间片轮转的优先级抢占式操作系统中,只需要启动一个最高优先级的死循环监控任务和最低优先级的死循环检测任务,就可以检测到系统是否出现了死循环任务或类死循环任务,在系统没有出现死循环任务的情况下,由于死循环监控任务和死循环检测任务均为每睡眠其设定的时间后才运行,占用处理器资源很低;任务切换钩子函数执行时死循环任务控制块变量记录优先级最低任务的任务控制块,这样就可以具体定位到死循环任务,定位死循环的方法简单;最后向系统报告死循环任务,利用系统提供的标准接口函数对死循环任务的堆栈进行分析,定位到出现死循环的具体代码位置,方便程序员排错,并且在定位到死循环任务后需要注销任务切换钩子函数以减少对处理器资源的消耗。
附图说明
图1是本发明死循环监控任务运行的流程图。
图2是本发明死循环检测任务运行的流程图。
具体实施方式
下面结合实施例及附图,详细描述本发明的技术方案。
本发明死循环监控任务运行的流程图参见图1,本发明死循环检测任务运行的流程图参见图2。本发明的多任务系统中死循环或类死循环的检测方法中,首先系统生成一个最高优先级的死循环监控任务和一个最低优先级的死循环检测任务,死循环检测任务每睡眠一段时间后运行,运行时记录当前时刻,死循环监控任务每睡眠一定时间后运行,运行时检测系统是否出现死循环或类死循环,若不是则进入睡眠状态,若是则死循环监控任务定位并挂起死循环任务或类死循环任务,死循环监控任务进入睡眠状态,然后系统对挂起的死循环任务或类死循环任务进行定位和调试,记录信息并后续处理,最后释放处理资源。
实施例
本发明利用在非时间片轮转的优先级抢占式操作系统中,高优先级任务只要不阻塞或者主动出让处理器,那么低优先级任务或者相同优先级的其它任务就不能得到调度的原理。本发明在实施过程中生成具有最高优先级的死循环监控任务和具有最低优先级的死循环测试任务。本例中,设系统中任务的优先级为0~100,优先级0最低,优先级100最高;设置死循环监控任务的优先级为100,死循环检测任务的优先级为0。
vxWorks操作系统是一种非时间片轮转的优先级抢占式操作系统,本例以它为例。
在vxWorks操作系统,任务控制块是操作系统管理任务的数据结构,任务控制块中有优先级字段,在本发明中,对于任务T,标记任务控制块为Tb,由任务控制块可以知道任务的优先级,标记优先级为Tbp。
设置死循环任务的任务控制块变量为TDLb。
为保证死循环监控任务和死循环检测任务不占用大量的处理器资源,死循环监控任务和死循环检测任务都周期的运行,即每睡眠固定周期运行一次。其中,死循环监控任务每睡眠较长周期运行一次,如图1,死循环检测任务运行每睡眠较短周期运行一次,如图2。这里的周期是一个经验值,如死循环监控任务的每睡眠120秒时间运行一次,死循环检测任务的每睡眠1秒时间运行一次,死循环监控制任务睡眠时间应该比死循环检测任务的睡眠时间大很多。
第一步,死循环检测任务每次运行时记录运行的时刻,死循环监控任务每次运行时比较当前时刻与死循环检测任务运行时记录的时刻相比较,可以计算出死循环检测任务有多长时间没有运行,即有多长时间没有得到调度,若这个时间比较长,超过了预先设置的时间阀值,则认为系统有工作任务出现了死循环或者类死循环,所述时间阀值应该比死循环监控任务睡眠时间大很多,可以为600秒。如果出现死循环则执行第二步,否则执行第五步。
第二步,死循环监控任务判断当前是否有死循环标志,若有则转第四步,若没有则直接进入第三步。
第三步,清除死循环任务控制块变量TDb,即死循环任务控制块变量TDb清零,向系统注册任务切换钩子函数,设置死循环标志。
死循环监控任务做完上述事情后将主动出让处理器资源,即进入睡眠状态,系统中各个优先高于死循环任务或类死循环任务的控制块优先级的工作任务和死循环任务将被得到调度,钩子函数将被多次执行。当钩子函数执行时,对于将被调度的任务T1来说,若变量TDLb还没有记录,则将TDLb记录为任务T1的任务控制块,TDLb=T1b;若已经记录,则比较任务控制块T1b和控制块TDLb的优先级,如果T1bp<TDLbp,则将TDLb记录成任务T1的任务控制块,即TDLb=T1b,如果T1bp>=TDLbp,则TDLb不变。
这样经过一段时间后,死循环任务控制块变量TDb记录的就是死循环任务的控制块或类死循环任务的控制块,即挂起当前死循环任务或类死循环任务。
当监控任务睡眠到期再次得到调度时则执行第一步。
第四步,系统检测死循环任务控制块变量TDLb,该死循环任务控制块变量记录的任务控制块就是死循环任务或者类死循环任务的任务控制块,利用用户接口函数记录日志信息,并利用操作系统提供的标准接口函数分析所述死循环或类死循环任务堆栈,精确定位死循环出现的位置,这里,用户接口函数为计算机设备厂家自己实现的接口,在系统精确定位死循环任务后,对其进行调试、记录信息并进行后续处理。
第五步,注销已经注册的钩子函数,清除死循环标志,清除死循环任务控制块变量。
本发明特别适合于vxWorks实时多任务操作系统,但不限于实时多任务操作系统,其思想适用于其他基于优先级的操作系统。

Claims (10)

1.多任务系统中死循环或类死循环的检测方法,其特征在于,包括以下步骤:
步骤1.系统生成一个最高优先级的死循环监控任务和一个最低优先级的死循环检测任务;
步骤2.死循环检测任务每睡眠一段时间后运行,运行时记录当前时刻;
步骤3.死循环监控任务每睡眠一定时间后运行,运行时检测系统是否出现死循环或类死循环,若是则进入步骤4,若不是则进入睡眠状态;
步骤4.死循环监控任务定位并挂起死循环任务或类死循环任务,死循环监控任务进入睡眠状态;
步骤5.系统对挂起的死循环任务或类死循环任务进行定位和调试,记录信息并后续处理;
步骤6.释放处理资源。
2.如权利要求1所述的多任务系统中死循环或类死循环的检测方法,其特征在于,步骤2中,所述一段时间为1秒。
3.如权利要求1所述的多任务系统中死循环或类死循环的检测方法,其特征在于,步骤3中,所述一定时间为120秒。
4.如权利要求1所述的多任务系统中死循环或类死循环的检测方法,其特征在于,步骤3中,所述运行时检测系统是否出现死循环或类死循环的方法为:死循环监控任务判断其运行的当前时刻与死循环检测任务运行时记录的时刻之差是否大于设置的时间阀值,若大于时间阀值则判断为系统出现死循环,若不大于时间阀值则认为系统当前未出现死循环。
5.如权利要求4所述的多任务系统中死循环或类死循环的检测方法,其特征在于,步骤3中,所述设置的时间阀值为600秒。
6.如权利要求1或2或3或4或5所述的多任务系统中死循环或类死循环的检测方法,其特征在于,所述步骤4包括以下步骤:
步骤41.死循环监控任务判断当前是否有死循环标志,若有进入步骤45,若没有则进入步骤42;
步骤42.死循环监控任务将死循环任务控制块变量清零,并向系统注册任务切换钩子函数;
步骤43.死循环监控任务设置死循环标志,并进入睡眠状态;
步骤44.任务切换钩子函数执行,并在死循环任务控制块变量中记录当前死循环任务控制块或类死循环任务控制块,即挂起当前死循环任务或类死循环任务;
步骤45.系统检测死循环任务控制块变量,该变量记录的任务控制块即为死循环任务控制块。
7.如权利要求6所述的多任务系统中死循环或类死循环的检测方法,其特征在于,步骤44中,任务切换钩子函数执行,并在死循环任务控制块变量中记录当前死循环任务控制块或类死循环任务控制块的方法为:系统中死循环任务或类死循环任务以及优先级高于该死循环任务或类死循环任务优先级的任务将会得到调度,任务之间的切换会调用注册的任务切换钩子函数,任务切换钩子函数在被调用运行时,对于将被调度的任务,若死循环任务控制块变量还没有记录,则记录即将被调度任务的任务控制块;否则,若将被调度任务的任务控制块中的优先级小于已经记录的死循环任务控制块变量中的任务控制块的优先级,则将死循环任务控制块变量记录为即将被调度任务的任务控制块。
8.如权利要求6所述的多任务系统中死循环或类死循环的检测方法,其特征在于,步骤6中,所述释放处理资源包括注销已经注册的任务切换钩子函数、清除死循环标志及清除死循环任务控制块变量。
9.如权利要求1或2或3或4或5所述的多任务系统中死循环或类死循环的检测方法,其特征在于,步骤5中,系统对挂起的死循环任务或类死循环任务进行定位的方法为:利用用户接口函数记录日志信息,并利用操作系统提供的标准接口函数分析死循环或者类死循环任务堆栈,精确定位死循环出现的位置。
10.如权利要求9所述的多任务系统中死循环或类死循环的检测方法,其特征在于,所述用户接口函数为计算机设备厂家自己实现的接口。
CN201210114502.8A 2012-04-18 2012-04-18 多任务系统中死循环或类死循环的检测方法 Active CN102622300B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210114502.8A CN102622300B (zh) 2012-04-18 2012-04-18 多任务系统中死循环或类死循环的检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210114502.8A CN102622300B (zh) 2012-04-18 2012-04-18 多任务系统中死循环或类死循环的检测方法

Publications (2)

Publication Number Publication Date
CN102622300A true CN102622300A (zh) 2012-08-01
CN102622300B CN102622300B (zh) 2015-03-25

Family

ID=46562227

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210114502.8A Active CN102622300B (zh) 2012-04-18 2012-04-18 多任务系统中死循环或类死循环的检测方法

Country Status (1)

Country Link
CN (1) CN102622300B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106250316A (zh) * 2016-08-09 2016-12-21 东软集团股份有限公司 一种死循环检测方法及装置
CN106294108A (zh) * 2015-05-27 2017-01-04 腾讯科技(深圳)有限公司 应用程序测试方法及装置
CN106326066A (zh) * 2015-07-07 2017-01-11 北京东土科技股份有限公司 一种嵌入式系统任务响应性能的监测调整的方法及其系统
CN106844151A (zh) * 2017-01-04 2017-06-13 南京国电南自电网自动化有限公司 一种VxWorks系统的网络任务异常检测方法
CN108491311A (zh) * 2018-04-02 2018-09-04 深圳还是威健康科技有限公司 一种实时操作系统的看门狗监测方法及终端
CN111159051A (zh) * 2019-12-31 2020-05-15 北京天融信网络安全技术有限公司 死锁检测方法、装置、电子设备及可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006011686A (ja) * 2004-06-24 2006-01-12 Fuji Xerox Co Ltd マルチタスクシステムの異常検知方法
CN1811730A (zh) * 2006-02-22 2006-08-02 迈普(四川)通信技术有限公司 一种死循环或类死循环任务检测方法
CN101158913A (zh) * 2007-11-15 2008-04-09 上海华为技术有限公司 一种检测任务死循环的方法及系统
CN101169753A (zh) * 2007-11-26 2008-04-30 中兴通讯股份有限公司 一种记录导致系统异常的函数的方法
CN101504615A (zh) * 2009-03-24 2009-08-12 杭州华三通信技术有限公司 为任务死循环提供定位信息的方法和装置
CN102141947A (zh) * 2011-03-30 2011-08-03 东方通信股份有限公司 一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统
CN103164332A (zh) * 2011-12-15 2013-06-19 迈普通信技术股份有限公司 死循环任务的检测及处理方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006011686A (ja) * 2004-06-24 2006-01-12 Fuji Xerox Co Ltd マルチタスクシステムの異常検知方法
CN1811730A (zh) * 2006-02-22 2006-08-02 迈普(四川)通信技术有限公司 一种死循环或类死循环任务检测方法
CN101158913A (zh) * 2007-11-15 2008-04-09 上海华为技术有限公司 一种检测任务死循环的方法及系统
CN101169753A (zh) * 2007-11-26 2008-04-30 中兴通讯股份有限公司 一种记录导致系统异常的函数的方法
CN101504615A (zh) * 2009-03-24 2009-08-12 杭州华三通信技术有限公司 为任务死循环提供定位信息的方法和装置
CN102141947A (zh) * 2011-03-30 2011-08-03 东方通信股份有限公司 一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统
CN103164332A (zh) * 2011-12-15 2013-06-19 迈普通信技术股份有限公司 死循环任务的检测及处理方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294108A (zh) * 2015-05-27 2017-01-04 腾讯科技(深圳)有限公司 应用程序测试方法及装置
CN106294108B (zh) * 2015-05-27 2020-04-28 腾讯科技(深圳)有限公司 应用程序测试方法及装置
CN106326066A (zh) * 2015-07-07 2017-01-11 北京东土科技股份有限公司 一种嵌入式系统任务响应性能的监测调整的方法及其系统
CN106326066B (zh) * 2015-07-07 2019-04-26 北京东土科技股份有限公司 一种嵌入式系统任务响应性能的监测调整的方法及其系统
CN106250316A (zh) * 2016-08-09 2016-12-21 东软集团股份有限公司 一种死循环检测方法及装置
CN106844151A (zh) * 2017-01-04 2017-06-13 南京国电南自电网自动化有限公司 一种VxWorks系统的网络任务异常检测方法
CN106844151B (zh) * 2017-01-04 2019-11-12 南京国电南自电网自动化有限公司 一种VxWorks系统的网络任务异常检测方法
CN108491311A (zh) * 2018-04-02 2018-09-04 深圳还是威健康科技有限公司 一种实时操作系统的看门狗监测方法及终端
CN111159051A (zh) * 2019-12-31 2020-05-15 北京天融信网络安全技术有限公司 死锁检测方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN102622300B (zh) 2015-03-25

Similar Documents

Publication Publication Date Title
CN102622300A (zh) 多任务系统中死循环或类死循环的检测方法
US20180276324A1 (en) System and method for energy usage accounting in software applications
US8495652B2 (en) IT system behavior measurement and analysis system and method thereof
US8793578B2 (en) Automating execution of arbitrary graphical interface applications
RU2017120988A (ru) Планирование и диспетчеризация заданий
US20170308373A1 (en) Orchestration of software applications upgrade using automatic hang detection
US8132170B2 (en) Call stack sampling in a data processing system
JP2020512613A5 (zh)
EP1870810A2 (en) Kernel-aware debugging system, medium, and method
CN110309024A (zh) 数据处理系统及其执行数据处理任务的方法
RU2015153190A (ru) Объединение событий геозоны
US20100017583A1 (en) Call Stack Sampling for a Multi-Processor System
CN102722434A (zh) 一种针对Linux进程调度的性能测试方法和工具
EP2052324A2 (en) Methods and products for determining and visualizin ic behaviour
CN102226890A (zh) 一种主机批量作业数据监控方法及装置
CN101853191B (zh) 检测操作系统中任务死循环的方法及系统
CN103164332B (zh) 死循环任务的检测及处理方法
KR101203099B1 (ko) 운영체제 태스크의 실행시간 모니터링 방법 및 시스템
US9176783B2 (en) Idle transitions sampling with execution context
US8407674B2 (en) Detecting thread starvation
CN102495793B (zh) 一种检测死循环任务的方法
CN100557576C (zh) 操作系统故障检测的方法和装置
Li et al. eDelta: Pinpointing energy deviations in smartphone apps via comparative trace analysis
US20140033206A1 (en) Monitoring thread starvation
WO2009147738A1 (ja) 情報処理装置及びその制御方法並びにモニタプログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant