一种检测操作系统故障的方法和装置制造方法及图纸

技术编号:2831850 阅读:162 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种检测操作系统故障的方法,应用于具有多核多系统的设备中。该方法包括:从内存中划分出用于实现故障检测的共享内存区;多核多系统中的第二OS在正常时将正常状态字写入所述共享内存区中;多核多系统中的第一OS判断是否能够从所述共享内存区中读取到正常状态字,如果否,则确定第二OS故障。本发明专利技术还公开了一种检测操作系统故障的装置,包括共享内存区、多核多系统中的第一OS和第二OS。本发明专利技术能够实现对多核多系统中OS故障的检测。

【技术实现步骤摘要】

本专利技术涉及通信技术,特别是涉及一种检测操作系统(OS, Operating System)故障的方法和装置。
技术介绍
目前,微处理器技术得到了飞速的发展,出现了多核处理器。简单说来, 多核处理器就是在同一个硅晶片上集成了多个独立物理核心,在实际工作 中,多颗核心能够分别独立完成工作,从而达到了性能倍增的目的。基于多核处理器具有多个核心,每个核心能够分别独立完成工作的特 点,在具有多核处理器的设备上运行多个操作系统则成为了可能。图l是现 有技术中多核双系统的结构示意图。参见图1,以目前出现的一种多核双系 统(MCDS, Multi-Core Dual-System)为例,设备中配置有多核处理器,多 核处理器中的一部分核运行OSl,另一部分核运行OS2,比如OSl为防火 墙处理所对应的操作系统,OS2为防病毒处理所对应的:t喿作系统,这样,运 行OSl的核和运行OS2的核则可以分别完成对应的防火墙和防病毒的业务 处理,从而使得设备不仅能够因为具有多核处理器而极大地提高其处理性 能,而且还能够因为具有双操作系统而完成多种业务处理,极大地提高了设 备的处理性能。诸如多核双系统的多核多系统中包括多个OS,每一个OS独立运行互 不干扰,分别实现各自的业务处理功能。当其中任意一个OS发生故障无法 运行时,其对应的功能则无法实现。这样,为了保证业务处理功能的正常实 现,则要求能够检测出OS的故障,以便于采取对应的故障恢复措施。然而, 诸如多核双系统的多核多系统是一种新出现的技术,目前还没有一种检测多 核多系统中os故障的方法。由此可见,提供一种检测多核多系统中os故障的方案已经成为了目前 亟待解决的问题。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种检测OS故障的方法和装置,以便于检测出多核多系统中OS的故障。为了达到上述目的,本专利技术的技术方案是这样实现的 一种检测操作系统故障的方法,应用于具有多核多系统的设备中,该方法包括>^人内存中划分出用于实现故障;f全测的共享内存区; 多核多系统中的第二 OS在正常时将正常状态字写入所述共享内存区中;多核多系统中的第一OS判断是否能够从所述共享内存区中读取到正常 状态字,如果否,则确定第二OS故障。一种检测操作系统故障的装置,包括共享内存区、多核多系统中的第 一OS和第二OS,其中,第一 OS,用于判断是否能够从共享内存区中读取到正常状态字,如果 否,则确定第二OS故障;第二 OS,用于在正常时将正常状态字写入所述共享内存区中。由此可见,在本专利技术中,多核多系统中的一个OS能够利用共享内存区 来检测另一个OS是否故障,因此,提供了有效地检测多核多系统中OS故 障的方案。附图说明图1是现有技术中多核双系统的结构示意图。图2是在本专利技术一个实施例中检测OS故障的流程图。 图3A是在本专利技术实施例中多核双系统的结构示意图。图3B是在本专利技术一个实施例中OS的状态迁移图。图4是在本专利技术一个实施例中检测OS故障的装置结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面结合附图及具体实 施例对本专利技术作进 一 步地详细描述。在多核多系统中,没有实际的物理通道,因此,不同OS之间无法通过 发送消息的方式来实现OS故障的检测。而对多核多系统的特点进行分析可 知,为了保证每一个OS的正常工作,每一个OS都拥有独立的内存区,都 需要对内存进行访问。比如图1中,OS 1和0S2分别需要访问其独享的内 存区。利用每一个os都需要访问内存的特点,本专利技术提出了一种检测os故障的方法。在该方法中,从内存中划分出用于实现故障检测的共享内存区; 多核多系统中的第一 OS将正常状态字写入所述共享内存区中;多核多系统 中的第二OS判断是否能够从所述共享内存区中读取到正常状态字,如果是, 则确定第一OS正常,否则,确定第一OS故障。图2是在本专利技术一个实施例中检测OS故障的流程图。参见图l和图2, 以多核双系统为例,本专利技术 一个实施例4企测该多核双系统中OS故障的过程 具体包括以下步骤步骤201:预先从内存中划分出用于实现故障检测的共享内存区。在划分内存区时,不仅需要在内存中为每一个OS划分其独享的内存区, 保证每一个OS可以分别完成其业务处理功能,而且,为了保证后续OS故 障的检测,还需要从内存中划分出用于实现故障检测的共享内存区。对于该 共享内存区,每一个OS均可以访问。此时,多核双系统的结构可以参见图3A所示。步骤202:预先定义OS的运行状态。这里,为了更好地在后续过程中区分出OS的具体故障情况,比如是初 始启动时故障还是运行过程中故障,则需要通过本步骤的处理来定义出OS 的运4亍状态。本步骤中定义的OS的运行状态具体可以包括初始态、初始化故障态、 运4亍态和运4于故障态。步骤203:根据预先定义的OS工作状态,定义共享内存区中的状态变 量及其对应的状态字。由于OS的工作状态具体可以包括初始态、初始化故障态、运行态和运 行故障态,因此,在后续过程中写入共享内存区的变量的状态字需要反映该 四种工作状态。在本步骤中,共享内存区中的状态变量记为ulHeartFlag,定义ulHeartFlag包括Bit0和Bitl两个比特位,其中,Bit0可以有0或1两种状态字,0为故障状态字,1为正常状态字;Bitl也有0或1两种状态字,0为初始态状态字,l为运行态状态字。这样,在后续过程中,通过状态变量ulHeartFlag的BitO和Bit 1两个比特位的状态字的不同组合,则可以分别表示OS的四种运行状态。在本步骤中,i殳置ulHeartFlag的Bitl的初始值为0, BitO的初始值为0。在实际的实现中,可以定义一个枚举变量来表示OS2的四种工作状态,其数据结构可以设计为typedef enum tagMCDSOS2StateDRV—MCDSHEART—OS2—INITIALING, /*OS2处于初始态*/DRV—MCDS—HEART—OS2—INITIAL—FAIL, /*OS2处于初始故障态*/DRV_MCDS—HEART_OS2—RUN, /*OS2处于运行态*/DRV—MCDS_HEART—OS2_BLOCK, /*OS2处于运行故障态*/DRVMCDS—HEART—OS2—BUTT }MCDSOS2—STATE—E;步骤204:预先定义共享内存区中的自旋锁变量及其变量值。 由于在后续过程中,0S1和0S2都会访问共享内存区,因此,为了避 免出现OS1和OS2同时访问共享内存区同时进行读和写状态变量 ulHeartFlag的操作,在本步骤中,需要定义出自旋锁变量记为u旧eartLock, 并定义出ulHeartLock的值包括锁定状态字比如为1,锁定状态字表示有OS 正在访问共享内存区,ulHeartLock的值还包括解锁状态字比如为0,解锁状 态字表示没有OS访问共享内存区。自旋锁变量ulHeartLock的初始值i殳置为解锁状态字0。 图3B是在本专利技术一个实施例中OS的状态迁移图。下述过程的处理可 以参考图3B所示的状态迁移图。另外,为便于描述,以下过程中以OS1正常初始化后正常运行,并检 测OS2是否发生故障的过程为例进行说明。步骤205:多核双系统中的0S1和OS2上电本文档来自技高网
...

【技术保护点】
一种检测操作系统故障的方法,应用于具有多核多系统的设备中,其特征在于,该方法包括:从内存中划分出用于实现故障检测的共享内存区;多核多系统中的第二OS在正常时将正常状态字写入所述共享内存区中;多核多系统中的第一OS判断是否能够从所述共享内存区中读取到正常状态字,如果否,则确定第二OS故障。

【技术特征摘要】
1、一种检测操作系统故障的方法,应用于具有多核多系统的设备中,其特征在于,该方法包括从内存中划分出用于实现故障检测的共享内存区;多核多系统中的第二OS在正常时将正常状态字写入所述共享内存区中;多核多系统中的第一OS判断是否能够从所述共享内存区中读取到正常状态字,如果否,则确定第二OS故障。2、 才艮据权利要求1所述的方法,其特征在于,该方法进一步包括在共享 内存区中定义包括比特位BitO的状态变量ulHeartFlag,并且,定义BitO的值包 括正常状态字和故障状态字,并将BitO的初始值设置为故障状态字;所述第二 OS在正常时将正常状态字写入所述共享内存区中的步骤包括 第二 OS初始化完成后,如果正常则每当到达第二定时器的定时时间后访问共 享内存区中的状态变量ulHeartFlag,将比特位BitO的值置为正常状态字;所述第一 OS判断是否能够从所述共享内存区中读取到正常状态字的步骤 包括第一 OS初始化完成后,每当到达第一定时器的定时时间后访问共享内 存区中的状态变量ulHeartFlag,判断比特位BitO的值是否为正常状态字;在第一OS判断出比特位Bit0的值为正常状态字之后,进一步包括第一 OS将共享内存区中状态变量ulHeartFlag的比特位BitO的值置为故障状态字。3、 根据权利要求2所述的方法,其特征在于,在第一 OS判断出比特位 BitO的值不是正常状态字之后,并在确定第二 OS故障之前,进一步包括第 一 OS判断已连续检测到比特位BitO的值不是正常状态字的次数是否达到预先 设定的次数阈值,如果是,则继续执行所述的确定第二OS故障的步骤,否贝'J, 返回执行所述的每当到达第一定时器的定时时间后访问共享内存区中的状态变 量ulHeartFlag的步骤。4、 根据权利要求2所述的方法,其特征在于,该方法进一步包括定义状 态变量ulHeartFlag中包括比特位Bitl,并且,定义Bitl的值包括初始态状态字和运行态状态字,并将Bitl的初始值设置为初始态状态字;第二OS如果初始 化完成,则访问共享内存区中的状态变量ulHeartFlag,将比特位Bitl的值置为 运行态状态字;在到达第一定时器的定时时间之后,并在判断比特位BitO的值是否为正常 状态字之前,进一步包括第一 OS判断共享内存区中状态变量ulHeartFlag的 比特位Bitl的值是否为初始态状态字,如果是,则直接确定第二OS处于初始 化故障态,结束当前流程,否则,继续执行所述的判断比特位BitO的值是否为 正常状态字的步骤;则,所述的确定第二 OS故障为确定第二 OS为运行故障态。5、 根据权利要求4所述的方法,其特征在于,在第一 OS判断出比特位 Bitl的值为初始态状态字之后,并在确定第二 OS处于初始化故障态之前,进 一步包括第一 OS判断已连续检测到比特位Bitl的值为初始态状态字的次数是否达 到预先设定的次数阈值,如果是,则继续执行所述的确定第二 OS处于初始化 故障态的步骤,否则,返回执行所述的每当到达第一定时器的定时时间后访问 共享内存区中的状态变量ulHeartFlag的步骤。6、 根据权利要求1至5中任意一项所述的方法,其特征在于,该方法进一 步包括在共享内存区中定义自旋锁变量ulHeartLock,并且,定义ulHeartLock 的值包括锁定状态字和解锁状态字,并将ulHeartLock的初始值设置为解锁状态 字;在第一OS和第二OS每次访...

【专利技术属性】
技术研发人员:郭武武建中
申请(专利权)人:杭州华三通信技术有限公司
类型:发明
国别省市:86[中国|杭州]

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

1