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

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

发明内容
本发明所要解决的技术问题是提供一种对采用嵌入式操作系统的计算机应用系 统中异常任务进行处理的实现方法,能够在计算机应用系统重启的情况下实现对异常任务 的检测和定位,并对死循环状态下的严重异常任务触发系统重启,以保证系统恢复正常的 工作状态。为此,本发明采用基于硬件平台主备冗余配置的应用系统,其技术方案包括如下 步骤
a)、计算机应用系统初始化过程所执行的步骤,包括
在计算机应用系统初始化时,申请记录异常任务相关信息的内存区、创建任务状态表、 挂接钩子函数调用和任务切换调用、创建死循环检测任务以及启动看门狗定时器,所述死 循环检测任务是最高优先级任务,所述任务状态表包含下列信息任务编号、任务名、任务 优先级、任务状态、任务执行标志位;
b)、任务状态表更新过程所执行的步骤,包括
计算机应用系统中每个任务创建时在任务状态表中建立该任务的任务编号、任务名、 任务优先级、任务状态和任务执行标志位的信息,任务创建时任务执行标志位不予以置位, 任务状态有变化,则在任务状态表中予以更新, 任务执行,则任务执行标志位予以置位, 任务结束,则在任务状态表中清除该任务所有信息;
c)、异常任务捕捉过程所执行的步骤,包括
钩子函数调用对异常任务进行定位,将异常任务信息写入异常信息内存区, 任务切换调用记录异常任务出现前的最后一次任务切换信息,即异常任务出现前最后执行的两个任务的信息,并将此任务切换信息写入异常信息内存区, 后续触发异常任务处理过程;
d)、死循环检测过程所执行的步骤,包括
死循环检测任务定时检查任务状态表,启动异常任务处理过程对看门狗定时器进行清 零操作,当死循环检测任务检测到异常任务时,则将异常任务信息写入异常信息内存区,后 续触发异常任务处理过程;
e)、异常任务处理过程所执行的步骤,包括
接收死循环检测过程的定时清零信息来对看门狗定时器进行清零, 当异常任务出现时,异常任务处理过程被异常任务捕捉过程或死循环检测过程触发, 在读取异常任务捕捉过程或死循环检测过程报告的异常任务信息后,检查该异常任务是否 属于严重异常,如非严重异常则仅重启异常任务,如是严重异常则执行硬件平台的主备用 切换,通过看门狗定时器触发计算机应用系统的重启;
f)、系统重启检查过程所执行的步骤,包括
计算机应用系统重启后,检查异常信息内存区,并将异常信息内存区的信息写入异常 记录文件,保存在掉电不丢失的存储设备上。在采用上述技术方案的基础上,本发明还可采用以下进一步的技术方案
所述步骤d)的死循环检测过程中,死循环检测任务以下列两种方式检测到异常任务 加)、若任务状态表中,任何一个任务的状态标记为不正常状态,则判定该任务为异常 任务;
2b)、若任务状态表中,某一任务的状态标记为正常状态,且任务执行标志位已置位,而 任务优先级低于该任务的所有其他任务,在状态标记为正常时其任务执行标志位在规定阈 值的定时检测次数内持续未予置位,则判定该任务陷入死循环。由于死循环检测是定时进行的,上述对检测次数的规定阈值,实际上就是一个预 先设定的时长。在这个预设的时长里,若某个任务一直在执行,而优先级低于该任务的其他 任务却始终不执行,则判定这个任务陷入死循环。以及,所述步骤e)的异常任务处理过程中,检查异常任务是否严重异常的方法是 查表法,即该异常任务的任务名若列于规定清单上则为严重异常,否则不属严重异常。上述规定清单,是一个预先设定的任务目录。在此目录上的任务,或者影响整个计 算机应用系统的运行,或者影响计算机应用系统所提供的业务。这样的任务出现异常,被视 作严重异常。以及,所述步骤e)的异常任务处理过程中,当收到死循环检测过程报告的死循环 任务信息时,所报告的死循环任务作为严重异常进行处理
以及,所述步骤e)的异常任务处理过程中,对于触发计算机应用系统重启的情况,还 通过预先设定的告警方法来发出异常通知。在采用上述技术方案的基础上,本发明还可采用以下进一步的技术方案
所述步骤f)的系统重启检查过程中,写入异常记录文件的信息,可通过联网的方式发 送到计算机应用系统主要的控制设备界面上。以及,所述步骤C)和步骤d)中异常信息内存区被写入的信息,可通过联网的方式 在计算机应用系统主要的控制设备界面上查询。
本发明另一个所要解决的技术问题是提供一种利用上述方法的采用嵌入式操作 系统的计算机应用系统中对异常任务进行处理的系统,为此,本发明采用以下技术方案该 系统包括检测模块、捕捉模块、记录查询模块、任务状态表、异常信息内存区和处理模块
所述检测模块,包含一个全局计数器,所述检测模块用于对计算机应用系统所有任务 的定时监控,主动发现异常任务,报告给处理模块;
所述捕捉模块,包含钩子函数调用和任务切换调用,所述捕捉模块提供异常任务的捕 捉和信息的记录;当出现异常任务时,嵌入式操作系统抛出异常任务的简短信息,触发钩子 函数调用和任务切换调用,对异常任务进行定位及记录最后一次任务切换,并报告给处理 模块;
所述记录查询模块,用于对捕捉模块和检测模块发现并记录的异常任务进行文件记录 和查询;
所述任务状态表,用于记录计算机应用系统当前各个任务的信息; 所述异常信息内存区,用于专门记录异常任务信息的内存区,这段内存区不会被分配 给计算机应用系统的系统任务或用户任务;
所述处理模块,包含一个看门狗定时器,所述处理模块用于判断异常任务的异常严重 程度以及根据异常严重程度进行处理,对不严重异常的,仅对异常任务进行任务的重启,对 于严重异常的,则执行硬件平台的主备用切换,通过看门狗定时器触发计算机应用系统的 重启ο在采用上述技术方案的基础上,本发明还可采用以下进一步的技术方案
当钩子函数调用被异常任务的简短信息自动触发后,所述捕捉模块将钩子函数调 用所定位的异常任务写入异常信息内存区,将任务切换调用所记录的异常任务出现前执行 的最后两个任务写入异常信息内存区,并读取任务状态表内记录的当前所有任务信息写入 异常信息内存区,通知所述处理模块进行处理。以及,所述检测模块,定时检查所述任务状态表,如果所有任务正常则通知所述处 理模块给看门狗定时器清零;如果检测出异常任务,则将异常任务信息写入异常信息内存 区,并读取任务状态表内记录的当前所有任务信息写入异常信息内存区,通知所述处理模 块进行处理。所述计算机应用系统是指工作在硬件平台上所有软件的集合,本发明所描述的对 异常任务进行处理的系统由执行相应任务的软件及运行该软件时调用的硬件设备组成,所 述软件应视作所述计算机应用系统的一个组成部分。采用本发明的对异常任务进行处理的方法和系统,首先是保证了计算机应用系统 的稳定工作能力。即使计算机应用系统出现了严重的异常任务,也能主动触发硬件平台的 主备用切换,使得处于热备份状态下的备用平台能及时切换为新的主用平台;而原先的主 用平台在自动重启后切换成备用平台,继续保持计算机应用系统的可靠性;同时还能保存 异常任务信息的记录并通知技术人员来及时排除异常。由于备用平台为热备份,其数据跟 主用平台保持同步,因此即使主用平台重启,备用平台切换后能继续保持原先进行中的业 务,不会丢失数据。采用本发明的对异常任务进行处理的方法和系统,对发生死循环或者发生自动重 启的异常任务都能检测并记录异常任务信息,更大程度地提供了计算机应用系统的纠错能力,提高了计算机应用系统的研发过程的可控性,从而缩短研发周期,提高研发工作效率。


图1为本发明所提供的对异常任务进行处理的系统各模块的构成图。图2为计算机应用系统初始化过程的流程图。图3为对操作系统所抛出异常任务的简短信息进行捕捉的工作流程图。图4为死循环检测任务的工作流程图。图5为异常任务处理过程的流程图。图6为系统重启检查过程的流程图。
具体实施例方式为了充分理解本发明的技术内容,下面给出具体实施例,结合附图对本发明的技 术方案进行较为详细的介绍和说明。异常任务处理系统的构成如图1所示,由任务状态表101、捕捉模块102、检测模块 103、异常信息内存区104、记录查询模块105和处理模块106组成,其中检测模块103包含 一个全局计数器1031,处理模块106包含一个看门狗定时器1061。任务状态表101包含计算机应用系统当前被创建和执行的所有任务,包括其任务 编号、任务名、任务优先级、任务状态和任务执行标志位。随着任务的创建和执行,任务状 态表接收系统任务信息进行定时更新。本实施例采用的嵌入式操作系统为VxWorks系统, 系统任务状态分为“ Ready ”、“ Suspend”、“ Stop ”、“Pend”、“De 1 ay ”五种,在本实施例中, "Ready"视作正常状态;“Suspend”和“Stop”视作不正常状态;而“Pend”和“Delay”作为 第三类状态仅仅在任务状态表中记录,不予以分辨或处理。捕捉模块102包含一个钩子函数调用和一个任务切换调用。钩子函数调用被挂接 到嵌入式操作系统上,当出现异常任务时,操作系统抛出异常任务的简短信息,钩子函数调 用会被触发,从而对异常任务进行定位;同样挂接的任务切换调用会被触发来记录异常任 务出现前进行切换的两个任务,也就是异常任务出现前执行的最后两个任务。捕捉模块102 会将此异常任务的信息和任务切换的信息写入异常信息内存区104,也会读取任务状态表 101信息,把计算机应用系统当前所有任务的信息写入异常信息内存区104,并通知处理模 块106进行后续处理。检测模块103包含一个最高优先级的死循环检测任务。全局计数器1031供死循 环检测任务计数用。死循环检测任务定时检查任务状态表101,当检测到异常任务时,检测 模块103会将此异常任务的信息和计算机应用系统当前所有任务的信息写入异常信息内 存区104,并通知处理模块106进行后续处理;当未检测到异常任务时,检测模块103通知 处理模块106对看门狗定时器1061进行清零操作。异常信息内存区104是计算机应用系统内存空间的一段,在计算机应用系统初始 化时申请获得,专门用于记录异常任务信息。这段内存区不会被分配给计算机应用系统的 系统任务或用户任务。异常信息内存区采用循环记录方式。异常任务信息记录到异常信息 内存区后,异常信息内存区的写指针将被调整到记录的尾部,这样异常任务信息记录就按 顺序排列在一起。每次记录异常任务信息时,都要检查剩余内存是否足够写入当前异常任务信息,如果剩余内存不够,写指针要移到异常信息内存区头部,覆盖掉最旧的那一部分记录。记录查询模块105在计算机应用系统重启后读取异常信息内存区104的内容,写 入异常记录文件,保存在掉电不丢失的存储设备中。本实施例中采用的掉电不丢失存储设 备为Flash存储。处理模块106包含一个看门狗定时器1061。所述看门狗定时器的作用是,定时器 启动后,到达设定的时间会自动触发计算机应用系统的重启。因此,为了阻止看门狗定时器 重启计算机应用系统,每隔一段时间要给定时器清零,让其重新开始计时,这种清零操作也 称作“喂狗”操作。未曾出现异常任务时,检测模块103会定时向处理模块106发来“喂狗” 通知。当异常任务发生时,无论是检测模块103在定时检测中发现的还是捕捉模块102被 触发后发现的,异常任务通知都会送到处理模块106,此时处理模块106会根据收到通知内 包含的异常任务信息来判定是否严重异常,若非严重异常则重启出现异常的任务;若是严 重异常,则触发硬件平台的主备用切换,并通过看门狗定时器重启计算机应用系统。如图2所示,计算机应用系统初始化时应加载异常任务处理系统。开始201后,在 系统内存空间内申请异常信息内存区202,这段内存不会被分配给系统任务或用户任务,它 被保留给异常任务处理系统记录异常任务信息。在硬件平台上电时(包括计算机应用系统 重启时)该异常信息内存区的记录将一直保持。挂接钩子函数调用和任务切换调用203。这两个中断调用被挂接到嵌入式操作系 统上,一旦操作系统抛出异常任务的简短信息,钩子函数调用和任务切换调用会被触发。创建任务状态表204,任务状态表包含下列信息任务编号、任务名、任务优先级、 任务状态、任务执行标志位。在等待计算机应用系统的其他初始化工作完成205之后,创建死循环检测任务 206。死循环检测任务会定时检查任务内存表上各个任务的状态,所有任务都正常时则定时 通知处理模块给看门狗定时器清零;出现异常任务时则将异常任务信息写入异常信息内存 区并触发后续异常任务处理过程。由于计算机应用系统的完整初始化过程通常用时比较 长,因此在其他初始化工作完成后才创建死循环检测任务。这个等待时间可以根据计算机 应用系统的情况来设置,本实施例中为5秒钟。启动看门狗定时器207,看门狗定时器位于处理模块中,一旦启动,则计时到规定 时间后会触发计算机应用系统重启。计时过程中如果被清零,则看门狗定时器会从头开始 重新计时。至此计算机应用系统的初始化完成,进入工作状态208。计算机应用系统处于工作状态时,任务状态表会定时更新,记录当前所有任务的 任务编号、任务名、任务优先级、任务状态、任务执行标志位。定时更新的间隔可以设定,本 实施例中,任务状态表定时更新的间隔和死循环检测任务定时检查任务状态表的间隔设为 一致,都为500毫秒。对操作系统抛出异常任务简短信息进行捕捉的工作步骤如图3所示。计算机应用 系统处于正常工作状态301时,操作系统没有异常任务的简短信息抛出。当发生异常任务 302时,操作系统抛出异常任务的简短信息,钩子函数调用和任务切换调用被触发,计算机 应用系统发生中断,转入钩子函数调用来定位异常任务303。异常任务被定位后,异常任务的相关信息就被写入异常信息内存区304。而任务切换调用则记录了异常任务发生前的最 后一次任务切换,这个任务切换信息也被写入异常信息内存区305。钩子函数调用还读取任 务状态表306,把当前所有任务的状态信息写入异常信息内存区307,随后向处理模块发出 通知,转入异常任务处理过程308。死循环检测任务的工作步骤如图4所示。计算机应用系统处于正常工作状态401 时,死循环检测任务定时检查任务状态表402,查看有否任务的状态处于“不正常”,也即查 看有否异常任务403。若存在异常任务,则将任务状态表中所有当前任务的信息写入异常信 息内存区404,随后转入异常任务处理过程415 ;
若不存在状态为“不正常”的任务,则寻找所有已经执行的任务中优先级最低的一个任 务,也即寻找执行标志位已置位且优先级最低的任务405。需要指出的是,某些特定的任务,比如Flash存储设备的读写会占用较长的时间, 如果按照此流程来执行,会有可能误判为死循环任务。因此在寻找执行标志位已置位且优 先级最低的任务405后,首先要判断这个任务是否不属于此类特定任务406。若正好属于特 定任务,则返回等待下一个周期的死循环检测任务定时检查任务状态表402 ;若不属于特 定任务,则继续下一步骤,确认上个检查周期时的优先级最低已执行任务是否就是同一个 407。如果两次检查周期内的优先级最低已执行任务不是同一个,则全局计数器归零409,通 知异常任务处理过程给看门狗定时器清零412,等待下一个周期的死循环检测任务定时检 查任务状态表402 ;
如果两次检查周期内的优先级最低已执行任务是同一个,则继续检查上次检查周期内 的优先级最低未执行任务在本次检查周期内有否执行或执行结束408。若上次检查周期内 的优先级最低未执行任务在本次检查周期内已经执行,则全局计数器归零409,通知异常任 务处理过程给看门狗定时器清零412,等待下一个周期的死循环检测任务定时检查任务状 态表402 ;
若上次检查周期内的优先级最低未执行任务在本次检查周期内也未执行,则全局计数 器加一 410,再检查计数器的计数值是否已经到达预先设定的阈值411。本实施例中,计数 器阈值设定为30次。若计数器的计数值未达到阈值,则通知异常任务处理过程给看门狗定 时器清零412,等待下一个周期的死循环检测任务定时检查任务状态表402 ;
若计数器的计数值达到了预先设定的阈值,则判定此优先级最低已执行任务为死循环 任务413,将此死循环任务的信息写入异常信息内存区414后,转入异常任务处理过程415。异常任务处理过程的步骤如图5所示。计算机应用系统的正常工作状态501下, 处理模块会接收到来自捕捉模块或检测模块发来的与异常任务处理相关的通知信息502。 首先是检查这个信息是否来自检测模块的看门狗清零通知503。若是,则执行“喂狗”操作, 即给看门狗定时器清零504,然后返回正常工作状态501 ;
若不是看门狗清零通知,则检查其是否死循环任务通知505。若是,则异常任务处理过 程触发硬件平台的主备用切换且通过预先设定的方式发出告警508,然后通过停喂看门狗 定时器的方式触发系统重启509。若非死循环任务通知,那么必然是捕捉到或者检测到的异常任务的信息。根据预 先设定的重要任务清单,可查表得知这个异常任务是否属于严重异常506。如果不是严重异 常,则重启该异常任务507后,返回正常工作状态501 ;本实施例中,异常任务处理系统运行在一个无线通信的基站上。在这个硬件平台上,系 统设定的重要任务清单包括下列任务板件通信任务、系统日志任务、平台定时器任务、消 息任务、语音承载任务和网管代理任务。如果系统发生的异常任务是上述任务之一,则判定 为严重异常;如果异常任务不属于上述任务之中,则判定不是严重异常。如果发生了严重异常,则异常处理过程触发硬件平台的主备用切换且通过预先设 定的方式发出告警508,然后通过停喂看门狗定时器的方式触发系统重启509。由于备用硬件平台是主用硬件平台的热备份,主备切换后,同步保持着相同数据 的原备用平台成为新的主用平台,原有的业务就能继续保持。系统重启检查过程的步骤如图6所示。系统重启601后,会先检查异常信息内存区 602,看其中是否存有异常任务的信息603。如果异常信息内存区中存有异常任务的信息,则 将异常任务的信息写入异常信息记录文件604,然后进入工作状态605 ;若异常信息内存区 中没有异常任务信息,则直接进入工作状态605。系统重启后的硬件平台,转为备用硬件平台。异常信息记录文件的记录方式有两种,一种是每次打开异常信息记录文件,清空 其中内容后,从文件开始处写入异常任务信息;另一种是每次打开异常信息记录文件,直接 在已有异常任务记录后添加新的异常任务信息。本实施例采用前一种方式。应当理解的是,以上所述从具体实施例的角度对本发明的技术内容进一步地披 露,其目的在于让大家更容易了解本发明的内容,但不代表本发明的实施方式和权利保护 局限于此。本发明保护范围阐明于所附权利要求书中,凡是在本发明的宗旨之内的显而易 见的修改,亦应归于本发明的保护之内。
权利要求
1.一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法,其特征在于 所述方法基于硬件平台主备冗余配置的计算机应用系统,包括如下步骤a)、计算机应用系统初始化过程所执行的步骤,包括在计算机应用系统初始化时,申请记录异常任务相关信息的内存区、创建任务状态表、 挂接钩子函数调用和任务切换调用、创建死循环检测任务以及启动看门狗定时器,所述死 循环检测任务是最高优先级任务,所述任务状态表包含下列信息任务编号、任务名、任务 优先级、任务状态、任务执行标志位;b)、任务状态表更新过程所执行的步骤,包括计算机应用系统中每个任务创建时在任务状态表中建立该任务的任务编号、任务名、 任务优先级、任务状态和任务执行标志位的信息,任务创建时任务执行标志位不予以置位,任务状态有变化,则在任务状态表中予以更新,任务执行,则任务执行标志位予以置位,任务结束,则在任务状态表中清除该任务所有信息;c)、异常任务捕捉过程所执行的步骤,包括钩子函数调用对异常任务进行定位,将异常任务信息写入异常信息内存区,任务切换调用记录异常任务出现前的最后一次任务切换信息,即异常任务本身及其之 前的最后一个任务,并将此任务切换信息写入异常信息内存区,后续触发异常任务处理过程;d)、死循环检测过程所执行的步骤,包括死循环检测任务定时检查任务状态表,启动异常任务处理过程对看门狗定时器进行清 零操作,当死循环检测任务检测到异常任务时,则将异常任务信息写入异常信息内存区,后 续触发异常任务处理过程;e)、异常任务处理过程所执行的步骤,包括接收死循环检测过程的定时清零信息来对看门狗定时器进行清零,当异常任务出现时,异常任务处理过程被异常任务捕捉过程或死循环检测过程触发, 在读取异常任务捕捉过程或死循环检测过程报告的异常任务信息后,检查该异常任务是否 属于严重异常,如非严重异常则仅重启异常任务,如是严重异常则执行硬件平台的主备用 切换,通过看门狗定时器触发计算机应用系统的重启;f)、系统重启检查过程所执行的步骤,包括计算机应用系统重启后,检查异常信息内存区,并将异常信息内存区的信息写入异常 记录文件,保存在掉电不丢失的存储设备上。
2.如权利要求1所述的一种对采用嵌入式操作系统的计算机应用系统中异常任务的 处理方法,其特征在于所述步骤d)的死循环检测过程中,死循环检测任务以下列两种方式 检测到异常任务加)、若任务状态表中,任何一个任务的状态标记为不正常状态,则判定该任务为异常 任务;2b)、若任务状态表中,某一任务的状态标记为正常状态,且任务执行标志位已置位,而 任务优先级低于该任务的所有其他任务,在状态标记为正常时其任务执行标志位在规定阈 值的定时检测次数内持续未予置位,则判定该任务陷入死循环。
3.如权利要求1所述的一种对采用嵌入式操作系统的计算机应用系统中异常任务的 处理方法,其特征在于,所述步骤e)的异常任务处理过程中,检查异常任务是否严重异常 的方法是查表法,即该异常任务的任务名若列于规定清单上则为严重异常,否则不属严重 异常。
4.如权利要求2所述的一种对采用嵌入式操作系统的计算机应用系统中异常任务的 处理方法,其特征在于,所述步骤e)的异常任务处理过程中,当收到死循环检测过程报告 的死循环任务信息时,所报告的死循环任务作为严重异常进行处理。
5.如权利要求1所述的一种对采用嵌入式操作系统的计算机应用系统中异常任务的 处理方法,其特征在于所述步骤e)的异常任务处理过程中,对于触发计算机应用系统重启 的情况,还通过预先设定的告警方法来发出异常通知。
6.如权利要求1到5任意之一所述的一种对采用嵌入式操作系统的计算机应用系统中 异常任务的处理方法,其特征在于,所述步骤f)的系统重启检查过程中,写入异常记录文 件的信息,通过联网的方式发送到计算机应用系统的控制设备界面上。
7.如权利要求1到5任意之一所述的一种对采用嵌入式操作系统的计算机应用系统中 异常任务的处理方法,其特征在于所述步骤c)和步骤d)中异常信息内存区被写入的信息, 通过联网的方式在计算机应用系统的控制设备界面上查询。
8.一种采用嵌入式操作系统的计算机应用系统中对异常任务进行处理的系统,其特征 在于,该系统包括检测模块、捕捉模块、记录查询模块、任务状态表、异常信息内存区和处理 模块所述检测模块,包含一个全局计数器,所述检测模块用于对计算机应用系统所有任务 的定时监控,主动发现异常任务,报告给处理模块;所述捕捉模块,包含钩子函数调用和任务切换调用,所述捕捉模块提供异常任务的捕 捉和信息的记录;当出现异常任务时,嵌入式操作系统抛出异常任务的简短信息,触发钩子 函数调用和任务切换调用,对异常任务进行定位及记录最后一次任务切换,并报告给处理 模块;所述记录查询模块,用于对捕捉模块和检测模块发现并记录的异常任务进行文件记录 和查询;所述任务状态表,用于记录计算机应用系统当前各个任务的信息;所述异常信息内存区,用于专门记录异常任务信息的内存区,这段内存区不会被分配 给计算机应用系统的系统任务或用户任务;所述处理模块,包含一个看门狗定时器,所述处理模块用于判断异常任务的异常严重 程度以及根据异常严重程度进行处理,对不严重异常的,仅对异常任务进行任务的重启,对 于严重异常的,则执行硬件平台的主备用切换,通过看门狗定时器触发计算机应用系统的 重启ο
9.如权利要求8所述的一种采用嵌入式操作系统的计算机应用系统中对异常任务进 行处理的系统,其特征在于,当钩子函数调用被异常任务的简短信息自动触发后,所述捕捉 模块将钩子函数调用所定位的异常任务写入异常信息内存区,将任务切换调用所记录的异 常任务出现前执行的最后两个任务写入异常信息内存区,并读取任务状态表内记录的当前 所有任务信息写入异常信息内存区,通知所述处理模块进行处理。
10.如权利要求8所述的一种采用嵌入式操作系统的计算机应用系统中对异常任务进 行处理的系统,其特征在于,所述检测模块定时检查所述任务状态表,如果所有任务正常则 通知所述处理模块给看门狗定时器清零;如果检测出异常任务,则将异常任务信息写入异 常信息内存区,并读取任务状态表内记录的当前所有任务信息写入异常信息内存区,通知 所述处理模块进行处理。
全文摘要
本发明提供了一种对采用嵌入式操作系统的计算机应用系统中异常任务进行处理的实现方法,采用基于硬件平台主备冗余配置的应用系统,包括计算机应用系统初始化过程、任务状态表更新过程、异常任务捕捉过程、死循环检测过程、异常任务处理过程、系统重启检查过程所执行的步骤。本发明还提供了利用该方法的采用嵌入式操作系统的计算机应用系统中对异常任务进行处理的系统,包括检测模块、捕捉模块、记录查询模块、任务状态表、异常信息内存区和处理模块。本发明保证了计算机应用系统的稳定工作能力,对发生死循环或者发生自动重启的异常任务都能检测并记录,更大程度地提供了计算机应用系统的纠错能力,提高了计算机应用系统的研发过程的可控性。
文档编号G06F11/14GK102141947SQ20111007873
公开日2011年8月3日 申请日期2011年3月30日 优先权日2011年3月30日
发明者吕彦霖, 周利满, 王强 申请人:东方通信股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1