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

文档序号:9349984阅读:来源:国知局
在hash表中查找表项记录的位置,如果计算过程中有两个或多个表项记录的计算位置发 生重叠,采用线性探测再散列的方法解决。整个hash表映射的组织结构如图2所示,哈希表 的一个表项记录包括故障代码、诊断结果和用户自定义处理函数,其中故障代码为关键字, 当一个故障发生需要查找hash表时,该故障的表项记录在hash表中的位置通过hash函数 对故障代码ercode进行计算得出,如果发生两个表项记录在hash表中位置重叠的情况,则 采用线性探测再散列方法解决冲突。
[0033] 121)hash函数的构造
[0034] 内核的故障代码能够唯一标识故障,可作为hash函数的关键字,即key = ercode。
[0035] 设故障代码为ercode,则hash函数为H (ercode)。
[0036] 设hash表长度为L。
[0037] H(key) = H(ercode) = ercode mod p (p选取质数或不包含小于20质因子的合 数)
[0038] H(key)为故障代码ercode在hash表中的位置,如果两个不同的ercode通过hash 函数H(key)计算的值相同,则采用以下冲突解决方法。
[0039] 122)冲突解决方法
[0040] 采用线性探测再散列的方法解决hash函数值的冲突问题。即故障代码ercode在 hash表中的位置通过以下公式进行计算。
[0041 ] Hi= (H(key)+d Jmod L,(Ii= 1,2,…,k (k < L-1)
[0042] H1为第i次解决冲突的位置。
[0043] 2)操作系统内核采用故障消息队列机制管理故障消息,并利用hash表快速查找 机制,实现操作系统对故障的动态自主处理。整个过程如图3所示,当操作系统内核检测到 故障时,把故障形成故障消息(故障代码为关键字)加入到故障消息队列中,同时有一个任 务并发地对故障消息队列进行监测,发现有故障消息则把该故障消息出队,并在hash表中 用故障消息中的故障代码作为关键字进行快速查找,如果找到则调用该故障对应的用户自 定义处理函数进行处理。
[0044] 21)定义一个故障消息队列,队列中每一项至少包括故障代码。故障消息队列,是 一个先入先出的队列型数据结构,具有入队和出队两个函数。队列的每项至少包括故障代 码,其中故障代码是关键字;此外还包括指向下一个节点的指针,其具体数据结构如下:
[0045]
[0046] 22)在星载操作系统运行过程中,当内核检测到故障时,把故障代码发送到故障消 息队列;
[0047] 23)通过故障消息队列取得故障代码,根据故障代码在hash表中进行查找,得出 故障诊断结果,并调用由用户自定义的故障处理函数进行故障处理。
[0048] 操作系统启动时,故障消息队列初始化为空队列。在操作系统运行过程中,如果发 生故障,由内核向队列中加入故障信息。采用消息队列机制能够保证故障处理过程中,系统 中的其他模块运行不会阻塞。
[0049] 故障处理部分有两个输入,即故障消息队列和hash表。在系统运行时,监控故障 消息队列,如果队列中有消息则对消息进行出队操作,根据消息中的故障代码(关键字)在 hash表中进行快速查找,根据查找的结果返回故障详细信息(即故障诊断结果),此外调用 用户自定义的故障处理函数,对故障进行处理。
【主权项】
1. 一种星载操作系统集成的故障快速自主处理方法,其特征在于包括基于hash表的 故障快速查找和基于故障消息队列机制的故障动态自主处理两个主要组成部分,步骤如 下: 1)实现基于hash表的故障快速查找,查找以故障代码为关键字 11)定义hash表的表项记录,用于故障信息的管理,每个表项记录包括:故障代码、故 障诊断结果和用户自定义的故障处理函数,每种故障对应一个唯一的故障代码,即故障代 码是表项的关键字; 12)根据故障代码这个关键字,利用hash函数计算向hash表中插入表项记录以及在 hash表中查找表项记录的位置,如果计算过程中有两个或多个表项记录的计算位置发生重 叠,采用线性探测再散列的方法解决; 2) 实现基于故障消息队列机制的故障动态自主处理 21) 定义一个故障消息队列,队列中每一项至少包括故障代码; 22) 在星载操作系统运行过程中,当内核检测到故障时,把故障代码发送到故障消息队 列; 23)通过故障消息队列取得故障代码,根据故障代码在hash表中进行查找,得出故障 诊断结果,并调用由用户自定义的故障处理函数进行故障处理。2. 根据权利要求1所述的星载操作系统集成的故障快速自主处理方法,其特征在于: 所述步骤12)中采用线性探测再散列方法解决hash函数值冲突问题通过以下公式进行计 算: Hi = (H (key) +d mod L,(Ii = 1,2,…,k,k < L-1 其中,L为hash表长度,H(key)为故障代码ercode在hash表中的位置,Hi为第i次 解决冲突的位置。
【专利摘要】本发明一种星载操作系统集成的故障快速自主处理方法,步骤如下:(1)为每种故障分配一个故障代码,并由用户自定义故障处理函数,作为一个记录项,以hash表的方式组织,实现以故障代码为关键字的快速插入和快速查找;(2)在星载操作系统运行过程中,当内核检测到故障时把故障代码发送到一个消息队列,通过消息队列取得故障消息,根据故障代码在hash表中进行查找,得出故障诊断的详细结果,并进行处理。本发明提供了应用层面的一种故障诊断和处理机制,能够采用软件手段有效解决系统中处理器中断或陷阱无法识别和处理的故障问题。
【IPC分类】G06F17/30
【公开号】CN105069052
【申请号】CN201510441109
【发明人】杨孟飞, 杨桦, 龚健, 乔磊, 徐健, 赵玮, 刘鸿瑾, 刘波
【申请人】北京控制工程研究所
【公开日】2015年11月18日
【申请日】2015年7月24日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1