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

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

Info

Publication number
CN102141947A
CN102141947A CN2011100787371A CN201110078737A CN102141947A CN 102141947 A CN102141947 A CN 102141947A CN 2011100787371 A CN2011100787371 A CN 2011100787371A CN 201110078737 A CN201110078737 A CN 201110078737A CN 102141947 A CN102141947 A CN 102141947A
Authority
CN
China
Prior art keywords
task
unusual
computer application
application system
endless 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
CN2011100787371A
Other languages
English (en)
Other versions
CN102141947B (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.)
Eastern Communication Co Ltd
Original Assignee
Eastern Communication 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 Eastern Communication Co Ltd filed Critical Eastern Communication Co Ltd
Priority to CN 201110078737 priority Critical patent/CN102141947B/zh
Publication of CN102141947A publication Critical patent/CN102141947A/zh
Application granted granted Critical
Publication of CN102141947B publication Critical patent/CN102141947B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

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

Description

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

Claims (10)

1.一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法,其特征在于所述方法基于硬件平台主备冗余配置的计算机应用系统,包括如下步骤:
a)、计算机应用系统初始化过程所执行的步骤,包括:
在计算机应用系统初始化时,申请记录异常任务相关信息的内存区、创建任务状态表、挂接钩子函数调用和任务切换调用、创建死循环检测任务以及启动看门狗定时器,所述死循环检测任务是最高优先级任务,所述任务状态表包含下列信息:任务编号、任务名、任务优先级、任务状态、任务执行标志位;
b)、任务状态表更新过程所执行的步骤,包括:
计算机应用系统中每个任务创建时在任务状态表中建立该任务的任务编号、任务名、任务优先级、任务状态和任务执行标志位的信息,任务创建时任务执行标志位不予以置位,
任务状态有变化,则在任务状态表中予以更新,
任务执行,则任务执行标志位予以置位,
任务结束,则在任务状态表中清除该任务所有信息;
c)、异常任务捕捉过程所执行的步骤,包括:
钩子函数调用对异常任务进行定位,将异常任务信息写入异常信息内存区,
任务切换调用记录异常任务出现前的最后一次任务切换信息,即异常任务本身及其之前的最后一个任务,并将此任务切换信息写入异常信息内存区, 
后续触发异常任务处理过程;
d)、死循环检测过程所执行的步骤,包括:
死循环检测任务定时检查任务状态表,启动异常任务处理过程对看门狗定时器进行清零操作,当死循环检测任务检测到异常任务时,则将异常任务信息写入异常信息内存区,后续触发异常任务处理过程; 
e)、异常任务处理过程所执行的步骤,包括:
接收死循环检测过程的定时清零信息来对看门狗定时器进行清零,
当异常任务出现时,异常任务处理过程被异常任务捕捉过程或死循环检测过程触发,在读取异常任务捕捉过程或死循环检测过程报告的异常任务信息后,检查该异常任务是否属于严重异常,如非严重异常则仅重启异常任务,如是严重异常则执行硬件平台的主备用切换,通过看门狗定时器触发计算机应用系统的重启;
f)、系统重启检查过程所执行的步骤,包括:
计算机应用系统重启后,检查异常信息内存区,并将异常信息内存区的信息写入异常记录文件,保存在掉电不丢失的存储设备上。
2.如权利要求1所述的一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法,其特征在于所述步骤d)的死循环检测过程中,死循环检测任务以下列两种方式检测到异常任务:
2a)、若任务状态表中,任何一个任务的状态标记为不正常状态,则判定该任务为异常任务;
2b)、若任务状态表中,某一任务的状态标记为正常状态,且任务执行标志位已置位,而任务优先级低于该任务的所有其他任务,在状态标记为正常时其任务执行标志位在规定阈值的定时检测次数内持续未予置位,则判定该任务陷入死循环。
3.如权利要求1所述的一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法,其特征在于,所述步骤e)的异常任务处理过程中,检查异常任务是否严重异常的方法是查表法,即该异常任务的任务名若列于规定清单上则为严重异常,否则不属严重异常。
4.如权利要求2所述的一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法,其特征在于,所述步骤e)的异常任务处理过程中,当收到死循环检测过程报告的死循环任务信息时,所报告的死循环任务作为严重异常进行处理。
5.如权利要求1所述的一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法,其特征在于所述步骤e)的异常任务处理过程中,对于触发计算机应用系统重启的情况,还通过预先设定的告警方法来发出异常通知。
6.如权利要求1到5任意之一所述的一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法,其特征在于,所述步骤f)的系统重启检查过程中,写入异常记录文件的信息,通过联网的方式发送到计算机应用系统的控制设备界面上。
7.如权利要求1到5任意之一所述的一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法,其特征在于所述步骤c)和步骤d)中异常信息内存区被写入的信息,通过联网的方式在计算机应用系统的控制设备界面上查询。
8.一种采用嵌入式操作系统的计算机应用系统中对异常任务进行处理的系统,其特征在于,该系统包括检测模块、捕捉模块、记录查询模块、任务状态表、异常信息内存区和处理模块: 
所述检测模块,包含一个全局计数器,所述检测模块用于对计算机应用系统所有任务的定时监控,主动发现异常任务,报告给处理模块;
所述捕捉模块,包含钩子函数调用和任务切换调用,所述捕捉模块提供异常任务的捕捉和信息的记录;当出现异常任务时,嵌入式操作系统抛出异常任务的简短信息,触发钩子函数调用和任务切换调用,对异常任务进行定位及记录最后一次任务切换,并报告给处理模块;
所述记录查询模块,用于对捕捉模块和检测模块发现并记录的异常任务进行文件记录和查询;
所述任务状态表,用于记录计算机应用系统当前各个任务的信息;
所述异常信息内存区,用于专门记录异常任务信息的内存区,这段内存区不会被分配给计算机应用系统的系统任务或用户任务;
所述处理模块,包含一个看门狗定时器,所述处理模块用于判断异常任务的异常严重程度以及根据异常严重程度进行处理,对不严重异常的,仅对异常任务进行任务的重启,对于严重异常的,则执行硬件平台的主备用切换,通过看门狗定时器触发计算机应用系统的重启。
9.如权利要求8所述的一种采用嵌入式操作系统的计算机应用系统中对异常任务进行处理的系统,其特征在于,当钩子函数调用被异常任务的简短信息自动触发后,所述捕捉模块将钩子函数调用所定位的异常任务写入异常信息内存区,将任务切换调用所记录的异常任务出现前执行的最后两个任务写入异常信息内存区,并读取任务状态表内记录的当前所有任务信息写入异常信息内存区,通知所述处理模块进行处理。
10.如权利要求8所述的一种采用嵌入式操作系统的计算机应用系统中对异常任务进行处理的系统,其特征在于,所述检测模块定时检查所述任务状态表,如果所有任务正常则通知所述处理模块给看门狗定时器清零;如果检测出异常任务,则将异常任务信息写入异常信息内存区,并读取任务状态表内记录的当前所有任务信息写入异常信息内存区,通知所述处理模块进行处理。
CN 201110078737 2011-03-30 2011-03-30 一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统 Active CN102141947B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110078737 CN102141947B (zh) 2011-03-30 2011-03-30 一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110078737 CN102141947B (zh) 2011-03-30 2011-03-30 一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统

Publications (2)

Publication Number Publication Date
CN102141947A true CN102141947A (zh) 2011-08-03
CN102141947B CN102141947B (zh) 2013-04-24

Family

ID=44409484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110078737 Active CN102141947B (zh) 2011-03-30 2011-03-30 一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统

Country Status (1)

Country Link
CN (1) CN102141947B (zh)

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102394892A (zh) * 2011-11-22 2012-03-28 四川华体灯业有限公司 一种基于VxWorks通信系统
CN102622300A (zh) * 2012-04-18 2012-08-01 迈普通信技术股份有限公司 多任务系统中死循环或类死循环的检测方法
CN102761439A (zh) * 2012-06-13 2012-10-31 烽火通信科技股份有限公司 Pon接入系统中基于看门狗的异常检测记录装置及方法
CN103150222A (zh) * 2013-01-28 2013-06-12 中兴通讯股份有限公司 嵌入式系统异常恢复的方法和装置
CN103220180A (zh) * 2013-04-27 2013-07-24 华南理工大学 一种OpenStack云平台异常的处理方法
CN103309759A (zh) * 2012-03-06 2013-09-18 智邦科技股份有限公司 一种操作系统中断服务的检测方法
CN103324582A (zh) * 2013-06-17 2013-09-25 华为技术有限公司 一种内存迁移方法、装置及设备
CN103336738A (zh) * 2013-04-28 2013-10-02 惠州市德赛西威汽车电子有限公司 一种嵌入式操作系统捕抓异常及分发的方法
CN103389934A (zh) * 2012-05-08 2013-11-13 上海富欣智能交通控制有限公司 基于硬件双通道实现运行监控的系统
CN103744772A (zh) * 2014-01-28 2014-04-23 北京经纬恒润科技有限公司 一种检测任务运行性能的方法和系统
WO2014161373A1 (zh) * 2013-04-01 2014-10-09 中兴通讯股份有限公司 一种系统故障检测及处理方法、装置和计算机可读存储介质
CN104142885A (zh) * 2013-05-09 2014-11-12 百度在线网络技术(北京)有限公司 一种用于对被测程序进行异常测试的方法和装置
CN104679610A (zh) * 2015-02-11 2015-06-03 东莞前沿技术研究院 计算机系统的管理方法和装置
CN104951394A (zh) * 2014-03-26 2015-09-30 上海宝信软件股份有限公司 在组态运行时捕获ActiveX控件异常的系统和方法
CN105389249A (zh) * 2015-10-29 2016-03-09 Tcl集团股份有限公司 异常日志生成配置方法及异常日志生成配置装置
CN105589766A (zh) * 2015-12-21 2016-05-18 南京国电南自电网自动化有限公司 一种VxWorks启动过程任务异常检测方法
CN106095394A (zh) * 2015-04-28 2016-11-09 京瓷办公信息系统株式会社 电子设备以及重启方法
CN103336738B (zh) * 2013-04-28 2016-11-30 惠州市德赛西威汽车电子股份有限公司 一种嵌入式操作系统捕抓异常及分发的方法
CN106815035A (zh) * 2015-11-27 2017-06-09 英业达科技有限公司 检查计算机系统的方法
CN107153585A (zh) * 2016-03-02 2017-09-12 腾讯科技(深圳)有限公司 恢复方法及相关装置
CN107239290A (zh) * 2017-06-12 2017-10-10 郑州云海信息技术有限公司 一种应用服务的管理方法及装置
CN107430543A (zh) * 2015-03-24 2017-12-01 三菱电机株式会社 信息处理装置
CN107962874A (zh) * 2017-11-29 2018-04-27 艾体威尔电子技术(北京)有限公司 一种提高热敏打印机驱动程序可靠性的方法
CN108984333A (zh) * 2017-05-31 2018-12-11 北京京东尚科信息技术有限公司 用于大数据实时计算的方法及装置
CN110750450A (zh) * 2019-09-19 2020-02-04 深圳震有科技股份有限公司 一种软件死循环的定位方法、装置、系统及存储介质
CN113641538A (zh) * 2020-04-24 2021-11-12 慧荣科技股份有限公司 具有实时中断验证功能的记忆体验证系统及方法
CN116521419A (zh) * 2023-05-16 2023-08-01 山东铂金动力科技有限公司 一种嵌入式操作系统的控制方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0505706A1 (en) * 1991-03-26 1992-09-30 International Business Machines Corporation Alternate processor continuation of the task of a failed processor
US6269478B1 (en) * 1997-07-22 2001-07-31 Siemens Aktiengesellschaft Monitoring method for recognizing endless loops and blocked processes in a computer system using task state comparisons
US6453430B1 (en) * 1999-05-06 2002-09-17 Cisco Technology, Inc. Apparatus and methods for controlling restart conditions of a faulted process
CN1477512A (zh) * 2002-08-20 2004-02-25 华为技术有限公司 嵌入式软件任务死循环监控方法
CN1811730A (zh) * 2006-02-22 2006-08-02 迈普(四川)通信技术有限公司 一种死循环或类死循环任务检测方法
CN1904852A (zh) * 2006-08-01 2007-01-31 西安西电捷通无线网络通信有限公司 一种计算机应用程序的监控及异常处理方法
CN101158913A (zh) * 2007-11-15 2008-04-09 上海华为技术有限公司 一种检测任务死循环的方法及系统
CN101169753A (zh) * 2007-11-26 2008-04-30 中兴通讯股份有限公司 一种记录导致系统异常的函数的方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0505706A1 (en) * 1991-03-26 1992-09-30 International Business Machines Corporation Alternate processor continuation of the task of a failed processor
EP0505706B1 (en) * 1991-03-26 1997-05-14 International Business Machines Corporation Alternate processor continuation of the task of a failed processor
US6269478B1 (en) * 1997-07-22 2001-07-31 Siemens Aktiengesellschaft Monitoring method for recognizing endless loops and blocked processes in a computer system using task state comparisons
US6453430B1 (en) * 1999-05-06 2002-09-17 Cisco Technology, Inc. Apparatus and methods for controlling restart conditions of a faulted process
CN1477512A (zh) * 2002-08-20 2004-02-25 华为技术有限公司 嵌入式软件任务死循环监控方法
CN1811730A (zh) * 2006-02-22 2006-08-02 迈普(四川)通信技术有限公司 一种死循环或类死循环任务检测方法
CN1904852A (zh) * 2006-08-01 2007-01-31 西安西电捷通无线网络通信有限公司 一种计算机应用程序的监控及异常处理方法
CN101158913A (zh) * 2007-11-15 2008-04-09 上海华为技术有限公司 一种检测任务死循环的方法及系统
CN101169753A (zh) * 2007-11-26 2008-04-30 中兴通讯股份有限公司 一种记录导致系统异常的函数的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LONG WANG等: "Reliability MicroKernel:Providing Application-Aware Reliability in the OS", 《RELIABILITY,IEEE TRANSACTIONS》 *

Cited By (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102394892A (zh) * 2011-11-22 2012-03-28 四川华体灯业有限公司 一种基于VxWorks通信系统
CN103309759A (zh) * 2012-03-06 2013-09-18 智邦科技股份有限公司 一种操作系统中断服务的检测方法
CN102622300A (zh) * 2012-04-18 2012-08-01 迈普通信技术股份有限公司 多任务系统中死循环或类死循环的检测方法
CN102622300B (zh) * 2012-04-18 2015-03-25 迈普通信技术股份有限公司 多任务系统中死循环或类死循环的检测方法
CN103389934A (zh) * 2012-05-08 2013-11-13 上海富欣智能交通控制有限公司 基于硬件双通道实现运行监控的系统
CN103389934B (zh) * 2012-05-08 2016-01-13 上海富欣智能交通控制有限公司 基于硬件双通道实现运行监控的系统
CN102761439A (zh) * 2012-06-13 2012-10-31 烽火通信科技股份有限公司 Pon接入系统中基于看门狗的异常检测记录装置及方法
CN102761439B (zh) * 2012-06-13 2014-11-19 烽火通信科技股份有限公司 Pon接入系统中基于看门狗的异常检测记录装置及方法
CN103150222A (zh) * 2013-01-28 2013-06-12 中兴通讯股份有限公司 嵌入式系统异常恢复的方法和装置
CN103150222B (zh) * 2013-01-28 2016-02-10 中兴通讯股份有限公司 嵌入式系统异常恢复的方法和装置
WO2014161373A1 (zh) * 2013-04-01 2014-10-09 中兴通讯股份有限公司 一种系统故障检测及处理方法、装置和计算机可读存储介质
CN104102572A (zh) * 2013-04-01 2014-10-15 中兴通讯股份有限公司 一种系统故障检测及处理方法、装置
US9720761B2 (en) 2013-04-01 2017-08-01 Zte Corporation System fault detection and processing method, device, and computer readable storage medium
CN103220180B (zh) * 2013-04-27 2016-12-28 华南理工大学 一种OpenStack云平台异常的处理方法
CN103220180A (zh) * 2013-04-27 2013-07-24 华南理工大学 一种OpenStack云平台异常的处理方法
CN103336738B (zh) * 2013-04-28 2016-11-30 惠州市德赛西威汽车电子股份有限公司 一种嵌入式操作系统捕抓异常及分发的方法
CN103336738A (zh) * 2013-04-28 2013-10-02 惠州市德赛西威汽车电子有限公司 一种嵌入式操作系统捕抓异常及分发的方法
CN104142885A (zh) * 2013-05-09 2014-11-12 百度在线网络技术(北京)有限公司 一种用于对被测程序进行异常测试的方法和装置
CN104142885B (zh) * 2013-05-09 2019-01-11 百度在线网络技术(北京)有限公司 一种用于对被测程序进行异常测试的方法和装置
CN103324582A (zh) * 2013-06-17 2013-09-25 华为技术有限公司 一种内存迁移方法、装置及设备
CN103744772A (zh) * 2014-01-28 2014-04-23 北京经纬恒润科技有限公司 一种检测任务运行性能的方法和系统
CN104951394A (zh) * 2014-03-26 2015-09-30 上海宝信软件股份有限公司 在组态运行时捕获ActiveX控件异常的系统和方法
CN104679610A (zh) * 2015-02-11 2015-06-03 东莞前沿技术研究院 计算机系统的管理方法和装置
CN104679610B (zh) * 2015-02-11 2020-05-01 东莞前沿技术研究院 计算机系统的管理方法和装置
CN107430543A (zh) * 2015-03-24 2017-12-01 三菱电机株式会社 信息处理装置
CN107430543B (zh) * 2015-03-24 2018-11-23 三菱电机株式会社 信息处理装置
CN106095394A (zh) * 2015-04-28 2016-11-09 京瓷办公信息系统株式会社 电子设备以及重启方法
CN106095394B (zh) * 2015-04-28 2018-08-21 京瓷办公信息系统株式会社 电子设备以及重启方法
CN105389249B (zh) * 2015-10-29 2019-04-16 Tcl集团股份有限公司 异常日志生成配置方法及异常日志生成配置装置
CN105389249A (zh) * 2015-10-29 2016-03-09 Tcl集团股份有限公司 异常日志生成配置方法及异常日志生成配置装置
CN106815035A (zh) * 2015-11-27 2017-06-09 英业达科技有限公司 检查计算机系统的方法
CN106815035B (zh) * 2015-11-27 2019-11-19 英业达科技有限公司 检查计算机系统的方法
CN105589766B (zh) * 2015-12-21 2018-07-13 南京国电南自电网自动化有限公司 一种VxWorks启动过程任务异常检测方法
CN105589766A (zh) * 2015-12-21 2016-05-18 南京国电南自电网自动化有限公司 一种VxWorks启动过程任务异常检测方法
CN107153585A (zh) * 2016-03-02 2017-09-12 腾讯科技(深圳)有限公司 恢复方法及相关装置
CN107153585B (zh) * 2016-03-02 2021-04-27 腾讯科技(深圳)有限公司 恢复方法及相关装置
CN108984333A (zh) * 2017-05-31 2018-12-11 北京京东尚科信息技术有限公司 用于大数据实时计算的方法及装置
CN108984333B (zh) * 2017-05-31 2021-03-30 北京京东尚科信息技术有限公司 用于大数据实时计算的方法及装置
CN107239290A (zh) * 2017-06-12 2017-10-10 郑州云海信息技术有限公司 一种应用服务的管理方法及装置
CN107962874A (zh) * 2017-11-29 2018-04-27 艾体威尔电子技术(北京)有限公司 一种提高热敏打印机驱动程序可靠性的方法
CN110750450A (zh) * 2019-09-19 2020-02-04 深圳震有科技股份有限公司 一种软件死循环的定位方法、装置、系统及存储介质
CN110750450B (zh) * 2019-09-19 2022-08-16 深圳震有科技股份有限公司 一种软件死循环的定位方法、装置、系统及存储介质
CN113641538A (zh) * 2020-04-24 2021-11-12 慧荣科技股份有限公司 具有实时中断验证功能的记忆体验证系统及方法
CN116521419A (zh) * 2023-05-16 2023-08-01 山东铂金动力科技有限公司 一种嵌入式操作系统的控制方法
CN116521419B (zh) * 2023-05-16 2024-05-28 山东铂金动力科技有限公司 一种嵌入式操作系统的控制方法

Also Published As

Publication number Publication date
CN102141947B (zh) 2013-04-24

Similar Documents

Publication Publication Date Title
CN102141947B (zh) 一种对采用嵌入式操作系统的计算机应用系统中异常任务的处理方法及系统
CN100498725C (zh) 用于最小化计算机应用程序中的丢失的方法和系统
US5715386A (en) Apparatus and methods for software rejuvenation
KR101944874B1 (ko) 오류 처리 방법, 관련 장치 및 컴퓨터
CN102761439B (zh) Pon接入系统中基于看门狗的异常检测记录装置及方法
US6438707B1 (en) Fault tolerant computer system
CN101923508B (zh) 一种嵌入式系统中的异常处理方法及装置
JP5713056B2 (ja) プロセス制御装置及びシステム並びにその更新方法
US9712418B2 (en) Automated network control
US20080244307A1 (en) Method to avoid continuous application failovers in a cluster
CN109656742B (zh) 一种节点异常处理方法、装置及存储介质
CN101976217A (zh) 网络处理器异常检测方法及系统
WO2002093374A2 (en) Task supervision
WO2015033433A1 (ja) ストレージ装置及び障害部位特定方法
CN105426263A (zh) 一种实现金库系统安全运行的方法及系统
CA2152329C (en) Apparatus and methods for software rejuvenation
US7340594B2 (en) Bios-level incident response system and method
JPH02294739A (ja) 障害検出方式
CN105391575B (zh) 一种金库控制方法及系统
CN110188008B (zh) 作业调度主备切换方法、装置、计算机设备及存储介质
CN115858224A (zh) 触发看门狗复位的方法、装置、设备、介质和产品
JP2004246621A (ja) 情報採取プログラム、情報採取装置および情報採取方法
JP5196596B2 (ja) 障害検知システム、障害検知サーバ、及び、障害検知方法
US20240037014A1 (en) Prediction of an anomaly of a resource for programming a checkpoint
CN113836035A (zh) 电池管理系统测试方法、装置及电子设备

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
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20110803

Assignee: Hangzhou Dongxin Jiejun Science & Technology Co., Ltd.

Assignor: Dongfang Communication Co., Ltd.

Contract record no.: 2015330000162

Denomination of invention: Method and system for processing abnormal task in computer application system adopting embedded operating system

Granted publication date: 20130424

License type: Exclusive License

Record date: 20150616

LICC Enforcement, change and cancellation of record of contracts on the licence for exploitation of a patent or utility model