单板任务异常检测及处理方法

文档序号:6547213阅读:483来源:国知局
专利名称:单板任务异常检测及处理方法
技术领域
本发明涉及实时多任务系统,尤指一种单板任务异常检测及处理方法。
背景技术
目前实时多任务系统已经在各个领域得到越来越广泛的应用。所述实时多任务系统是根据需要由不同的任务来完成的,这些任务从宏观上来看是并发执行的。一般情况下,如果系统中的某个任务出现不可恢复的异常,如程序跑飞,数据读写错误,内存越界等,操作系统会把该任务挂起(Suspend),隔离起来,以便减少对其他任务的影响,这时如果查询该任务的状态应该为“Suspend”。
通常实时多任务系统设计中,各个单板都采用看门狗来防止CPU死机或者某个任务长时间独占CPU资源,由一个任务定时触发清狗的,如果超时没有清狗,则将导致整个系统复位,这是为了防止异常情况系统死机。但是这样的设计存在一个缺陷如果某些任务由于发生异常而被操作系统挂起,只是影响到一些或一个任务,此时由于喂狗任务是正常的,所以看门狗不起作用,则系统不会复位,但系统是不能正常运行和提供业务的。因此无法及时发现任务异常,定位问题,也就不能及时解决问题,造成系统不稳定。

发明内容
本发明解决的问题是提供一种单板任务异常检测及处理方法,有效定位任务异常问题及及时处理异常任务。
为解决上述问题,本发明单板任务异常检测方法包括启动监控任务,扫描登记列表中的待测任务;获取待测任务状态信息;判断待测任务是否异常;记录检测结果。
相应地,本发明单板任务异常处理方法包括启动监控任务,扫描系统中登记列表中的待测任务;获取待测任务状态信息;判断待测任务是否异常;如果任务异常,则执行该任务复位操作;如果该任务无法复位,则执行单板复位操作。
本发明另一单板任务异常处理方法包括启动监控任务,扫描登记列表中的待测任务;获取待测任务状态信息;判断待测任务是否异常;记录检测结果;通过用户命令从检测结果中获取记录的任务异常信息。
在单板初始化时创建监控任务。所述监控任务定时启动。任务状态信息通过调用待测任务对应的任务控制块获得或通过调用函数TaskinfoGet()获得指定任务状态信息。
任务复位操作通过系统调用直接复位该任务或者先删除该任务,再重新创建该任务。
与现有技术相比,本发明具有以下优点本发明为多任务实时系统增加一个独立的监控任务,这个监控任务可以应用于任何类似的实时系统中,监控其他任务的状态,判断是否异常,并对异常的任务进行处理,这样能够保证系统正常运行,延长系统的MTBF(平均故障时间),提高系统的可靠性。


图1是本发明单板任务异常检测方法;图2是本发明单板任务异常处理方法。
具体实施例方式
本发明是为多任务实时系统增加一个独立的监控任务,该监控任务可以应用于任何类似的实时系统中。这个监控任务的目的就是监视系统中其他任务的状态,判断是否正常,并对异常的任务进行处理,这样能够及时定位问题,采取措施,保证系统正常运行,延长系统的MTBF(平均故障时间),提高系统的可靠性。
请参照图1所示,本发明单板任务异常检测方法,包括启动监控任务,扫描登记列表中的待测任务;获取待测任务状态信息;判断待测任务是否异常;记录检测结果以便问题定位,例如,可以通过用户命令从检测结果中获取记录的任务异常信息,作为调测手段是很有效的。
请参照图2所示,本发明单板任务异常处理方法,包括启动监控任务,扫描系统中登记列表中的待测任务;获取待测任务状态信息;判断待测任务是否异常;如果任务异常,则执行该任务复位操作;如果该任务无法复位,则执行单板复位操作。
在单板初始化时,创建系统的监控任务以及对应的周期定时器,周期定时器的目的是周期性地向监控任务消息队列发送定时器消息,触发监控任务进行任务监控。之后该监控任务从任务消息队列中获取消息,分辨消息类型,如果是监控任务周期定时器消息,则开始扫描监测任务异常并进行相关处理;如果是用户命令消息,则根据用户指令获取并上报系统中异常任务相关信息。
在RTOS(支持实时系统运行的操作系统)环境下,操作系统在每个任务创建时都为这个任务分配一个独立的任务控制块(TCB),各个任务的相关信息,如任务入口、堆栈地址、堆栈大小、任务状态、堆栈使用情况等信息都是存放在这个任务控制块中的。可以通过调用实时操作系统提供的系统调用接口从TCB中获取该任务状态信息,如,调用函数taskTcb()获取TCB中对应任务状态信息。实时操作系统的TCB结构可以查看相关的手册得到,这里不详细列出。或者直接调用操作系统的系统调用获取各个任务状态信息,例如,直接调用函数taskInfoGet(),可以获取指定任务的任务状态;或者采用以上方法的组合判断。
如果任务状态为以下几种状态,则认为该任务异常SUSPEND、DELAY+S、PEND+S或PEND+S+T;另外可以通过堆栈使用情况判断是否存在越界,越界的任务则认为异常;或者采用以上方法的组合判断。
在任务出现异常时,直接复位该任务,重新初始化,复位后返回获取待测任务状态信息步骤。其中任务复位实现方式调用操作系统的系统调用,如taskRestart(int tid),可以复位指定的任务,其中tid为任务的标识符;或者,先删除该任务,然后重新创建该任务来重启该任务用操作系统的系统调用taskDelete()可以删除指定的任务,用taskSpawn()可以重新创建改任务。
如果任务无法复位,则进行单板复位。
下面以vxWorks环境为例说明该任务的实现。
vxWorks提供的相关系统调用如下taskLib.h定义与任务管理相关的系统调用;taskIdVerify()-verify the existence of a task;taskTcb()-get the task control block for a task ID;taskIsSuspended()-check if a task is suspended;监控任务实现的架构如下Void taskMonitor(void){for(;;){从消息该任务消息队列中获取消息;switch(消息类型){case扫描时间到
循环顺序扫描系统中所有需要监控的任务列表;if(任务异常){记录该任务检测结果;复位该任务;if(该任务无法恢复){复位单板;}}case用户命令获取任务状态信息;上报任务状态信息;default...
}}}本发明提供一种简单有效的实时多任务环境下检测和处理任务异常的方法,提高系统的可靠性。同时通过这种方法还可以把异常任务的检测结果获取出来,以方便问题的定位和解决,也增加系统调测的手段。
权利要求
1.一种单板任务异常检测方法,其特征在于,包括启动监控任务,扫描登记列表中的待测任务;获取待测任务状态信息;判断待测任务是否异常;记录检测结果。
2.如权利要求1所述的单板任务异常检测方法,其特征在于,所述监控任务定时启动。
3.如权利要求1所述的单板任务异常检测方法,其特征在于,还包括在单板初始化时创建监控任务。
4.如权利要求1至3任一项所述的单板任务异常检测方法,其特征在于,任务状态信息通过调用待测任务对应的任务控制块获得或通过调用函数TaskinfoGet()获得指定任务状态信息。
5.一种单板任务异常处理方法,其特征在于,包括启动监控任务,扫描系统中登记列表中的待测任务;获取待测任务状态信息;判断待测任务是否异常;如果任务异常,则执行该任务复位操作;如果该任务无法复位,则执行单板复位操作。
6.如权利要求5所述的单板任务异常处理方法,其特征在于,任务复位操作通过系统调用直接复位该任务或者先删除该任务,再重新创建该任务。
7.如权利要求5或6所述的单板任务异常处理方法,其特征在于,还包括在单板初始化时创建监控任务。
8.如权利要求5或6所述的单板任务异常处理方法,其特征在于,任务状态信息通过调用待测任务对应的任务控制块获得或通过调用函数TaskinfoGet()获得指定任务状态信息。
9..一种单板任务异常处理方法,其特征在于,包括启动监控任务,扫描登记列表中的待测任务;获取待测任务状态信息;判断待测任务是否异常;记录检测结果;通过用户命令从检测结果中获取记录的任务异常信息。
全文摘要
一种单板任务异常检测及处理方法,其中单板任务异常检测方法包括启动监控任务,扫描登记列表中的待测任务;获取待测任务状态信息;判断待测任务是否异常;记录检测结果。所述处理方法为如果任务异常,则执行该任务复位操作;如果该任务无法复位,则执行单板复位操作。或者通过用户命令从检测结果中获取记录的任务异常信息。这样能够保证系统正常运行,延长系统的MTBF(平均故障时间),提高系统的可靠性。
文档编号G06F11/00GK1855066SQ200510066188
公开日2006年11月1日 申请日期2005年4月21日 优先权日2005年4月21日
发明者余明 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1