(58)【調査した分野】(Int.Cl.,DB名)
前記第1の実行ステップ及び前記第2の実行ステップでは、前記プログラムの実行を開始する際、前記リセットの影響を受けない第1の記憶手段の記憶内容を複製して第2の記憶手段に記憶させるとともに、前記処理単位を順次実行する際、前記処理単位を示す識別子を前記第1の記憶手段に記憶させ、前記第1の記憶手段及び前記第2の記憶手段の記憶内容を比較し、一致する場合は前記処理単位をスキップする
請求項6記載の情報処理方法。
【背景技術】
【0002】
コンピュータがプログラムを実行中に、ストール、すなわち何らかの障害の発生によりプログラムの実行が停止する状況が発生した場合に、当該プログラムの実行を自動的に中止し再実行することにより、当該状況からの復旧を試みる機構が幾らか知られている。
【0003】
例えば、コンピュータは、電源投入直後、BIOS(Basic Input/Output System)と呼ばれるプログラムを実行する。このとき、WDT(watchdog timer)がBIOSのPOST(Power On Self Test)処理の実行状況を監視しており、ストールの発生を検知するとコンピュータをリセットして、コンピュータに再度POST処理を実行させる(以下、リブートという)。
【0004】
ストールの原因が単なる一時的な障害である場合は、このようなリセット後のプログラム再実行(以下、リブートという)により、プログラムが正常に動作する場合も多い。しかしながら、何らかの恒久的、固定的な要因によってストールが発生している場合には、このようなリセットは解決策にならない。プログラムを単に再実行しても、結局同じ要因によってストールが再発生してしまうからである。後者のような場合、コンピュータは何度もリブートを繰り返すなどの挙動をとり、そのままでは障害から回復できない。このような障害から回復するためには、一般に、障害が発生しているハードウェアを交換する必要があるが、交換のためには、交換部材及び専門的な知識を有する保守作業員を要する。このため、従来、このような障害からの回復には時間がかかり、システム運用に支障をきたすという問題があった。
【0005】
こうした問題に対して、特許文献1は、所定回数ストールが発生した場合には、リブートを行なわず、コンピュータを停止させる手法を提案している。
【0006】
特許文献2は、複数のプロセッサを有するコンピュータが、プロセッサの障害に起因するストールが発生した場合に、他方のプロセッサを利用して障害の発生したプロセッサを切り離すことにより、再度のストールを回避する方法を提案している。
【0007】
特許文献3は、他のソフトウェアの動作監視を行なうマルチタスク構成のソフトウェアを用いることによって、障害の発生している処理を特定する手法を提案している。
【0008】
特許文献4は、試験プログラムの実行時、エラーの発生した試験項目の番号を記録しておき、次回の試験プログラムの実行時、前記番号の試験項目の実行をスキップする、すなわち実行せず次の試験項目に移る手法を提案している。
【発明を実施するための形態】
【0020】
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。
【0021】
<実施の形態1>
まず、
図1を用いて、本発明の実施の形態1にかかる情報処理装置100の構成について説明する。
【0022】
本実施の形態に係る情報処理装置100は、制御手段110、記憶手段120、リセット手段130を有する。
【0023】
制御手段100は、制御プログラムに基づいて各種処理を実行する手段であり、典型的にはCPU(Central Processing Unit)である。制御プログラムは、記憶手段120や図示しない他の記憶手段に格納される。あるいは、図示しない通信インタフェイス等を介して外部から供給されても良い。
【0024】
本実施の形態では、制御手段100が、制御プログラムとしてのBIOS(Basic Input/Output System)に従って、POST(Power On Self Tst)処理を実行する場合を例として説明する。また、本実施の形態では、制御プログラムは複数の処理単位から構成されているものとする。例えば、BIOSのPOST処理は、前記処理単位として、BIOSコードの検証、メインメモリの検証、バス及びデバイスの検出及び初期化、ブート可能デバイスの特定等の複数の処理を含む。
【0025】
記憶手段120は、制御手段100が実行する処理に必要な情報を非一時的に格納可能な手段である。記憶手段は、上述の制御プログラム、例えばBIOSを格納しても良い。記憶手段120は、後述のリセット手段103によるシステムリセットの影響を受けることなく、記憶内容を保持することができることを特徴とする。記憶手段120は、典型的には不揮発性メモリであるが、前記システムリセットの影響を受けることなく継続的に電源供給可能な揮発性メモリであっても良い。
【0026】
リセット手段130は、所定の条件の満足を検知した場合に、情報処理装置100を強制的に初期状態にする処理(システムリセット)を行う。システムリセットが行われると、制御手段100は、制御プログラムに基づく処理を再度、最初から実行する。本実施の形態におけるリセット手段103は、制御手段100がストールに陥ったことを検知した場合、例えば制御手段110が一定時間応答しない状態になった場合に、システムリセット実行する。
【0027】
図2に、情報処理装置100のより詳細な実装例を示す。
【0028】
制御手段110は、CPUであり、記憶手段120からBIOS121を読み出してPOST処理を実行する。 記憶手段120は不揮発性メモリであり、制御プログラムとしてのBIOS121を含む。BIOS121は、POST処理を行うための複数の処理単位を含んでいる。また、記憶手段120は、BIOS121のPOST処理を実行する際に必要なデータを保持するための領域としての第1の記憶手段122及び第2の記憶手段123を含む。
【0029】
リセット手段130は、WDT(Watch Dog Timer)131及びリセット回路132を含む。WDT131は、外部からのサービスパルスの間隔を計測するタイマである。WDT131は、サービスパルスが供給される毎にタイマをリセットし、新たに時間の計測を開始する。この計測時間が予め定められた閾値を超えた場合、WDT131は、リセット回路132にタイムアウトを通知する。リセット回路132は、タイムアウトの通知を受けると、システムリセットを実行する。
【0030】
本実施の形態では、制御手段110が、正常に処理を実行しているあいだ定期的に、WDT131に対しサービスパルスを供給する。しかし、ストールの発生等の要因により制御手段110が動作を停止し、前記閾値を超える時間にわたってサービスパルスを供給できない事態に陥ると、WDT131はタイムアウトを発生し、リセット回路132がシステムリセットを行う。
【0031】
上記の構成に加え、情報処理装置100は、メモリ140及び入出力手段150を有していても良い。
【0032】
メモリ140は揮発性のメインメモリであり、制御手段110が制御プログラムを実行する際に必要なデータを一時的に保持する。
【0033】
入出力手段150は、キーボードコントローラ151、グラフィックコントローラ152、キーボード153及び表示装置154を含む。キーボードコントローラ151及びグラフィックコントローラ152は、入力デバイスであるキーボード143及び出力デバイスである表示装置146と、制御手段110との間における情報の入出力を制御する。
【0034】
制御手段110、記憶手段120、リセット手段130、メモリ140及び入出力手段150は、システムバス160を介して接続される。
【0035】
図3を用いて、情報処理装置100の処理について説明する。
【0036】
A1:情報処理装置100が起動する。情報処理装置100に電源が投入されると、制御手段110はまず、記憶手段120内のBIOS121のコードを読み出す。
【0037】
A2:制御手段110は、第1の記憶手段122を参照し、ここにデータが格納されていれば、そのデータを第2の記憶手段123にコピーする。
【0038】
後述するが、第1の記憶手段には、制御手段110が前回BIOS121のPOST処理を実行した際、処理を完遂できなかった処理単位を示すデータが格納されていることがある。なお、制御手段110が前回BIOS121のPOST処理を実行した際、全ての処理単位を実行できた場合、第1の記憶手段120はクリアされている。すなわち、データは抹消されているか、記憶されていない。
【0039】
A3:制御手段110は、BIOS121のPOST処理の実行を開始する。制御手段110は、POST処理を構成する複数の処理単位を1つずつ順次実行していくが、各処理単位を実行する前に、実行しようとする処理単位を特定するための情報を、第1の記憶手段122に格納する。本実施の形態では、各処理単位に予め識別子が付与されており、制御手段110は、処理単位を特定するための情報としてこの識別子を第1の記憶手段122に格納するものとする。
【0040】
A4:制御手段110は、第1の記憶手段122に格納されたデータと、第2の記憶手段123に格納されたデータとを比較する。
【0041】
第2の記憶手段に格納されているデータは、制御手段110が前回POST処理を実行した際、処理を完遂できなかった処理単位の識別子である。よって、ここで第1の記憶手段122及び第2の記憶手段123の記憶内容が一致した場合、制御手段110がこれから実行しようとしている処理単位は、制御手段110が前回、処理を完遂できなかった処理単位ということになる。一方、第1の記憶手段122及び第2の記憶手段123の記憶内容が一致しない場合、制御手段110がこれから実行しようとしている処理単位は、初めて実行される処理単位、前回実行した際に障害が発生しなかった処理単位、又は前回実行されなかった処理単位のいずれかである。
【0042】
A5:A4において、第1の記憶手段122及び第2の記憶手段123の記憶内容が一致しなかった場合、制御手段110は、実行しようとする処理単位、すなわち第1の記憶手段122に格納した識別子にかかる処理単位を実行する。
【0043】
制御手段110がこの処理単位を実行しているとき、ストールが発生すると、一定時間経過後、リセット手段130がシステムリセットを行う。すなわち、制御手段110が実行している処理を強制的に中断し、情報処理装置100を初期化する。このとき、第1の記憶手段122には、制御手段110が実行中の処理単位の識別子が残っている。第1の記憶手段122はシステムリセットの影響を受けず、非揮発性メモリであるため、第1の記憶手段122は、システムリセットの前後を通じてその記憶内容を保持する。システムリセット後、情報処理装置100が起動すると(上記A1)、制御手段110は上記A2以降の処理を再度実行する。第1の記憶手段122に格納されたままとなっていた識別子は、以降の処理において、今回のPOST処理において処理を完了できなかった処理単位であって、次回のPOST処理において回避すべき処理単位を示す識別子として、制御手段110により参照される。
【0044】
A6:A4において、第1の記憶手段122及び第2の記憶手段123の記憶内容が一致した場合、制御手段110は、実行しようとしていた処理単位、すなわち第1の記憶手段122に格納した識別子にかかる処理単位の実行をスキップする。すなわち、その処理単位を実行せず、後述のA7以降のフローにしたがって次の処理単位を実行する。換言すれば、制御手段110は、次に実行すべき処理単位を対象として、A3乃至A6の処理を実行する。
【0045】
このような処理により、制御手段110は、前回正常に処理を完了できなかった処理単位を再度実行することを回避する。前回ストールが発生した処理単位は、再度実行したとしても再びストールが発生し、結果としてシステムリセットが繰り返される蓋然性が高い。一方、前回ストールが発生した処理単位の再実行を回避することで、システムリセットが繰り返される事態を回避することができる。
【0046】
A7:制御手段110は、POST処理の全ての処理単位の実行が完了しているか否かを判定する。完了している場合、制御手段100は次の処理単位を実行する。すなわち、制御手段110は、次に実行すべき処理単位について、上述のA3乃至A6にかかる処理を実行する。
【0047】
A8:一方、全ての処理単位の実行が完了しており、次に実行すべき処理単位が存在しない場合、制御手段110は、第1の記憶手段122の記憶内容をクリアする。これは、今般のPOST処理においては全ての処理単位が正常に実行されたこと、次回のPOST処理において回避すべき処理単位は存在しないことを示す。
【0048】
A9:制御手段110は、POST処理を完了する。通常、制御手段100はこの後、OS(Operating System)のメモリ140へのロード等の処理を実行する。
【0049】
本実施の形態においては、記憶手段120、より具体的には第1の記憶手段122に、プログラム、例えばBIOS121のPOST処理を前回実行した際に処理を完了できなかった処理単位を示す情報を格納しておき、次回実行時にはその処理単位の実行をスキップする。これにより、ストール発生の蓋然性の高い処理単位を繰り返し実行してしまう不具合を回避することができる。
【0050】
このため、当該処理単位が担うべき一部機能を利用できない限定された状態でありながらも、情報処理装置100を起動することができる。
【0051】
また、情報処理装置100及び当該装置を含むシステムを継続的に運用することができる。
【0052】
さらに、情報処理装置100はストール発生時の障害対応をBIOS121により実施するため、保守要員等の人手介入を抑制できる。
【0053】
<実施の形態2>
つぎに、
図4を用いて、本発明の実施の形態2にかかる情報処理装置100の構成について説明する。
【0054】
本実施の形態における情報処理装置100は、第3の記憶手段170を含む点に特徴を有する。その余の構成要素については、上述の実施の形態1と同様である。
【0055】
第3の記憶手段170は、システムリセットの影響を受けない、すなわちシステムリセットの前後で記憶内容を保持可能な記憶手段であり、典型的には不揮発性メモリである。
図4では、第3の記憶手段170と記憶手段120はそれぞれ独立の手段として表されているが、必ずしもその必要はなく、例えば第3の記憶手段170は記憶手段120の一部であっても良い。あるいは、第3の記憶手段170の一部として、第1の記憶手段122、第2の記憶手段123が存在していても良い。
【0056】
第3の記憶手段170は、POST処理を構成する複数の処理単位のうち、スキップ可能な処理単位を特定する情報、典型的には識別子を格納した、テーブル171を含んでいる。テーブル171には、例えば当該処理単位が実行されなくても情報処理装置100が限定的に動作できる処理単位、換言すれば、当該処理単位が担うべき機能を利用できない限定された環境であっても情報処理装置100がOSを起動可能となる処理単位を、予め登録しておくことができる。一方、情報処理装置100の動作に不可欠な処理単位については、スキップされないよう、テーブル171から予め除外しておくことができる。
【0057】
図5を用いて、本実施の形態にかかる情報処理装置100の処理について説明する。
【0058】
本実施の形態は、制御手段110が、実施の形態1における処理A6の前に、後述の処理B1を実行し、B1の実行結果に応じて処理A6又はA5を実行する点に最大の特徴を有する。その余の処理A1乃至A9については、実施の形態1とほぼ同様である。
【0059】
A1:情報処理装置100が起動する。情報処理装置100に電源が投入されると、制御手段110はまず、記憶手段120内のBIOS121のコードを読み出す。
【0060】
A2:制御手段110は、第1の記憶手段122を参照し、ここにデータが格納されていれば、そのデータを第2の記憶手段123にコピーする。
【0061】
A3:制御手段110は、POST処理を構成する複数の処理単位を1つずつ順次実行していくが、各処理単位を実行する前に、実行しようとする処理単位の識別子を、第1の記憶手段122に格納する。
【0062】
A4:制御手段110は、第1の記憶手段122に格納されたデータと、第2の記憶手段123に格納されたデータとを比較する。
【0063】
A5:A4において、第1の記憶手段122及び第2の記憶手段123の記憶内容が一致しなかった場合、又は後述のB1において、第1の記憶手段122及びテーブル171に格納されている識別子が一致しなかった場合、制御手段110は、実行しようとする処理単位、すなわち第1の記憶手段122に格納した識別子にかかる処理単位を実行する。
【0064】
B1:A4において、第1の記憶手段122及び第2の記憶手段123の記憶内容が一致した場合、制御手段110は、実行しようとする処理単位の識別子、すなわち第1の記憶手段122に格納した識別子が、第3の記憶手段170のテーブル171に格納されているか否かを判定する。
【0065】
A6:B1において、第1の記憶手段122及びテーブル171に格納されている識別子が一致した場合、制御手段110は、実行しようとしていた処理単位、すなわち第1の記憶手段122に格納した識別子にかかる処理単位の実行をスキップする。
【0066】
A7:制御手段110は、POST処理の全ての処理単位の実行が完了しているか否かを判定する。完了している場合、制御手段100は次の処理単位を実行する。すなわち、制御手段110は、次に実行すべき処理単位について、上述のA3乃至A6にかかる処理を実行する。
【0067】
A8:一方、全ての処理単位の実行が完了しており、次に実行すべき処理単位が存在しない場合、制御手段110は、第1の記憶手段122の記憶内容をクリアする。
【0068】
A9:制御手段110は、POST処理を完了する。通常、制御手段100はこの後、OS(Operating System)のメモリ140へのロード等の処理を実行する。
【0069】
本実施の形態においては、制御手段110は、第3の記憶手段170に予め登録された処理単位のみをスキップする。これにより、一部機能を利用できない限定された状態であっても情報処理装置100を起動でき、かつ情報処理装置100の起動に不可欠な機能は損なわれない状態で情報処理装置100を起動できる。
【0070】
<実施の形態3>
実施の形態1及び2では、制御手段110は、正常に処理を完了できなかった処理単位を、次回のプログラムの実行時にスキップする。この場合、処理単位を正常に実行できなかった原因が、たとえリセットにより回復するような一時的なストール障害であった場合であっても、制御手段110は、当該処理単位を次回スキップしてしまう。
【0071】
そこで、実施の形態3では、リセットにより回復するような一時的なストール障害と、リセットによる回復が見込めない恒久的なストール障害とを区別する。
【0072】
本実施の形態における情報処理装置100は、記憶手段120、特に第1の記憶手段122に、制御手段110が前回POST処理を実行した際、処理を完遂できなかった処理単位の識別子とともに、処理を完遂できなかった累積回数を格納する点に特徴を有する。その余の構成については、実施の形態1及び2と同様である。
【0073】
図6を用いて、本実施の形態にかかる情報処理装置100の処理について説明する。
本実施の形態は、制御手段110が、実施の形態1における処理A3の代わりにC1、処理A5の代わりにC2、処理A6の前にC3を実行し、C3の実行結果に応じて処理A6又はC2を実行する点に最大の特徴を有する。その余の処理A1、A2、A6乃至A9については、実施の形態1とほぼ同様である。なお、処理C3の前後いずれかに、実施の形態2において説明した処理B1を挿入しても構わない。
【0074】
A1:情報処理装置100が起動する。情報処理装置100に電源が投入されると、制御手段110はまず、記憶手段120内のBIOS121のコードを読み出す。
【0075】
A2:制御手段110は、第1の記憶手段122を参照し、ここにデータが格納されていれば、そのデータを第2の記憶手段123にコピーする。
【0076】
C1:制御手段110は、POST処理を構成する複数の処理単位を1つずつ順次実行していくが、各処理単位を実行する前に、実行しようとする処理単位の識別子を第1の記憶手段122に格納する。また、制御手段110は、累積回数として「0」を、前記識別子と対応付けて第1の記憶手段122に格納する。
【0077】
A4:制御手段110は、第1の記憶手段122に格納されたデータと、第2の記憶手段123に格納されたデータとを比較する。
【0078】
C2:A4において、第1の記憶手段122及び第2の記憶手段123の記憶内容が一致しなかった場合、又は後述のC3において、累積回数が閾値n以下である場合、制御手段110は、実行しようとする処理単位、すなわち第1の記憶手段122に格納した識別子にかかる処理単位を実行する。このとき、制御手段110は、前記識別子に対応付けられた累積回数をインクリメントする。
【0079】
C3:A4において、第1の記憶手段122及び第2の記憶手段123の記憶内容が一致した場合、制御手段110は、実行しようとする処理単位の識別子、すなわち第1の記憶手段122に格納した識別子に対応付けられた累積回数が、予め定められた閾値n以下であるか否かを判定する。
【0080】
A6:C3において、累積回数が閾値nを超える場合、制御手段110は、実行しようとしていた処理単位、すなわち第1の記憶手段122に格納した識別子にかかる処理単位の実行をスキップする。
【0081】
A7:制御手段110は、POST処理の全ての処理単位の実行が完了しているか否かを判定する。完了している場合、制御手段100は次の処理単位を実行する。すなわち、制御手段110は、次に実行すべき処理単位について、上述のA3乃至A6にかかる処理を実行する。
【0082】
A8:一方、全ての処理単位の実行が完了しており、次に実行すべき処理単位が存在しない場合、制御手段110は、第1の記憶手段122の記憶内容をクリアする。
【0083】
A9:制御手段110は、POST処理を完了する。通常、制御手段100はこの後、OS(Operating System)のメモリ140へのロード等の処理を実行する。
【0084】
本実施の形態においては、制御手段110は、正常に処理を完了できない事象が所定の回数を超えて発生した処理単位のみ、次回のプログラムの実行の際にスキップする。これにより、リセットにより回復するような一時的なストール障害と、恒久的なストール障害とを区別し、前者の場合には、前回のプログラム実行時に正常に処理を完了できなかった処理単位であっても、次回のプログラム実行時に当該処理単位の実行を再試行する。これにより、ストール障害が発生しても、可能な限り多くの機能を利用できる状態で再度情報処理装置100を起動できる。
【0085】
<その他の実施の形態>
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【0086】
例えば、上述の実施の形態では、本発明を主にハードウェアにより構成されるものとして説明したが、これに限定されるものではなく、任意の手段を、CPU(Central Processing Unit)にコンピュータプログラムを実行させることにより論理的に実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。