一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统技术方案

技术编号:6111404 阅读:249 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种对采用嵌入式操作系统的计算机应用系统中异常任务进行处理的实现方法,采用基于硬件平台主备冗余配置的应用系统,包括计算机应用系统初始化过程、任务状态表更新过程、异常任务捕捉过程、死循环检测过程、异常任务处理过程、系统重启检查过程所执行的步骤。本发明专利技术还提供了利用该方法的采用嵌入式操作系统的计算机应用系统中对异常任务进行处理的系统,包括检测模块、捕捉模块、记录查询模块、任务状态表、异常信息内存区和处理模块。本发明专利技术保证了计算机应用系统的稳定工作能力,对发生死循环或者发生自动重启的异常任务都能检测并记录,更大程度地提供了计算机应用系统的纠错能力,提高了计算机应用系统的研发过程的可控性。

【技术实现步骤摘要】

本专利技术属于计算机操作系统的任务管理
,主要涉及一种嵌入式操作系统 的异常任务处理的实现方法及系统。
技术介绍
在开发嵌入式软件过程中,任务的跟踪、监控一直是嵌入式操作系统任务管理的 重点和难点,也是影响一个嵌入式软件开发周期的关键因素。软件在整个开发过程中,有时一个任务在处理一个消息时,由于各种这样或那样 的原因,比如数组下标越界、访问空指针等等,会执行了非法指令,导致操作系统无法正常 运行。对于这类出错的任务,我们称之为异常任务。异常任务的表现形式,最常见的是死循 环,即任务在处理一个消息时出错,进而不能再对其他消息进行处理;有时也表现为整个软 件系统的自动重启甚至死机。异常任务的出现并不是可预期的,隐藏得较深的异常任务甚至可以在系统运行好 多天后才随机出现,它具有调试信息少、随机性强、可重现性差、定位问题困难等特点,犹如 隐藏在软性系统内的不定时炸弹,随时都可能导致软件系统瘫痪。这就要求软件开发人员 使用的嵌入式操作系统能够提供高效、准确的任务监控的方法。然而,目前使用的嵌入式操 作系统在遭遇异常任务时,仅仅是抛出异常,终止异常任务,在操作系统外壳打印对此异常 任务的调用栈简单信息;对于严重的系统异常任务,除上述操作外还会重启操作系统。像这 样的简单处理,不足以帮助软件开发人员完成异常任务的定位,特别是严重异常导致操作 系统立即重启时,软件开发人员甚至无法看清异常信息,当然就更加无法排除异常任务了。有鉴于此,软件开发人员往往设立专门的异常任务处理方法来自行对异常任务进 行管理。在现有技术中,中国专利CN1235142C的方法是启动硬件定时器;当系统运行的 上下文处于中断状态时,该硬件定时器的中断服务例程会检测各任务处理各自消息的时 间;若某个任务对一个消息的处理时间超过了预先规定的阈值,则认为该任务发生了死循 环;则将系统运行的中断上下文转换成任务上下文;在系统的任务上下文中调读调用栈函 数并输出。该硬件定时器可以是看门狗定时器。中国专利CN100394399C的方法是系统生成一个最高优先级的死循环监控任务 和一个最低优先级的死循环测试任务;死循环测试任务按一定的周期时间向死循环监控任 务发送通知;当死循环监控任务在规定条件下没有得到通知就表示系统出现死循环或类死 循环;死循环监控任务通知系统挂起死循环或类死循环任务,并进行定位和调试。中国专利CN100543686C的方法是在基于优先级任务调度策略的系统中,预先设 置低于系统所有任务优先级的最低优先级的死循环检测任务;当系统的时钟中断时,检测 未运行所述死循环检测任务的时长是否大于预先设定的阈值来判定该系统是否出现任务 死循环;而且,在该系统进行任务调度时,记录任务切换轨迹;当在任务切换轨迹中记录的任务个数不小于该系统所有任务的个数,且预先设定的阈值使所述任务切换轨迹至少刷新 一次时,判定任务切换轨迹中除死循环检测任务之外优先级最低的任务为死循环任务。上述已有技术,普遍注重于死循环任务的检测、定位和后续调试,对异常任务导致 的其他表现形式——系统重启则缺乏关注。中国专利CN100530126C的方法是在内存记录区为每一任务分配一个用于记录 函数地址的函数指针数组元素,并定义一个跟踪当前运行任务的全局函数指针,在系统要 运行的文件中加入函数调用钩子函数;任务切换时,在任务切换钩子函数里将所述全局函 数指针赋值为新切入的任务对应的函数指针数组元素的地址;在函数调用钩子函数处把当 前任务当前调用的函数地址记录到全局函数指针里。上述已有技术,提供了一种记录导致系统重启的异常任务的函数,以及记录调用 该函数的任务的目的,来实现对系统重启下异常任务的定位。但这一方法不考虑对死循环 的检测。对死循环检测和记录系统重启下异常任务函数这两类方法来说,简单的叠加使用 并不能很好地满足嵌入式操作系统下异常任务的处理,因为,在很多重要的软件应用系统, 比如通信系统、电力应用与检测、涉及安全和控制的软件系统中,为了避免程序出错时导致 系统失去工作能力,异常处理方法不光必须能够在死循环或系统重启的情况都能保证对异 常任务的检测、定位,还要在检测出严重异常任务时能够主动触发系统重启并输出告警信 息,同时还必须保证系统所提供的原有服务必须能够持续不中断地进行运作。
技术实现思路
本专利技术所要解决的技术问题是提供一种对采用嵌入式操作系统的计算机应用系 统中异常任务进行处理的实现方法,能够在计算机应用系统重启的情况下实现对异常任务 的检测和定位,并对死循环状态下的严重异常任务触发系统重启,以保证系统恢复正常的 工作状态。为此,本专利技术采用基于硬件平台主备冗余配置的应用系统,其技术方案包括如下 步骤a)、计算机应用系统初始化过程所执行的步骤,包括在计算机应用系统初始化时,申请记录异常任务相关信息的内存区、创建任务状态表、 挂接钩子函数调用和任务切换调用、创建死循环检测任务以及启动看门狗定时器,所述死 循环检测任务是最高优先级任务,所述任务状态表包含下列信息任务编号、任务名、任务 优先级、任务状态、任务执行标志位;b)、任务状态表更新过程所执行的步骤,包括计算机应用系统中每个任务创建时在任务状态表中建立该任务的任务编号、任务名、 任务优先级、任务状态和任务执行标志位的信息,任务创建时任务执行标志位不予以置位, 任务状态有变化,则在任务状态表中予以更新, 任务执行,则任务执行标志位予以置位, 任务结束,则在任务状态表中清除该任务所有信息;c)、异常任务捕捉过程所执行的步骤,包括钩子函数调用对异常任务进行定位,将异常任务信息写入异常信息内存区, 任务切换调用记录异常任务出现前的最后一次任务切换信息,即异常任务出现前最后执行的两个任务的信息,并将此任务切换信息写入异常信息内存区, 后续触发异常任务处理过程;d)、死循环检测过程所执行的步骤,包括死循环检测任务定时检查任务状态表,启动异常任务处理过程对看门狗定时器进行清 零操作,当死循环检测任务检测到异常任务时,则将异常任务信息写入异常信息内存区,后 续触发异常任务处理过程;e)、异常任务处理过程所执行的步骤,包括接收死循环检测过程的定时清零信息来对看门狗定时器进行清零, 当异常任务出现时,异常任务处理过程被异常任务捕捉过程或死循环检测过程触发, 在读取异常任务捕捉过程或死循环检测过程报告的异常任务信息后,检查该异常任务是否 属于严重异常,如非严重异常则仅重启异常任务,如是严重异常则执行硬件平台的主备用 切换,通过看门狗定时器触发计算机应用系统的重启;f)、系统重启检查过程所执行的步骤,包括计算机应用系统重启后,检查异常信息内存区,并将异常信息内存区的信息写入异常 记录文件,保存在掉电不丢失的存储设备上。在采用上述技术方案的基础上,本专利技术还可采用以下进一步的技术方案所述步骤d)的死循环检测过程中,死循环检测任务以下列两种方式检测到异常任务 加)、若任务状态表中,任何一个任务的状态标记为不正常状态,则判定该任务为异常 任务;2b)、若任务状态表中,某一任务的状态标记为正常状态,且任务执行标志位已置位,而 任务优先级低于该任务的所有其他任务,在状态标记为正常时其任务执行标志位在规定阈 值的定时检测次数内持续未予置位,则判定该任务陷入死本文档来自技高网
...

【技术保护点】
1.一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法,其特征在于所述方法基于硬件平台主备冗余配置的计算机应用系统,包括如下步骤:a)、计算机应用系统初始化过程所执行的步骤,包括:在计算机应用系统初始化时,申请记录异常任务相关信息的内存区、创建任务状态表、挂接钩子函数调用和任务切换调用、创建死循环检测任务以及启动看门狗定时器,所述死循环检测任务是最高优先级任务,所述任务状态表包含下列信息:任务编号、任务名、任务优先级、任务状态、任务执行标志位;b)、任务状态表更新过程所执行的步骤,包括:计算机应用系统中每个任务创建时在任务状态表中建立该任务的任务编号、任务名、任务优先级、任务状态和任务执行标志位的信息,任务创建时任务执行标志位不予以置位,任务状态有变化,则在任务状态表中予以更新,任务执行,则任务执行标志位予以置位,任务结束,则在任务状态表中清除该任务所有信息;c)、异常任务捕捉过程所执行的步骤,包括:钩子函数调用对异常任务进行定位,将异常任务信息写入异常信息内存区,任务切换调用记录异常任务出现前的最后一次任务切换信息,即异常任务本身及其之前的最后一个任务,并将此任务切换信息写入异常信息内存区,后续触发异常任务处理过程;d)、死循环检测过程所执行的步骤,包括:死循环检测任务定时检查任务状态表,启动异常任务处理过程对看门狗定时器进行清零操作,当死循环检测任务检测到异常任务时,则将异常任务信息写入异常信息内存区,后续触发异常任务处理过程;e)、异常任务处理过程所执行的步骤,包括:接收死循环检测过程的定时清零信息来对看门狗定时器进行清零,当异常任务出现时,异常任务处理过程被异常任务捕捉过程或死循环检测过程触发,在读取异常任务捕捉过程或死循环检测过程报告的异常任务信息后,检查该异常任务是否属于严重异常,如非严重异常则仅重启异常任务,如是严重异常则执行硬件平台的主备用切换,通过看门狗定时器触发计算机应用系统的重启;f)、系统重启检查过程所执行的步骤,包括:计算机应用系统重启后,检查异常信息内存区,并将异常信息内存区的信息写入异常记录文件,保存在掉电不丢失的存储设备上。...

【技术特征摘要】

【专利技术属性】
技术研发人员:吕彦霖周利满王强
申请(专利权)人:东方通信股份有限公司
类型:发明
国别省市:86

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

1