一种星载操作系统集成的故障快速自主处理方法

文档序号:9349984阅读:243来源:国知局
一种星载操作系统集成的故障快速自主处理方法
【技术领域】
[0001] 本发明涉及一种星载操作系统集成的故障快速自主处理方法,属于高可靠、高可 信嵌入式操作系统软件领域。
【背景技术】
[0002] 操作系统是星载计算机软件的重要组成部分,由于星载计算机对可靠性要求极 高,因此需要操作系统具有较高的容错能力,在软件层面上支持快速的自主故障处理和修 复。
[0003] 传统星载操作系统中,对故障(异常)处理是利用处理器硬件的中断或是陷阱,从 而进入异常服务程序完成对故障处理。这种方法虽然切实有效,但是有两点局限:一是需要 硬件支持,如果软件运行时发生的故障不能引起处理器中断或陷阱,则不能对故障进行处 理;二是由于处理器中断或陷阱的类型有限,因此识别和处理的故障种类也有限。

【发明内容】

[0004] 本发明解决的技术问题是:为进一步提高软件的故障诊断和处理能力,作为现有 操作系统级异常故障处理的补充,提出一种星载操作系统集成的故障快速自主处理方法, 使得操作系统提供了应用层面的一种故障诊断和处理机制,能够采用软件手段有效解决系 统中处理器中断或陷阱无法识别和处理的故障问题。
[0005] 本发明的技术解决方案是:一种星载操作系统集成的故障快速自主处理方法,包 括基于hash表的故障快速查找和基于故障消息队列机制的故障动态自主处理两个主要组 成部分,步骤如下:
[0006] 1)实现基于哈希表(hash)表的故障快速查找,查找以故障代码为关键字
[0007] 11)定义hash表的表项记录,用于故障信息的管理,每个表项记录包括:故障代 码、故障诊断结果和用户自定义的故障处理函数,每种故障对应一个唯一的故障代码,即故 障代码是表项的关键字;
[0008] 12)根据故障代码这个关键字,利用hash函数计算向hash表中插入表项记录以及 在hash表中查找表项记录的位置,如果计算过程中有两个或多个表项记录的计算位置发 生重叠,采用线性探测再散列的方法解决;
[0009] 2)实现基于故障消息队列机制的故障动态自主处理
[0010] 21)定义一个故障消息队列,队列中每一项至少包括故障代码;
[0011] 22)在星载操作系统运行过程中,当内核检测到故障时,把故障代码发送到故障消 息队列;
[0012] 23)通过故障消息队列取得故障代码,根据故障代码在hash表中进行查找,得出 故障诊断结果,并调用由用户自定义的故障处理函数进行故障处理。
[0013] 所述步骤12)中采用线性探测再散列方法解决hash函数值冲突问题通过以下公 式进行计算:
[0014] Hi= (H(key)+d^modL, (Ii=I, 2, ???,k,kL-I
[0015] 其中,L为hash表长度,H(key)为故障代码ercode在hash表中的位置,Hi为第 i次解决冲突的位置。
[0016] 本发明与现有技术相比具有如下优点:
[0017] (1)传统星载操作系统对故障处理是利用处理器硬件的中断或陷阱进入异常处理 程序而实现的,这种方法虽然可靠、有效,但是与硬件相关性高、且处理的故障种类有限。本 发明方法完全采用软件实现故障的处理,具有良好的可移植和通用性。
[0018] (2)本发明对故障信息的检索采用hash方法,不需要进行排序,保证了处理的快 速、高效;故障数量理论上不受限制;故障处理函数用户可定制,具有高度灵活性。
[0019] (3)本发明采用消息队列实现故障信息的运行时动态处理,具有自动处理功能,不 需要人为干预;由于使用消息队列,保证了系统中其他模块的运行不会被阻塞。
【附图说明】
[0020] 图1为本发明星载操作系统故障快速自主处理方法的总体结构;
[0021] 图2为故障信息的hash表的结构;
[0022] 图3为基于消息队列的故障处理机制。
【具体实施方式】
[0023] 一、方法原理
[0024] 为了进一步提高操作系统的可靠性、增加软件对故障的处理能力,本发明采用软 件方法实现了一种故障处理方法。该方法的主要思想是给每种故障定义一个故障代码及其 相关信息的记录,并建立记录的快速查找表;在操作系统运行时,发生故障时把故障代码通 过消息机制发送给故障消息队列,可以由其他任务从故障消息队列中取出故障代码,并根 据故障代码快速检索查找表,进行相应的处理。
[0025] 由于利用hash表技术实现操作系统内核级别对故障的快速检索,加快了故障处 理的速度,减少了故障处理对处理器的占用率。
[0026] 由于采用消息队列机制实现对故障的收集和处理,在时间上起到了缓冲的作用, 解决了故障发现任务与故障诊断和处理任务之间的同步问题,同时避免了故障处理过程中 占用其他任务的执行时间,从机理上避免了其他任务发生阻塞的可能性。
[0027] 二、设计方案
[0028] 给每种故障定义一个故障代码,并以故障代码为关键字建立故障记录快速查找 表;操作系统运行过程中,如果发生故障则把故障代码发送到消息队列,从消息队列中取得 故障消息后,根据故障代码快速检索查找表,进行相应的处理。本发明包括基于hash表的 故障快速查找和基于故障消息队列机制的故障动态自主处理两个主要组成部分,本发明的 方案如图1所示。
[0029] 利用本发明的方法实现上述功能如下:
[0030] 1)为每种故障分配一个故障代码,定义故障诊断结果,并由用户定义故障处理函 数,作为一个记录项,以hash查找表的方式组织,实现以故障代码为关键字的快速插入和 快速查找。
[0031] 11)定义hash表的表项记录,用于故障信息的管理,每个表项记录包括:故障代 码、故障诊断结果和用户自定义的故障处理函数,每种故障对应一个唯一的故障代码,即故 障代码是表项的关键字。
[0032] 12)根据故障代码这个关键字,利用hash函数计算向hash表中插入表项记录以及
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1