计算机系统及其软件故障恢复方法

文档序号:6411888阅读:389来源:国知局
专利名称:计算机系统及其软件故障恢复方法
技术领域
本发明涉及具有由检查点重新运行方式所产生的故障恢复功能的计处机系统,该方式是通过在系统中产生故障时对来自故障发生前的状态的数据进行再处理来实现耐故障性的,尤其涉及具有关于软件故障的故障恢复功能的计算机系统。
关于计算机系统,从确保可靠性方面来讲,已开发并实施了各种故障恢复方法。特别是近几年来,随着计算机系统的普及对与故障对应等的可靠性的要求也变得逐年严格起来。
作为确保该耐故障性的计算机系统的构成方法之一有检查点重新运行方式。
作为实现该检查点重新运行方式的计算机系统的方法,确实在例如USP-4740969专利号的“METHOD AND APPARATUS FORRECOVERING FROM HAQDWARE FAULTS(用于修复硬件故障的方法和装置)或由Sequoia发表在1988年二月IEEE Computer期刊中题为“A FAULT-Tolerant Tightly coupled Multiprocessor forTransaction Processing(一种用于事务处理的紧耦合的容错多处理机)”中已被明确指出。
它们(指方法)是如何实现检查点重新运行方式呢,将参照图9说明其概要。另外,图中的实线表示时间帧。
这些技术配备在来自构成计算机系统的硬件的间断故障的系统的恢复中,并在系统中运行的过程或线程(thread)的重新运行后的再执于中定期保存必要的信息。
将保存该信息的时间点称做检查点,将保存该信息这一事实称做检查点的采集(参照图9的(1)、(2))。
由于构成计算机系统的硬件产生间断故障(参照图9(3)),而中断程序的执行时,该被中断的过程或线程的状态被重算到故障发生前的检查点(参照图9的(4)),程序从该检查点被再执行(参照图9的(5))。
此处在检查点采集处理时所保存的信息中有处理器的内部状态、超高速缓冲存储器,主存储器等。
由于在计算机系统中具备这种故障修复方式,因此,即使在发生了硬件的间断故障时,也能够使系统的运转不停止而继续运行。
通常,系统中的故障既有上述那样的硬件中的原因,也有软件中的原因。
在上述以往技术中,作为恢复对象的故障是硬件的间断故障,其次列举的有所谓软件故障引起的各种故障(以下归纳这些故障叫做“软件故障”)。
一种故障是,恢复是困难的系统失效,另一种是,虽然不到所谓处理程序无限循环状态的系统失效,但在发生阻碍正常的系统运动的不合适的状况时,是不能使系统继续运行的软件故障,以往,作为避免由软件故障引起的计处机的系统失灵的方法主要有用特别准备的软件库的作用提高具有多个应用处理程序的计算机系统的耐故障性的方式。
该软件库定期地将应用处理程序的状态保存在非易失性存储器中(将该动作叫做检查点化),通过将发送消息登录在发送装置记录文件中,将接收的消息登录在接收装置记录文件中就能从故障发生时的检查点起再执行。
而且,将再执行成功与否与登录在发送装置记录文件中的消息进行比较,在不成功时,逐渐扩散重算范围,以此作为特征。
再者,关于发生了软件故障的处理程序,是通过在保持改变登录在接收装置记录文件中的消息的序号等消息的收发整体的匹配性的范围内变化,避免依赖于定时的软件故障的方法。
以往这样的方法是通过使用应用处理程序的软件库来实现耐故障性。作为避免软件故障的主要方法在从检查点处的再执行中,通过在保持匹配性的范围内改变应用处理程序之间接收发送的消息的序号来避免依赖定时的软件故障。
为此,在操作系统的核心(程序)发生软件故障时,由于计算机系统本身已产生了系统失灵,没有能力修复应用处理程序级的故障。
鉴于上述实际情况,本发明提供了在操作系统的核心发生软件故障时,防止计算机系统自身产生系统失灵的技术。
本发明特征在于,识别由于软件故障的原因所发生的系统失效或虽未到达处理程序无限循环状态的系统失效但变成阻碍正常系统运转的状态的所谓软件故障的发生,该识别该软件故障发生时,通过有效地应用有关识别时间点的状态信息及采集、推断软件故障发生的主要原因,或者使用让系统环境变化等方法,在重新运行到检查点之后,对系统再执行,来避免由于上述软件故障的原因而发生的软件故障。
即,第一发明的特征在于,在具有计算机系统发生了故障时,通过从故障发生前的状态的再次执行数据处理,实现耐故障性的检查点重新运行方式进行的故障修复机构的计算机系统中,在由硬件故障的原因引起的硬件故障或者由软件错误引起的系统失效或虽未到达处理程序无限循环状态那样的系统失效但变成阻碍正常系统运转的状态的所谓软件故障发生时,由于具备了区分所述硬件故障和所述软件故障的故障识别的软件模块,在发生所述软件故障时记录故障发生时的系统状态的系统状态记录软件模块、推断有关所述软件故障发生的主要原因的软件故障发生主要原因推断软件模块、推断有关由所述软件故障发生的主要原因推断模块推断了的软件故障发生主要原因的避免方法的软件避免方法推断软件模块、在重标直到检查点时间点之后,实施有关由所述软件故障避免方法推断模块所推断了的所述软件故障发生的主要原因的避免方法的软件故障避免方法实施模块,并对系统再执行,避免由于所述软件错误而发生的软件故障。
这样,由于具备了伴随软件故障的发生的故障主要原因的解析模块、基于该解析的故障避免作用的推断模块、通过重新运行回到故障发生前的状态并实施这些故障避免作用的模块等,并在积极地去掉软件故障以后,附加再执行系统的功能,使得不仅以基于检查点重新运行方法的硬件的间断的故障故障对象的故障修复,而且由软件故障引起的故障、修复也成为可能,提高计算机系统的可靠性。
第二发明的特征在于,在具有当计算机系统中发生故障时,通过对来自故障发生前的状态的数据处理的再执行,实现耐故障性的检查点重新运行方式进行的故障修复机构的计算机系统中,在由硬件故障引起的硬件故障或由软件错误引起的软件故障发生时,由于具备了区分所述硬件故障和所述软件故障的故障识别模块,在发生所述软件故障时记录故障发生时的系统状态的系统状态记录模块,以及重新运行直到检查点的时间点之后,从关于所述软件故障的软件故障发生时使状态的程序执行环境发生变化的软件执行环境操作模块,通过对系统再执行,就能避免由所述软件错误引起的软件故障。
这样,通过形成检测软件故障的发生,伴随软件故障的发生,通过重新运行回到故障发生前的状态、使造成故障发生的软件执行环境改变之后,再执行系统的方法的结构,使得不仅以基于以往检查重新运行方式的硬件间断故障作为对象的故障修复,而且由软件故障引起的故障,修复也成为可能,可以提高计算机系统的性能。
第3发明的特征是,它是这样的计算机系统,该系统具有在系统中发生了故障时,通过从故障发生前的状态再执行数据处理,实现耐故障性的检查点重新运行方式进行的故障修复的机构,该系统具备当系统中发生故障时,识别该故障是由软件错误引起的软件故障的故障识别模块,用所述故障识别模块识别软件故障的发生时记录故障发生时的系统的状况的系统状况记录模块、在由所述系统状况记录模块所记录的信息基础上推断有关软件故障发生的主要原因的软件故障发生主要原因推断模块、推断由所述软件故障发生主要原因推断模块所推断的、有关软件故障发生的主要原因的避免方法的软件故障避免方法推断模块、在重新运行后实施有关由所述软件故障避免方法推断模块所推断的所述软件故障发生的主要原因的避免方法的软件故障避免方法实施模块,以及根据由所述系统状况记录模块所记录的信息、改变在重新运行后的再执行时的程序执行环境的软件执行环境操作模块,并在软件故障发生时,在由有关所述软件故障发生的主要原因的推断所进行的避免方法的推断有困难的情况下,在由所述软件执行环境操作模块操作了软件执行的环境之后再执行系统,就避免由软件错误引起的软件故障。
这样,通过组合由实施有关由软件故障避免方法推断模块所推断的软件故障发生原因的避免方法的软件故障避免方法实施模块所实现的、从积极去掉软件故障之后的检查点再起动系统的功能和从软件故障发生时的状况起改变程序执行环境的、由软件执行环境操作方法实现的、在改变了软件执行环境之后、从检查点开始再起动系统的功能,就能提高有关软件故障的故障避免率、进一步提高计算机系统的可靠性。
第4发明的特征是,在规定的次数内,返复实施根据至少由所述软件故障避免方法实施模块所实施的有关软件故障发生原因的避免方法,或者所述软件执行环境操作模块所实施的多个软件执行环境操作的方法所进行的处理,直到软件故障被避免。
这样,关于一个软件故障,在规定的次数内通过返复实施有关由软件故障避免方法实施模块所实施的软件故障发生原因的避免方法,以及由软件执行环境操作模块所实施的多个软件执行环境操作的方法,直到该软件故障被避免,就能提高有关软件故障的避免率。
第5发明的特征是,在实施所述软件故障避免方法实施模块、或实施所述软件执行环境操作模块,再执行系统之后,重新出现了软件故障时,通过使具有故障原因的软件模块与系统分开之后,再执行系统,就能避免由所述软件故障错误引起的软件故障。
这样,通过使相关的模块分开的防止不正常状况发生于未然,就能避免最终的软件故障。
第6发明的特征是,在实施所述软件故障避免方法实施模块,或所述软件执行环境操作模块、再执行了系统之后,又一次出现了软件故障时,从系统中抹去引起软件故障的进程式线程之后再执行系统。
通过附加这样的功能,抹去引起软件故障的进程或线程,就能使不正常状况的发生防患于未然,避免最终的软件故障。
第7发明的特征是,在所述第5发明中,动态地而且同时不使系统停止地从具有故障原因的软件模块变换到去掉了故障原因的软件模块中。
附加这样的功以,对于被分开的模块来说,在修正不正常状况之后,通过像硬件部件的部件交换那样能够替换,就能提高系统的可靠性。
第8发明的特征是,在规定的次数内在返复实施了由至少所述软件故障避免方法实施模块或所述软件执行环境操作模块所进行的动作直到软件故障被避免之后,当再次出现了软件故障时,就实施系统的再恢复。
根据附加这样的功能,通过有限次实施各种软件故障避免策略,就能避免避免策略的无限次使用。
第9发明的特征是,所述系统状况记录模块将软件故障发生时的系统状况记录在末重新运行的存储区域或非易失性的存储装置中作为用于分析软件故障发生原因的提供信息。
这样,通过将有关软件故障的信息记录在未重新运行的存储区域非易失性的存储装置中,就能提高可以分析有关故障原因的系统的维修性。
第10发明的特征是,所述软件故障发生原因推断模块将所推断了的故障发生原因记录在未重新运行的存储器或非易性失性的存储装置中,用为用于分析故障发生原因的提供信息。
这样,通过将软件故障避免中所实施的发生原因记录在未重新运行的存储器或非易失性的存储装置中,就能提高故障发生后的系统的维修性。
第11发明的特征是,所述软件故障避免方法推断模块将有关被推断的软件故障发生原固的避免方法记录在未重新运行的存储器非易失性的存储装置中作为用于实施故障避免方法的提供信息。
这样,通过将软件故障避免中所实施的发生原因记录在未重新运行的存储器或非易失性的存储装置中,就能提高故障发生后的系统的维修性。
第12发明的特征是,所述系统状况记录模块将有关软件故障发生时的系统的存储器、各种装置的数据等的转出根据用户的要求开始写到外部存储装置中,作为用于分析软件故障发生原因的信息来提供。
通过附加这样的功能,记录有关软件故障的系统的转出信息,就能分析有关故障的原因、提高系统的维修性。
第13发明的特征是,所述软件执行环境操作模块包含把运行的处理程序数作为软件执行环境操作之一进行变更的模块。
通过配置这样的功能、改变运行的处理程序数,防止不正常状况发生于未然,就能够避免软件故障。
第14发明的特征是,所述软件执行环境操作步骤包含把在有关引起软件故障的进程(process)或线程(thread)的堆栈方面的自动变量区域作为软件执行环境操作之一进行清除的装置。
这样,作为忘记自动变量初始化的对策,通过积极地清除它,使不正常状况的发生防止于未然,就能避免软件故障。
第15发明的特征是,所述软件执行环境操作模块包含作为软件执行环境操作之一的、动态地补充在系统中使用的资源的装置。
通过配备这样的模块,防止因资源不足而发生不正常状况于未然,就能避免软件故障。
第16发生的特征是,所述软件执行环境操作模块包含作为软件执行环境操作之一的,调整输入输出要求的发送定时的方法。
通过配置这样的方法,改变有关输入输出要求的发送定时、防止不正常状况发生于未然,就能避免软件故障。
第17发明的特征是,在所述软件故障避免方法实施模块中,软件故障发生原因如果是由软件故障发生原因推断方法推断为对未装入到物理存储器上的虚拟存储器的存取,则在软件故障避免方法推断模块中,作为有关该软件故障发生原因的避免方法,当推断为确保有关虚拟存储器的物理存储器时,就实施所述被推断的避免方法。
通过配备这样的方法,防止不能分页状况发生于未然、就能避免软件故障。
第18发明的特征是,在所述软件故障避免方法实施模块中,软件故障发生原因如果由软件故障发生原因推断方法推断是有关在多处理程序环境中的互斥控制的死锁,则在软件故障避免方法推断模块中,作为有关该软件故障发生原因的避免方法,在推断为改变运行的处理器数以及实施互斥控制的代码时,就实施所述的避免方法。
通过配备这样的方法,防止死锁状况发生于未然,就能避免软件故障。
第19发明的特征是,实施有关在所述多处理程序环境中的互斥控制的死锁的避免方法,并在系统再执行后,进行了软件故障避免时,使用随后的检查点采集方法的一环,使实施运行的处理器数以及互斥控制的代码回到原来状态,使系统变成软件故障发生前的系统的运行状态。
通过配备这样的方法,在故障避免后,解除(还原)对作为故障避免方法而实施的系统的变更(缩小在系统运行中的规格)状态,在故障排除后,能够使系统回到正常状态,使系统能运行良好,第20发明的特征是,所述未重新运行的存储器或非易失性的存储装置中所记载的信息,在软件故障避免后,作为检查点采集方法的一环,通过计算机系统具有的系统运行记录(记录)机构被存储。
通过在故障修复后的检查点的时间点热起动系统的运行记录(记录),由于配备这样的方法,将在软件故障避免中实施的状况保存在系统的记录中,因而能提高故障发生后的系统的维修性。


图1表示涉及本发明的实施形态的计算机系统整体结构的框图。
图2是为说明涉及本发明第1实施形态的计算机系统的动作过程的流程图。
图3是为说明涉及本发明的第2实施例的计算机系统的动作过程的流程图。
图4是举例表示在本发明的实施形态中的第1具体的软件故障的动作概念图。
图5是举例表示在本发明的实施形态中的第2具体的软件故障的动作概念图。
图6是举例表示在本发明的实施形态中第3具体的软件故障的动作概念图。
图7是举例表示在本发明的实施形态中第4具体的软件故障的动作概念图。
图8是表示检查点重新运行方式的概念图。
下面参照设计图说明本发明的实施形态。
图1是表示涉及本发明的一个实施形态的计算机系统整体结构的框图。
在图1中,10是担任系统控制的处理器,20是经由总线40连接处理器10形成主存储的存储器、30是同样地经由总线被连接的非易失性的存储器、这里,软件故障发生时的系统的状况、软件故障发生原因、软件故障避免方法等信息至少被存储器在存储器20的未重新运行的存储区、或者非易失性的存储器30的任何一个中。
100至108分别是形成为实现处理器10所具有的故障修复机构的操作系统的构成固素,100是采集系统的检查点的检查点采集模块、101是在故障发生时向检查点进行重新运行的检查点重新运行模块、102是再起动系统的系统再执行模块。
103是在由硬件故障引起的硬件故障或由软件错误而引起的软件故障发生时区分硬件故障或软件故障的故障识别模块。
104是在由所述故障识别模块103判断为该故障为软件故障时记录故障发生时的系统的状况(处理器的寄存器、堆栈内容等)的系统状况记录模块。
105是当软件故障发生时推断有关该软件故障的发生原因的软件故障发生原因推断模块、106是推断避免该软件故障的方法的软件故障避免方法推断模块。
107是在由所述系统再执行模块102所进行的系统再执行前由所述软件故障避免方法推断模块106所推断的、实施该软件故障避免方法的软件故障避免方法实施模块。
108是在由所述软件故障发生原因推断模块105推断有关该软件故障的发生原因有困难时,在重新运行之后被实施的软件执行环境操作模块。
在存储器20中设置了在通过故障识别模块103判断了故障是软件故障时,该软件故障发生时的系统状况(处理器的寄存器、堆栈内容等)由所述系统状况记录模块104所记录的软件故障发生状况记录区200、有关由软件故障发生原因推断模块105所推断的该软件故障的发生原因记录的软件故障发生原因记录201、以及关于该软件故障的、由软件故障避免方法推断模块106所推断的该软件故障避免方法被记录的软件故障避免记录区202等。
在非易失性的存储器30中设置了记录了与上述软件故障发生状况记录区200具有同样的内容的软件故障发生状况记录区300、记录了与上述软件故障发生原因记录201有同样的内容的软件故障发生原因记录301、以及记录与上述软件故障避免方法记录区202有同样的内容的软件故障避免方法记录区302等。
上述存储器20和非易失性存储器30在计算机系统中能够有选择地具备其双方或任何一个。但是,在具备存储器20时,需要是未通过检查点重新运行重新运行的存储器。
在参照图2中所示的流程图的同时说明涉及伴随故障发生的本发明第1实施形态的计算机系统的动作流程。
在系统中如果发生故障,则故障识别模块103对所发生的故障是硬件故障(则硬件故障引起的故障)还是软件故障(由软件错误而引起的故障)进行区分(图2中步骤S1)。
通常,硬件故障的检测,由硬件机构实施通过故障中断通知软件。
另一方面,软件故障的检测通过基于软件逻辑一贯性检查(断言和应急例程等)、或异常方法等进行。
所述故障识别模块103是通过这些检测机构实施,并进行故障识别。
在这里,如果故障原因被判断为是硬件故障时,通过检查点重新运行模块101实施系统的重新运行(图2步骤S1,S8)。
在该实施形态中,关于有关硬件故障的对应,由于与通常的检查点重新运行方式的计算机相同,其详细说明省略。
如果判断故障原因是软件故障时,通过系统状况记录方法104将故障发生时的系统状况(处理器的寄存器、堆栈内容等)记录在软件故障发生状况记录区200、300中(图2步骤S3)。另外,通过操作,在该时间点,将有关不正常状况发生时的系统的存储器、各种装置的数据等转出写到外部存储装置中以便日后进行故障分析。
软件故障发生原因推断模块105判断是否能推断该软件故障发生原因,在不可能推断时,由检查点重新运行模块101实施系统的重新运行(图2步骤S4)。
另外,在能够推断该软件故障发生原因时,将有关由软件故障发生原因推断模块105所推断的该软件故障发生原因记录在软件故障发生原因记录201、301中(图2步骤S5)。
接着,软件故障避免方法推断模块106推断避免该软件故障的方法(图2步骤S6),并将该软件故障避免方法记录在软件故障避免方法记录区202、302中(图2步骤S7)、通过检查点重新运行装置101实施系统的重新运行(图2步骤S8)。
在检查点重新运行之后,判断所发生的故障是软件错误还是硬件故障,在判断是硬件故障时,实施由系统再执行模块102所进行的再执行处理(图2步骤S9,S14)。
在软件故障的情况下,判断是否是初次实施有关该软件故障-序列恢复处理(图2步骤S11),在初次实施的情况下,由软件故障避免方法记录区202,302判断是否正在推断由软件故障避免方法推断模块106所推断的该软件故障避免方法(图2步骤S12),在正在推断时,从所述软件故障避免方法记录区202,302的信息中,由软件故障避免方法实施模块107实施了该软件故障避免方法后(图2步骤S13),实施系统再执行模块102(图2步骤S14)。
在软件故障避免方法推断模块106没有推断该软件故障避免方法时,在实施软件执行环境操作方法108之后(图2步骤S15),实施系统再执行模块102(图2步骤S14)。
在第2次实施有关该软件故障的一序列恢复处理时(第一次实施的软件故障避免方法无效又发生软件故障时)(图2步骤S16),将具有故障原因的软件模块分离或者把认为引起故障原因的进程(或线程)从系统中抹去(图2步骤S17)。
当第3次实施有关该软件故障的一序列恢复处理时(第2次实施的处理无效,又发生了软件故障时),实施系统的再恢复(图2步骤S18)。
下面以具体的软件故障为例说明本发明的实施形态。
首先,以第1具体的软件故障为例说明本发明的实施形态。
在该实施形态中,涉及到使用有关虚拟存储器存取发生异常的情况。
通常,具有虚拟存储方式的操作系统中不存在于物理存储器表面,关于向虚拟存储器的存取,是通过把来自处理器(processon)的页面出错的异常作为触发脉冲(trigger),从外部存储装置等加载该页(调页)来实现请求调页。
这时,在作为调页对象的虚拟存储页中,在可能的状况下必须存取调页输入输出处理。即,作为操作系统的中断处理器等中断延长的程序被执行部分通常不作为调页的对象,而是在形成软件模块时,经常有必要考虑常驻在物理存储器表面。
通常,疏忽了向上述中断处理器的物理页的常驻处理的考虑时,操作系统判断向该虚拟存储器的调页的常驻处理的考虑时,操作系统判断向该虚拟存储器的调页为不可能,并使系统失效。
图4是表示在上述故障发生时,根据本发明怎样实施修复处理的概念图。另外,图中的实线表示时间帧。
在检查点采集后(图4的(1)),在上述那样状态下,通过对原来被常驻的、在有关该虚拟页存取的时间点(图4的(2))不应发生页面出错的页的存取,页面出错异常将由处理器(程序)通知操作系统(图4的(3))。
通常,在操作系统中,由于发生了所述页面出错异常,因此实施页面出错处理程序,实施是否能够进行由该页面出错异常产生的调页处理(图4的(4))。
当页面出错发生时,在符合“虚拟页是中断处理器(程序)”、“中断屏蔽比调页输入输出中所使用的中断的优先权高”等条件的情况下,该检查判断不可能调页。
在通常的操作系统中,之后,采集系统的存储器转出等,失效后,再引导。
在本发明的实施形态中,判断所述调页为不可能以后,将在该时刻的系统状况(处理器的寄存器、操作系统的堆栈信息等)记录在未重新运行的存储器或非易失性的存储装置中(图4的(5)),提供用于分析故障原因的信息。
从所述被记录的记录信息中,经由所述软件故障发生原因推断方法(图1的符号105),推断该软件故障发生原因,作为所述软件故障避免方法推断模块(图1的符号106)的一环,推断作为恢复处理应实施的动作,并将该动作记录在未重新运行的存储器或非易失性的记录装置中(图4的(6))。
之后,进行重新运行直到检查点时间点(时刻)(图4的(7))。
重新运行之后,作为所述的恢复处理被推断,并记录在未重新运行的存储器或非易失性的记录装置中的动作作为所述软件故障避免方法实施模块(图1的符号107)的一环而实施(图4的(8))。
在该实施形态的情况下,该软件故障避免方法实施模块(图1的符号107)就对先前页面出错异常所发生的虚页进行调页。
之后,由系统再执行模块(图1的符号102)从检查点时间点起再次起动系统(图4的(9))。
通过实施这些处理,在再次发生有关由再执行发生了页面出错的该虚页的存取时(图4中的(10)),通过抑制页面出错的发生,避免系统失效,就能使系统运行良好。
其次,将说明关于第二类的软件故障及与其对应的避免方法。在多处理器(程序)情况下,使用了为排除由多处理程序引起的资源操作的争执的锁定机构。
通常,在多处理程序中的锁定机构通过处理程序改写在原子(区)来实现叫做锁定变量的主存储器上取得的区域。例如,作为软件出错,假定在某处理程序将锁定变量A改写在原子区之后,若同样的处理程序要再将锁定变量A改写在原子区,则由于锁定变量A已经成为锁定状态,因此不会进行以上的处理。
下面,以第2具体的软件故障为例说明本发明的实施形态。
在该实施形态中,涉及到由使用多处理程序环境中的互斥控制处理双重确保同一自旋锁定的死锁。
图5是表示根据本发明如何实施修复处理的概念图。另外,图中的实线表示时间帧。
在检查点采集后(图5中的(1)),发生由双重确保同一自旋锁定引起的死锁(图5中的(2)),由于设置了预先在自旋锁定处理规定的自旋锁定计数器,通过该计数器的溢出,检测死锁。由于具备死锁故障检测处理,当死锁发生时,将故障发生通知给操作系统(图5的(3))。
这时,将发生了死锁这一事实、发生了死锁的锁定种类、达到死锁发生的操作系统中的函数调用状况等记录在所述未重新运行的存储器或非易失性的存储装置中,提供用于分析故障原因的信息。
通过所述软件故障发生原因推断方法(装置)从所述被记录的记录信息中推断该软件故障发生原因,作为所述软件故障避免方法推断方法的一环,推断作为恢复处理应实施的动作,并将该动作记录在未重新运行的存储器或非易失性的记录装置中(图5中的(4))。
之后,进行重新运行直到检查点时刻(图5之(5))。
重新运行之后,作为所述恢复处理被推断,并将记录在未重新运行的存储器或非易失性的记录装置中的动作作为所述软件故障避免方法实施方法(图1的符号107)的一环而实施(图5之(6))。
在该第2类软件故障的情况下,该软件故障避免方法实施方法(图1,图2的记号107)将实施把系统转移到单处理程序方式中等的处理(例如将单处理器中全部线程变更为不操作连接、锁定处理原始函数、锁定变量的中断屏蔽处理函数)。之后,由系统再执行方法(图1的记号102)从检查点的时间点起再起动系统(图5之(7))、由于实施这些处理,通过再执行,在又一次发生了双重确保同一锁定的场合(图5之(8)),由于抑制了死锁的发生、避免了虽不至于到处理程序无限循环状态那样的系统失效但阻碍正常系统运转的软件故障,从而使系统运行良好。
另外,经过某一时间,在所述软件故障避免之后,又从单处理程序方式回到多处理程序方式,使计算机系统回到正常状态(图5之(9))。
下面将以第3种软件故障为例说明本发明的实施形态。
在该实施形态中,涉及由软件故障模块中的逻辑故障引起的数据破坏等软件故障发生。
图6是表示在上述故障发生时根据本发明怎样实施修复处理的概念图。另外,图中的实线表示时间帧。
在检查点采集后(图6之(1)),由于某软件模块中的逻辑故障,发生数据破坏(图6之(2)),以此作为原因,检测出因向不正确地地址存取而发生异常,或由软件的逻辑一贯性检查例程(断信和应急例程等)检测出软件故障(图6之(3)),并通知操作系统(图6之(4))。
在通常的操作系统中,之后,采集系统的存储器转出等,失效后再引导。
在本发明的实施形态中,将该时间点的系统状况(处理器的寄存器、操作系统的堆栈信息等)记录在未重新运行的存贮器或非易失性的存储装置中(图6之(5)),提供用于分析故障原因的信息。
通过所述软件故障发生原因推断方法(图1、图2的记号105),试从所述记录的记录信息中推断该软件故障发生原因。
通常关于由存在于该实施形态中那样的、软件模块的逻辑引起的数据破坏,推断存在于所述第1及第2实施形态中那样的典型的故障原因是困难的。
因此,在推断这种故障发生原因有困难的状况下,在重新运行了直到检查点时间点(图7之(6))之后,使用所述软件执行环境操作方法,通过改变软件故障发生的定时,实施了“转移到单处理程序方式(将全部线程、资源结合到单个处理程序中)”、“清除运行了的线程的堆线上的自动变量区域(避免忘记自动变量的初始化)”、“补充在系统中使用的资源(避免因资源枯竭引起的失效)”、“调整输入输出要求发行的定时(避免由伴随输入输出要求的发行定时、中断定时的变更而引起的故障发生情况)”等避免所述软件故障发生原因的可能性的某一连串的软件故障避免方法(图6之(7))之后,使用系统再执行模块(图1的记号102),经过从检查点时间点再起动系统(图6之(8))的过程,通过操作软件执行环境,避免软件故障发生。
实施以上一连串的处理后,认为也有再次由软件故障引起的故障发生的情况。
关于在这样状况中的处理方法,将实施以下面示出的第4类软件故障为例的本发明实施形态中的故障避免处理。
在该实施形态中,涉及适用了以所述第3具体软件故障为例的实施形态引起的软件故障避免方法之后再次发生软件故障而避免软件故障有困难的状况中的情况。
图7是表示上述故障发生时根据本发明怎样实施修复处理的概念图。另外,图中的实线表示时间帧。
由实施以所述第3种软件故障为例的实施形态的软件故障避免处理之后,再一次发生软件故障(图7(2)),检测出向以此为原因的不正确地存址取而产生的异常情况发生或由软件的逻辑一贯性检查例程(断言和应急例程等)检测出软件故障(图7之(3)),并通知操作系统(图7之(4))。
之后,在通常的操作系统中,采集系统的存储器转出等,失效后,再引导。
在本发明的实施形态中,将该时间点的系统状态(处理器的寄存器、操作系统的堆线信息等)记录在未重新运行的存储器或非易失性的存储装置中(图7之(5)),提供用于分析故障原因的信息。
重新运行直到检查点时刻(图7之(6))以后,在该时刻,如果判断出这次发生的软件故障是已经实施一连串避免方法之后,又发生软件故障(已经实施了一连串避免方法由标志等来管理)(图7之(7)),在实施“将发生了不正常情况的软件故障模块与系统分开”、“将认为引起不正常情况(故障)的进程(或线程)从系统中抹去。”等处理(图7之(8))之后,通过由系统再执行方法(图1的记号102)从检查点时刻起再起动系统(图7之(9)),避免软件的故障发生。
另外,由上述“使发生故障的软件模块与系统分开。”的方法从系统中分开的软件模块,从所述系统状况(记录在未重新运行的存储器或非易失性的存储装置中)搞清楚有关软件故障的原因,实施软件故障的修正之后,可以动态地而且不使系统停止替换到已修正的软件模块。
例如,在UNIX操作系统中,有关每个设备驱动器的输入输出接口具有叫做设备开关表的共同结构,通过实施改变该表面的该设备驱动器入口、释放设备驱动口使用的资源等处理,就能与系统分开。
另外,即使实施了这些处理,在再次发生软件故障时,通过实施系统的再起动,就可避免无限地实施一连串的软件故障修复处理。
下面一边参照图3所示的流程图一边说明有关伴随故障发生的本发明第2实施形态的计算机系统动作的流程。
若在系统中发生故障,故障识别模块103将实施区分所发生的故障是硬件故障还是软件故障(图3步骤F1)。
若判断了故障原因是硬件故障时,则由检查点重新运行模块101实施系统的重新运行(图3步骤F1、F8)。
若判断了故障原因是软件故障时,则由系统状态记录模块104,将故障发生时的系统状况(处理器的寄存器、堆栈内容等)记录在软件故障发生状况记录区200、300中(图3步骤F3)。
软件故障发生原因推断模块105判断该软件故障发生原因是否能推断,不能推断时,由检测点重新运行模块101实施系统的重新运行(图3步骤F4)。
另外,该软件故障发生原因可以推断时,将由软件故障发生原因推断模块105推断的有关该软件故障发生原因记录在软件故障发生原因20、301(图4步骤F5)。
接着,软件故障避免方法推断模块106推断该软件故障的方法(图3步骤F6)、并将该软件故障避免方法记录在软件故障的避免方法记录区202、302中(图3步骤F7),由检查点重新运行模块101实施系统的重新运行(图3步骤F8)。
检查点重新运行后,判断故障原因是由软件故障引起的还是由硬件故障引起的(图3步骤F9),当判断为是由硬件故障引起时,则实施系统再执行模块102(图3步骤F9、F14)。
当故障原因由软件故障引起时,判断是否在规定的次数“N”以内实施该软件故障的一连串的恢复处理(图3步骤F11)。在规定次数“N”以内实施的情况下,由软件故障的避免方法记录202,302的信息判断(图3步骤F12)是否由软件故障的避免方法推断模块106正在推断该软件故障的避免方法,正在推断时,根据所述软件故障的方法记录区202、302中的信息由软件故障的避免方法实施模块107实施该软件故障的避免方法之后(图3步骤13)实施系统再执行模块102(图3步骤F14)。
由软件故障的避免方法推断模块106不能推断该软件故障的避免方法时,在实施软件执行环境操作模块108之后(图3步骤F15),实施系统再执行模块102(图3步骤F14)。
当在规定次数“N”以内设有实施该软件故障的一连串的恢复处理时,实施系统的起动(图3步骤F16)。
关于一个软件故障发生,在达到由系统避免之间,以规定次数“N”次为上限返复实施上述步骤F1至步骤F14的处理。
通常,在关于第2个软件故障发生,实施第1个故障的避免方法,再执行系统之后,发生第1个软件故障时,其发生原因,或者与第1个软件故障发生时的发生原因相同或不同。以后关于在规定次数“N”以内的一连串的处理,其特征是,分析每个故障发生原因,并一个个地实施响应于各种故障原因的处理。
如上所详述,若根据本发明,在具有通过在系统中发生了故障时从故障发生前的状态再执行数据处理实现耐故障性的检查点重新运行方式的故障修复机构的计算机系统中,识别由软件错误引起的系统失效或虽然没有到处理程序无限循环状态那样的系统失效的程度但却成为阻碍正常系统运转的状态的所谓软件故障的发生,在认识到了该软件故障的发生时,有效地应用该识别时刻的状态信息及采集并推断软件故障的发生原因,或者使用使系统环境变化等方法,重新运行直到检查点时刻之后,通过使系统再执行,避免由所述软件错误引起的软件故障,由此不仅能修复由硬件的间断故障引起的故障,而且即使在发生了软件故障时也能继续使计算机系统运行,大幅度地提高系统的可用性。
即,若根据第1发明,在发生了由硬件故障引起的硬件故障、或者由软件错误引发的系统失效或虽未到处理程序无限循环状态那样的系统失效但却变成阻碍正常系统运转的所谓软件故障时,由于该系统具备将所述硬件故障和所述软件故障区别开来的故障识别方法、在发生了所述软件故障时记录故障发生时的系统状况的系统状况记录方法、推断有关所述软件故障的发生原因的软件故障发生原因推断方法、推断有关由所述软件故障发生原因推断方法所推断的、软件故障发生原因的避免方法的软件故障避免方法推断方法,以及在重新运行到检查点时刻之后实施有关由所述软件故障的避免方法推断方法所推断的所述软件故障发生原因的避免方法的软件故障的方法实施方法,通过再执行系统,构成了避免由所述软件错引发的软件故障的结构,由此不仅使以基于检查点重新运行方式的硬件间断故障作为对象的故障修复,而且使由软件故障引发的故障修复成为可能,可以提设计算机系统的可用性。
另外,若根据第2发明,在发生了由硬件故障引发的硬件故障或由软件错误引发的软件故障时,由于具备将所述硬件故障和所述软件故障区分开来的故障识别方法、在发生了所述软件故障时记录故障发生时的系统状况的系统状况记录方法,以及在重新运行到检查点时刻之后,从关于所述软件故障的软件故障发生时的状况起改变程序执行环境的软件执行环境操作方法,并再执行系统,通过采用避免由所述软件故障错误引发的软件故障的结构,不仅使以基于以往的检查点重新运行方式的硬件间断故障作为对象的故障修复,而且使由软件故障引起的故障修复成为可能,可以提高计算机系统的可用性。
另外,若根据第3发明,当系统中发生了故障时,由于具备识别该故障是由软件错误引发的软件故障的故障识别方法、在用所述故障识别方法认识了软件故障的发生时记录故障发生的系统状况的系统状况记录方法、根据由所述系统状况记录方法记录的信息推断有关软件故障的发生原因的软件故障发生原因推断方法、推断有关由所述软件故障发生原因推断方法所推断的软件故障发生原因的避免方法的软件故障避免方法推断方法、在重新运行后实施有关由所述软件故障避免方法推断方法所推断的所述软件故障发生原因的避免方法的软件故障避免方法实施方法,以及根据由所述系统状况记录方法所记录的信息,改变在重新运行后的再执行时的程序执行环境的软件执行环境操作方法,通过构成为在软件故障发生时,在由有关所述软件故障发生原因的推断所产生的避免方法的推断有困难时,在由所述软件执行环境操作方法操作了软件执行环境之后再执行系统,避免由软件错误引发的软件故障,因而能够提高有关软件故障的避免率,更加提高计算机系统的可用性。
另外,若根据第4发明,通过采用了这样的结构,即在规定的次数内,返复实施有关至少由所述软件故障避免方法实施方法所实施的软件故障发生原因的避免方法的处理或由所述软件执行环境操作方法实施的多个软件执行环境操作方法的处理,直到软件故障被避免,就能够提高有关软件故障的避免率。
另外,若根据第5发明,通过构成为在实施所述软件故障避免方法实施方法,或所述软件执行环境操作方法,并在再执行了系统之后,又一次出现了软件故障时,通过将具有故障原因的软件模块从系统中分开之后,再执行系统,避免由所述软件错误引发的软件故障,使有关联的模块分开就可能防止故障发生于未然、避免最终的软件故障。
另外,若根据第6发明,在实施所述软件故障避免方法实施方法、或所述软件执行环境操作方法、并再执行系统之后,又出现了软件故障时,通过附加从系统中抹去了引起软件故障的进程或线程之后,再执行系统的功能,就可能预先防止伴随软件故障的不正常状况的发生,避免最终的软件故障。
另外,若根据第7发明,则在所述第5发明中,通过附加动态的而且同时不使系统停止地从具有故障原因的软件模块切换为除去了故障原因的软件模块的功能,使得在对于被分离的模块的故障修复之后,可能像硬件部件的部件互换那样切换,因此能够提高系统的可用性。
另外,若根据第8发明,通过附加在规定次数内返复实施了至少由所述软件故障避免方法实施方法或所述软件执行环境操作方法产生的动作直到软件故障被避免之后,以出现了软件故障时,实施系统的再起动功能,有限次地实施各种软件故障避免对策,因而能避免无限次的避免对策的适用。
另外,若根据第9发明,通过所述系统状况记录方法将软件故障发生时的系统状况记录在未重新运行的存储器或非易失性的存储装置中作为提供用于分析软件故障发生原因的信息,就可以提高能分析有关故障原因的系统的维修性。
另外,若根据第10发明,通过所述软件故障发生原因推断方法将推断了的故障发生原因记录在未重新运行的存储器或非易失性的存储装置中作为提供用于分析故障发生原因的信息,就有可能提高故障发生后的系统的维修性。
另外,若根据第11发明,通过所述软件故障避免方法推断方法将有关推断了的软件故障发生原因的避免方法记录在未重新运行的存储器或非易失性的存储装置中作为提供用于实施故障避免方法的信息,就可能提高故障发生后的系统的维修性。
另外,若根据第12发明,通过所述系统状况记录方法将有关软件故障发生时的系统的存储器、各种装置的数据等转出根据用户的要求写到外部存储装置中,作为提供用于分析软件故障发生原因的信息,就有可能分析有关故障的原因,提高系统的维修性。
另外,若根据第13发明,由于所述软件执行环境操作方法包含改变运转的处理器个数作为软件执行环境操作这一的方法,因而能够预先防止改变了运行处理器个数时的故障发生,避免软件故障。
另外,若根据第14发明,由于所述软件执行环境操作方法包含清除有关引发软件故障的进程或线程的堆栈上的自动变量区作为软件执行环境操作之一的方法,因此,就有可能将它作为忘记(疏忽)自动变量初始化的对策而积极地清除它,预防不正常状况发生,避免软件故障。
另外,若根据第15发明,由于所述软件执行环境操作方法包含动态地补充在系统中使用的资源作为软件执行环境操作之一的方法,因此,有可能预防因资源不足引起的故障发生,避免软件故障。
另外,若根据第16发明,由于所述软件执行环境操作方法包含调整输入输出要求的发行定时作为软件执行环境操作之一的方法,就有可能预防在改变了有关输入输出要求的发行定时时的不合适状况的发生,避免软件故障。
另外,若根据17发明,在对于所述软件故障避免方法实施方法,如果软件故障发生原因由软件故障发生原因推断方法推断是对没有加载在物理存储器上的虚拟存储器的存取,并且在软件故障避免方法推断方法中,推断为确保有关虚拟存储器的物理存储器作为有关软件故障发生原因的避免方法时,通过实施所述被推断的避免方法,就有可能预防不能调页的状况发生,避免软件故障。
另外,若根据第18发明,在对于所述软件故障避免方法实施方法,软件故障发生原因如果由软件故障发生原因推断方法推断是有关在多处理器环境中的互斥控制的死锁,并且在软件故障避免方法推断方法,推断为改变实施运行的处理器个数的变更,以及互斥控制的代码作为有关该软件故障发生原因的避免方法时,通过实施所述被推断的避免方法,有可能预防死锁状况的发生,避免软件故障。
另外,若根据第19发明,在实施有关所述多处理器环境中的有关互斥控制的死锁的避免方法,系统再执行以后,软件故障被完成避免时,作为其后的检查点采集方法的一环,通过将运转的处理器个数以及实施互斥控制的代码返回到原始的状态,使系统处于软件故障发生前的系统的运行状态,由此在故障避免后解除(返回到原始状态)了作为故障避免于段而实施了的,对系统的变更(缩小系统正在运行中的规格)状态,因此,故障排除后,能够使系统返回到正常状态,有可能使系统运行良好。
另外,若根据第20发明,在所述未重新运行的存储器或非易失性的存储装置中所记载的信息在软件故障避免后,通过计算机系统具有的系统记录被存储作为检查点采集方法的一环,由此在故障修复后的检查点时间点热起动系统记录机构,并将软件故障避免中所实施的状况保存在系统记录中,故有可能提高故障发生后的系统的维修性。
权利要求
1.一种计算机系统,在具有当在系统中发生了故障时通过从故障发生前的状态再执行数据处理来实现耐故障性的检查点座标方式的故障修复机构的计算机系统中特征在于,具有在系统中发生了故障时,识别该故障是由软件错误引发的软件故障的故障识别步骤;在用所述故障识别步骤识别了软件故障的发生时记录故障发生时的系统状况的系统状况记录步骤;根据由所述系统状况记录步骤所记录的信息推断关于软件故障的发生原因的软件故障发生原因推断步骤;推断由所述软件故障发生原因推断步骤所推断的、有关软件故障发生原因的避免方法的软件故障避免方法推断步骤,以及在重新运行按照有关由所述软故障避免方法推断步骤所推断的所述软件故障发生原因的避免方法的故障避免动作之后实施的软件故障避免方法实施步骤。
2.一种计算机系统,在具有当系统中发生了故障时从故障发生前的状态再执行数据处理实现耐故障性的检查点重新运行方式的故障修复机构的该计算机系统中,特征是,它具有在发生了由软件错误引发的软件故障时识别该软件故障的故障识别步骤;在所述故障识别步骤识别了软件故障发生时记录故障发生时的系统状况的系统状况记录步骤;以及根据由所述系统状况记录步骤所记录的信息,改变重新运行后的再执行时的程序执行环境的软件执行环境操作步骤;并具有在系统中发生了故障时再执行系统、避免由软件错误等引发的软件故障的故障修复机能。
3.一种计算机系统,在具有当系统中发生了故障时通过从故障发生前的状态再执行数据处理实现耐故障性的检查点重新运行方式的故障修复机构的计算机系统中,特征是,它具有当系统中发生了故障时识别该故障是由软件错误引发的软件故障的故障识别步骤;当在所述故障识别步骤中识别出软件故障的发生时记录故障发生时的系统状况的系统状况记录步骤;根据由所述系统状况记录步骤所记录的信息推断有关软件故障的发生原因的软件故障发生原因推断步骤;推断有关由所述软件故障发生原因推断步骤所推断的软件故障发生原因的避免方法的软件故障避免方法推断步骤;在重新运行有关由所述软件故障避免方法推断步骤所推断的关于所述软件故障发生原因的避免方法之后实施的软件故障避免方法实施步骤;以及根据由所述系统状况记录步骤所记录的信息,改变重新运行后的再执行时的程序执行环境的软件执行环境操作步骤,在软件故障发生时,当基于由有关所述软件故障发生原因的推断的避免方法的推断有困难时,由所述软件执行环境操作步骤操作了软件执行环境之后,再执行系统,从而避免由软件错误引发的软件故障。
4.权利要求1或2或3中记载的计算机系统,在规定次数内返复实施至少由软件故障避免方法实施步骤或软件执行环境操作步骤所产生的动作直到软件故障被避免。
5.权利要求1,或2,或3,或4中记载的计算机系统,在实施软件故障避免方法实施步骤或软件执行环境操作步骤、并再执行了系统之后,又出现了软件故障时,在把具有故障原因的软件模块从系统中分离了以后再执行系统。
6.权利要求1,或2,或3,或4中记载的计算机系统,在实施软件故障避免方法实施步骤或软件执行环境操作步骤、并再执行了系统后,又出现了软件故障时,把引发软件故障的进程或线程从系统中抹去之后再执行系统。
7.权利要求5中记载的计算机系统,在系统运转状态中,与系统分开的软件模块能动态地而且同时不使系统不停止地从具有故障原因的软件模块调换到去掉故障原因的软件模块。
8.权利要求1,或2,或3,或4中记载的计算机系统,在规定次数内,在返复实施了至少由软件故障避免方法实施方法或软件执行环境操作方法所产生的动作直到软件故障被避免之后,又出现了软件故障时,实施系统的再起动。
9.权利要求1,或2,或3中记载的计算机系统中,系统状况记录步骤将软件故障发生时的系统状况记录在末重新运行的存储器或非易失性的存储装置中作为提供用于分析软件故障发生原因的信息。
10.权利要求1,或2,或3中记载的计算机系统中,软件故障发生原因推断步骤将所推断了的故障发生原因记录在未重新运行的存储器或非易失性的存储装置中作为提供用于分析故障发生原因的信息。
11.权利要求1或3记载的计算机系统中,软件故障避免方法推断步骤将有关推断了的软件故障发生原因的避免方法记录在未重新运行的存储器或非易失性的存储装置中作为提供用于实施故障避免方法的信息。
12.权利要求1、或2,或3记载的计算机系统中,系统状况记录方法将有关软件故障发发生时的系统的存储器,各种装置的数据等转出根据用户要求写到外部存储装置中作为提供用于分析软件故障发生原因的信息。
13.权利要求2,或3记载的计算机系统中,软件执行环境操作步骤将变更运转的处理器个数作为软件执行环境操作的一环。
14.权利要求2,或3记载的计算机系统中,软件执行环境操作将清除有关引发软件故障进程或线程的堆栈上的自动变量区域作为软件执行环境操作之一。
15.权利要求2,或3记载的计算机系统中,软件执行环境操作步骤动态地补充系统中使用的资源作为软件执行环境操作之一。
16.权利要求2,或3记载的计算机系统中,软件执行环境操作步骤将调整输入输出要求的发行定时,作为软件执行环境操作之一。
17.权利要求1,或3记载的计算机系统中,如果软件故障发生原因由软件故障发生原因推断步骤推断是对在物理存储上没有加载的虚拟存储器的存取,并且作为有关该软件故障发生原因的避免方法由软件故障避免方法推断步骤推断为确保有关虚拟存储器的物理存储器时,软件故障避免方法实施步骤将实施所述被推断的避免方法。
18.权利要求1,或3记载的计算机系统中,如果软件故障发生原因由软件故障发生原因推断步骤推断是有关多处理器环境中的互斥控制的死锁,作为有关该软件故障发生原因的避免方法,当由软件故障避免方法推断步骤推断为改变实施运转的处理器个数的变更,以及互斥控制的代码时,软件故障避免方法实施步骤将实施所述被推断的避免方法。
19.权利要求18记载的计算机系统,在实施有关在多处理器环境中的有关互斥控制的死锁的避免方法,再执行系统以后,软件故障被完成避免时,作为其后检查点采集方法的一环,将运转的处理器个数以及实施互斥控制的代码返回到原始的状态,并使系统处于软件故障发生前的系统的运行状态。
20.权利要求9,或10,或11记载的计算机系统中,记载在未重新运行的存储器或非易失性的存储装置中的信息通过计算机系统具有的系统记录被存储来作为软件故障避免后检查点采集方法的一环。
全文摘要
本发明在识别软件故障的发生时,有效应用该识别时间的状态信息采集、推断软件故障的发生原因,或使用改变系统环境等方法,在重新运行到检查点时间点后,再执行系统,避免软件故障,解决方法的特征是在由故障识别方法判断为该故障是软件故障时,具备记录故障发生时的系统状况的系统状况记录方法;推断有关该软件故障的发生原因的软件故障发生原因推断方法;推断避免该软件故障方法的软件故障避免方法推断方法。
文档编号G06F11/00GK1164708SQ9710451
公开日1997年11月12日 申请日期1997年3月18日 优先权日1996年3月19日
发明者岛田智文, 平山秀昭, 野崎正治 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1