一种实时操作系统中任务挂起状态监控方法

文档序号:6548244阅读:302来源:国知局
专利名称:一种实时操作系统中任务挂起状态监控方法
技术领域
本发明涉及实时系统,尤其涉及实时多任务操作系统中任务运行状态的监控处理。
背景技术
实时系统是指能在确定的时间内执行其功能,并对外部的异步事件作出响应的计算机系统,实时系统一般应用于通信、工业控制等领域中。实时操作系统(RTOS)是一个实时系统最关键的组成部分,它通常与特定的中央处理器(CPU)、外设等共同组成一个实时系统。
目前广泛应用的实时操作系统都是多任务的操作系统,实时多任务操作系统允许多个实时应用作为一系列独立任务来运行。从系统的角度看,任务是竞争系统资源的最小运行单元,任务可以使用或等待CPU、I/O设备及内存空间等系统资源,并独立于其它任务,与它们一起并发运行。实时操作系统的一个任务可有多种状态,其中最基本的状态有四种(1)就绪态(Ready)任务准备好,等待系统分配CPU资源后就立即可以执行;(2)阻塞态(Block)任务需等待某些不可利用的资源而被阻塞;(3)挂起态(Suspend)操作系统停止对该任务的调度;(4)执行态(Running)指任务正占用CPU资源,任务的程序指令正在被执行。
实时操作系统运行时,任务不断地从一种状态迁移到另一状态,状态的迁移由实时操作系统控制。
在实时操作系统应用中,任务执行的基本流程如图1所示,包括
系统硬件初始化;操作系统初始化;创建用户主任务;创建并激活清狗任务;创建并激活一系列其它任务;用户主任务终止或挂起;操作系统调度其它任务。
其中,清狗任务的创建也可以放在图1中的“操作系统初始化”之后。
如果在上述任何一个任务执行过程中出现异常(Exception),如指令异常或者数据访问异常,则操作系统就会挂起(Suspend)该任务,导致该任务停止执行,如果系统中清狗任务执行正常,或者其他的清狗操作(如通过中断清狗)正常运行,那么系统就无法通过复位的方式来达到自恢复的目的。
现有实时操作系统应用中,一般采用专门的监控任务来监控其它任务的工作状态,如果发现有任务被挂起,监控任务就会采取相应的告警或者处理操作。
现有技术的缺点若监控任务本身也出现异常而被操作系统挂起,就不能实现对各任务的监控,这样,当有任务被挂起时,用户无法实时获知任务的挂起状态,若系统其它任务运行正常,将会造成系统运行不完整,进而引发不可预知的后果。

发明内容
本发明提供一种实时操作系统中任务挂起状态监控方法,用以解决现有技术中存在的任务挂起时不能实时获知的问题。
本发明方法包括下列步骤A、被监控任务启动时,系统根据其启动时间和任务执行时长,确定出该任务的超时时间;B、系统执行清狗操作时,若判断出被监控任务超时,则确定该任务已产生异常并被操作系统挂起。
所述系统中设置有监控定时器;所述步骤A中,当任务启动时,根据定时器的当前时间和任务执行时长,计算并保存该任务的超时时间;
所述步骤B中,系统执行清狗操作时,读取并比较定时器的当前时间和保存的超时时间,判断被监控任务是否超时。
所述监控定时器采用系统中CPU内部提供的定时器或为设置的外部逻辑定时器。
所述系统中为每一个被监控任务单独设置一个定时器或多个任务共用一个定时器。
所述步骤A中还包括有选择是否启动任务监控的步骤;若选择对该任务进行监控,则记录任务状态为启动监控;当该任务执行完毕后,记录任务状态为停止监控;否则,记录任务状态为不监控;所述步骤B包括系统执行清狗操作时,获取任务状态信息,若为启动监控,则读取并比较定时器的当前时间和保存的超时时间,判断该任务是否超时。
所述系统中设置有任务超时时间表;所述步骤A中,当任务启动时,根据系统当前时间和任务执行时长,计算出该任务的超时时间,并存入所述任务超时时间表中;所述步骤B中,系统执行清狗操作时,比较系统当前时间和所述任务超时时间表中存储的超时时间,判断被监控任务是否超时。
所述步骤A中,当任务启动时,还包括有选择是否启动任务监控的步骤;系统仅对选择进行监控的任务,计算出超时时间,并存入所述任务超时时间表中。
根据本发明的上述方法,还包括任务执行完毕后,删除该任务在所述任务超时时间表中对应记录的步骤。
所述任务的超时时间为任务的启动时间加上该任务的执行时长和预留的时间裕量。
采用本发明的方法,可以实时地对实时操作系统中的任务进行监控,避免实时系统出现部分任务挂起而毫无所知的问题,从而保证实时系统工作正常。


图1为实时操作系统工作流程图;图2为本发明实施例一任务执行流程图;图3为本发明实施例一任务执行状态监控流程图;图4为本发明实施例二任务执行流程图;图5为本发明实施例二任务执行状态监控流程图。
具体实施例方式
实时操作系统一般与特定的CPU、外设等组成一个实时系统,通常,CPU内部会提供若干个硬件定时器(Timer)供用户使用,这些定时器有16位(bit)的,也有32位、64位(bit)的。本发明的实施例一是利用CPU的一个硬件定时器和实时操作系统中的清狗函数配合实现对任务执行状态的监控,具体地,如果要对某个或者某些任务进行监控,则在任务启动时,设置该任务的状态为“启动监控”,并根据任务启动的当前时间和该任务正常运行时的任务执行时长,设置超时时间并预留足够的时间裕量,在任务执行完毕后设置该任务的状态为“停止监控”。任务执行的具体流程如图2所示,包括下列步骤步骤S21、操作系统对任务进行调度,启动任务的运行;步骤S22、如果该任务为重要任务或有必要对该任务的运行状态进行监控,则设置该任务的运行状态为“启动监控”;具体的设置方法可以是系统自动设置,或者是任务启动时通过系统界面窗口提示用户,由用户通过窗口选择是否启动监控功能;步骤S23、若选择对该任务进行监控,则读取设置的监控定时器的当前时间并记录;步骤S24、根据任务执行时长(对于实时系统而言,某一任务正常执行的时长是一个已知数),计算出任务的超时时间并存储;具体计算方法为任务超时时间=定时器当前时间+任务执行时长+预留的时间裕量;
步骤S25、任务执行;步骤S26、系统判断任务是否执行完毕,若是,则执行步骤S27,否则,执行步骤S28;步骤S27、设置任务状态为“停止监控”;步骤S28、保持任务状态为“启动监控”;当任务状态为“启动监控”时,包含两种情况其一是该任务正在正常执行中,其二是该任务由于被挂起而不能正常结束,无法运行到“停止监控”状态。
图3为对实施例一中任务运行状态的监控流程,包括如下步骤步骤S31、系统运行清狗函数,执行清狗操作;步骤S32、系统在执行清狗操作时,检测任务状态是否为“启动监控”,若否,则执行步骤S36;否则,继续下列步骤;步骤S33、读取定时器的当前时间,并与存储的任务超时时间比较;步骤S34、若比较结果为任务已超时,则执行步骤S35;否则,执行步骤S36;步骤S35、系统执行超时处理流程,如给出报警信息等;步骤S36、结束该次监控流程。
上述实施例一是采用定时器和清狗操作来实现对任务挂起状态的监控的。该方法可以对多个任务的运行进行监控,在每个被监控任务开始启动时为其单独设置一个定时器,根据定时器的当前时间和该任务的执行时长,设置定时器的超时时间,当系统执行清狗操作时,若任务的状态为“启动监控”,则分别读取任务对应定时器的当前时间,并与超时时间比较来判断任务是否已超时。该方法也可以采用多个任务共用一个定时器来实现时间监控,在每个任务启动时,记录其开始时间和超时时间,当系统执行清狗操作时,读取定时器的当前时间分别与各任务的超时时间比较来判断任务是否已超时。
需要说明的是,如果CPU提供的硬件定时器已经被用完,那么也可以通过逻辑提供一个硬件定时器来实现上述方案。
实施例二采用系统时间和清狗操作来实现对任务挂起状态的监控。
在该实施例二中,需要预先在系统中设置一张“任务超时时间表”,将启动任务及其对应的超时时间存入到该“任务超时时间表”中,图4为实施例二中任务执行流程图,包括如下步骤步骤S41、操作系统对任务进行调度,启动任务的运行;步骤S42、如果该任务为重要任务或有必要对该任务的运行状态进行监控,则设置该任务的运行状态为“启动监控”;具体的设置方法如上所述;步骤S43、若选择对该任务进行监控,则计算出该任务的超时时间;具体计算方法为任务超时时间=系统当前时间+任务执行时长+预留的时间裕量;并将计算结果存入所述“任务超时时间表”中;步骤S44、任务执行;步骤S45、系统判断任务是否执行完毕,若否,执行步骤S46;否则执行步骤S47;步骤S46、保持任务状态为“启动监控”;步骤S47、设置任务状态为“停止监控”。
图5为对实施例二中任务运行状态的监控流程,包括如下步骤步骤S51、系统运行清狗函数,执行清狗操作;步骤S52、系统在执行清狗操作时,检测任务状态是否为“启动监控”,若否,则执行步骤S56;否则,继续下列步骤;步骤S53、比较系统当前时间和“任务超时时间表”中存储的任务超时时间;步骤S54、若比较结果为任务已超时,则执行步骤S55;否则,执行步骤S56;步骤S55、系统执行超时处理流程,如给出报警信息等;步骤S56、结束该次监控流程。
该方法可以对多个任务的运行进行监控,在每个被监控任务开始启动时将该任务标识、启动时间和计算出的超时时间填入所述“任务超时时间表”中,当系统执行清狗操作时,若任务的状态为“启动监控”,则分别读取各任务的超时时间并与系统当前时间比较,判断任务是否超时。另外,对于“任务超时时间表”存储的任务,若其执行状态为“停止监控”,则可删除对应记录,以减小该“任务超时时间表”需要的存储空间并提高系统的查表效率。
本发明方法之所以在清狗函数中对任务执行时间进行监控,是因为无论实时操作系统是采用清狗任务清狗还是其他方式清狗,清狗函数都是能够及时得到执行的,从而实现对系统各任务运行状态的有效监控。如果清狗任务本身被挂起或者清狗操作本身无法再正常执行,则系统会因为无法清狗而导致“看门狗”(Watchdog)复位整个系统,使系统重新运行,从而达到系统自恢复的目的。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种实时操作系统中任务挂起状态监控方法,包括以下步骤A、被监控任务启动时,系统根据其启动时间和任务执行时长,确定出该任务的超时时间;B、系统执行清狗操作时,若判断出被监控任务超时,则确定该任务已产生异常并被操作系统挂起。
2.如权利要求1所述的方法,其特征在于,所述系统中设置有监控定时器;所述步骤A中,当任务启动时,根据定时器的当前时间和任务执行时长,计算并保存该任务的超时时间;所述步骤B中,系统执行清狗操作时,读取并比较定时器的当前时间和保存的超时时间,判断被监控任务是否超时。
3.如权利要求2所述的方法,其特征在于,所述监控定时器采用系统中CPU内部提供的定时器或为设置的外部逻辑定时器。
4.如权利要求3所述的方法,其特征在于,所述系统中为每一个被监控任务单独设置一个定时器或多个任务共用一个定时器。
5.如权利要求2所述的方法,其特征在于,所述步骤A中还包括有选择是否启动任务监控的步骤;若选择对该任务进行监控,则记录任务状态为启动监控;当该任务执行完毕后,记录任务状态为停止监控;否则,记录任务状态为不监控;所述步骤B包括系统执行清狗操作时,获取任务状态信息,若为启动监控,则读取并比较定时器的当前时间和保存的超时时间,判断该任务是否超时。
6.如权利要求1所述的方法,其特征在于,所述系统中设置有任务超时时间表;所述步骤A中,当任务启动时,根据系统当前时间和任务执行时长,计算出该任务的超时时间,并存入所述任务超时时间表中;所述步骤B中,系统执行清狗操作时,比较系统当前时间和所述任务超时时间表中存储的超时时间,判断被监控任务是否超时。
7.如权利要求6所述的方法,其特征在于,所述步骤A中,当任务启动时,还包括有选择是否启动任务监控的步骤;系统仅对选择进行监控的任务,计算出超时时间,并存入所述任务超时时间表中。
8.如权利要求6或7所述的方法,其特征在于,还包括任务执行完毕后,删除该任务在所述任务超时时间表中对应记录的步骤。
9.如权利要求1所述的方法,其特征在于,所述任务的超时时间为任务的启动时间加上该任务的执行时长和预留的时间裕量。
全文摘要
本发明有关一种实时操作系统中任务挂起状态监控方法,包括A.被监控任务启动时,系统根据其启动时间和任务执行时长,确定出该任务的超时时间;B.系统执行清狗操作时,若判断出被监控任务超时,则确定该任务已产生异常并被操作系统挂起。采用本发明的方法,可以实时地对实时操作系统中的任务进行监控,避免实时系统出现部分关键任务挂起而毫无所知的问题,从而保证实时系统工作正常。
文档编号G06F9/46GK1855067SQ20051006657
公开日2006年11月1日 申请日期2005年4月28日 优先权日2005年4月28日
发明者童运民, 叶荣标, 郑朝晖 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1