(57)【特許請求の範囲】
【請求項１】
計算機と管理装置がＩ／Ｏバス制御装置により制御されるＩ／Ｏバスにより接続された計算機システムにおける障害処理方法であって、障害が前記計算機に発生した時点で前記管理装置から前記計算機内のＩ／ＯバスにＩ／Ｏバス障害を発生させるＩ／Ｏバス信号を送り、前記Ｉ／Ｏバス制御装置において前記Ｉ／Ｏバス信号に基づいて発生するＩ／Ｏバス障害を契機に前記Ｉ／Ｏバスを初期化した後、Ｉ／Ｏバス障害を当該計算機のＣＰＵに当該ＣＰＵにて動作するＯＳが処理する割り込みとして通知することを特徴とする計算機システムにおける障害処理方法。
【請求項２】
計算機と管理装置がＩ／Ｏバス制御装置により制御されるＩ／Ｏバスにより接続された計算機システムにおける障害処理方法であって、前記計算機から前記管理装置に不正なデータが送られた時点で前記管理装置から前記計算機内のＩ／ＯバスにＩ／Ｏバス障害を発生させるＩ／Ｏバス信号を送り、前記Ｉ／Ｏバス制御装置において前記Ｉ／Ｏバス信号に基づいて発生するＩ／Ｏバス障害を契機に前記Ｉ／Ｏバスを初期化した後、Ｉ／Ｏバス障害を当該計算機のＣＰＵに当該ＣＰＵにて動作するＯＳが処理する割り込みとして通知することを特徴とする計算機システムにおける障害処理方法。
【請求項３】
計算機と管理装置がＩ／Ｏバス制御装置により制御されるＩ／Ｏバスにより接続された計算機システムにおける障害処理方法であって、前記計算機が所定時間内に所定の記憶装置の内容を更新しない時点で前記管理装置から前記計算機内のＩ／ＯバスにＩ／Ｏバス障害を発生させるＩ／Ｏバス信号を送り、前記Ｉ／Ｏバス制御装置において前記Ｉ／Ｏバス信号に基づいて発生するＩ／Ｏバス障害を契機に前記Ｉ／Ｏバスを初期化した後、Ｉ／Ｏバス障害を当該計算機のＣＰＵに当該ＣＰＵにて動作するＯＳが処理する割り込みとして通知することを特徴とする計算機システムにおける障害処理方法。
【請求項４】
計算機と、管理装置とを有し、前記計算機と前記管理装置とはＩ／Ｏバス制御装置により制御されるＩ／Ｏバスで相互に接続され、前記管理装置は障害が前記計算機に発生した時点で前記計算機内のＩ／ＯバスにＩ／Ｏバス障害を発生させるＩ／Ｏバス信号を送り、前記Ｉ／Ｏバス制御装置は前記Ｉ／Ｏバス信号に基づくＩ／Ｏバス障害を検知したことに応じて、前記Ｉ／Ｏバスを初期化した後、Ｉ／Ｏバス障害を当該計算機のＣＰＵに当該ＣＰＵにて動作するＯＳが処理する割り込みとして通知することを特徴とする計算機システム。
【請求項５】
計算機と、管理装置とを有し、前記計算機と前記管理装置とはＩ／Ｏバス制御装置により制御されるＩ／Ｏバスで相互に接続され、前記管理装置は前記計算機から前記管理装置に不正なデータが送られた時点で前記計算機内のＩ／ＯバスにＩ／Ｏバス障害を発生させるＩ／Ｏバス信号を送り、前記Ｉ／Ｏバス制御装置は前記Ｉ／Ｏバス信号に基づくＩ／Ｏバス障害を検知したことに応じて、前記Ｉ／Ｏバスを初期化した後、Ｉ／Ｏバス障害を当該計算機のＣＰＵに当該ＣＰＵにて動作するＯＳが処理する割り込みとして通知することを特徴とする計算機システム。
【請求項６】
計算機と、管理装置とを有し、前記計算機と前記管理装置とはＩ／Ｏバス制御装置により制御されるＩ／Ｏバスで相互に接続され、前記管理装置は前記計算機が所定時間内に所定の記憶装置の内容を更新しない時点で前記計算機内のＩ／ＯバスにＩ／Ｏバス障害を発生させるＩ／Ｏバス信号を送り、前記Ｉ／Ｏバス制御装置は前記Ｉ／Ｏバス信号に基づくＩ／Ｏバス障害を検知したことに応じて、前記Ｉ／Ｏバスを初期化した後、Ｉ／Ｏバス障害を当該計算機のＣＰＵに当該ＣＰＵにて動作するＯＳが処理する割り込みとして通知することを特徴とする計算機システム。
【発明の詳細な説明】
技術分野
本発明は、計算機システムに関し、特に、障害処理を効率よく行なう計算機システムに関する。
背景技術
遠隔管理用の入出力装置であるリモート管理装置をＰＣＩバス等のＩ／Ｏバスを介して計算機に接続して、リモート管理装置により計算機を管理する方法がある。リモート管理装置は、ネットワークアダプタやモデムといった通信用の入出力装置を有し、ＬＡＮや電話回線等により他の計算機と接続して、遠隔地にある他の計算機から計算機を管理している。
リモート管理装置は、Ｉ／Ｏバス、あるいは、管理対象の計算機の管理情報を転送する専用のバスを経由して、計算機の稼動情報を取得する。リモート管理装置は、管理対象の計算機のＣＰＵがＩ／Ｏバス経由でアクセス可能なレジスタやメモリを保持している。
また、特開平９−５０３８６や特開平５−２５７９１４、および、特開平５−２５０２８４のように、リモート管理装置は、ＣＰＵ、メモリ、および、ネットワークアダプタやモデムといった通信装置を含むＩ／Ｏ装置を持つ計算機（管理装置計算機）として構成される場合もある。この場合、管理装置計算機上のＣＰＵは、管理対象の計算機とは独立して管理用のプログラムを実行でき、管理対象の計算機の実行状態に関わらず管理プログラムを実行することができる。つまり、計算機のオペレーティングシステム（ＯＳ）の起動前、障害停止時、外部からの操作を受け付けない状態（ハングアップ）時でも、管理装置計算機は実行可能になっている。
Ｉ／Ｏバスに接続される従来の管理装置は、管理対象の計算機がハングアップする障害が発生した場合、ＣＰＵのリセット、あるいは、管理対象の計算機の電源の遮断等の方法により計算機を再起動している。この再起動は、管理装置と管理対象の計算機を専用の信号線で接続して、その信号線を経由して管理対象の計算機のＣＰＵにリセット信号を送ったり、あるいは、管理対象の計算機上のファームウェアに制御を移す割り込みを送ることにより実現している。専用線が必要なのは、Ｉ／ＯバスにはＯＳの実行を強制的に停止させるような割り込みを送る信号線がないためである。
この再起動方法を実施するには、管理装置と管理対象の計算機との間にＩ／Ｏバス以外の信号線を設置しなければならない。このため、管理装置を接続可能な管理対象の計算機が限定されてしまう問題がある。つまり、管理装置と管理対象の計算機を専用線で接続できる組み合わせでなければ、障害発生時に管理装置から管理対象の計算機を再起動できない。
また、従来の管理装置の再起動方法は、ＣＰＵのリセットによるためＯＳが介在する機会がなく、加えて、ＯＳの再起動により管理対象の計算機の主記憶の内容が失われてしまう。このため、障害原因の解析を困難している。さらに再現性のない障害の場合、障害解析をすることができず問題である。
一方、ＰＣＩバスのような汎用のＩ／Ｏバスについてみると、前に述べたように、ＯＳの実行を強制的に障害処理へ移行させる割り込みを管理装置から管理対象の計算機に送ることができない。しかし、Ｉ／Ｏバスが、Ｉ／Ｏバス経由で転送されるアドレス、コマンド、および、データ等の正確性を保証するための付加情報（例えばパリティビット）を転送する信号線を持っている場合もある（ＰＣＩ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｓｏｆｔｗａｒｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｄｅｓｉｇｎ，ｐｐ１７２〜１７４，Ａｎｎａｂｏｏｋｓ，１９９４）。このような付加情報を転送できるＩ／Ｏバスであれば、管理対象の計算機や入出力装置は、Ｉ／Ｏバス経由のデータ転送においてＩ／Ｏバス上のデータの正確性を検証することは可能である。
更に、前記の機能を持つＩ／Ｏバスを使用している場合、Ｉ／Ｏバスの付加情報により不正な信号を検出した時に、障害をＣＰＵに通知するための信号線を持つＩ／Ｏバス制御装置もある（Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｒｅｐｏｒｔ，ｐｐ１１〜１２，Ｖｏｌ．１２，Ｎｕｍｂｅｒ  ９，Ｊｕｌｙ，１９９８）。
管理対象の計算機のＣＰＵについてみると、バスに障害が発生すると、メモリアクセスができなくなって、ＣＰＵが動作できない状況が発生し得る。このようにバスがロックしている場合、ＣＰＵに割り込み信号を送っただけでは、ＣＰＵの実行を再開することはできない。これは、バス障害のためにメモリアクセスができないため、割り込みハンドラを起動できないためである。
このような障害に対して、バスに関する障害信号を検出した場合に、ＣＰＵをリセットするのではなくバスだけを再初期化して、その後に内部的に割り込みを生成して割り込みハンドラに制御を渡すＣＰＵがある（Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｒｅｐｏｒｔ，ｐｐ１，６〜１０，Ｖｏｌ．１２，Ｎｕｍｂｅｒ  ９，Ｊｕｌｙ，１９９８）。このＣＰＵに依れば、バスがロックしてしまってもＣＰＵの実行を再開させることができ、ＯＳの障害処理を開始させることも可能となる。
従来のＩ／Ｏバスに接続する計算機の管理装置では、ＯＳの障害処理が実行できなくなる障害が計算機に発生した時、Ｉ／Ｏバス以外の信号線により計算機のＣＰＵをリセットする、あるいは、計算機上のファームウェアによりＣＰＵをリセットして、計算機全体を再起動している。これら方法では、ＣＰＵがリセットされてしまうため、ＯＳは障害処理を実行することができず、障害情報が取得できなくなるという問題があった。
また、従来の管理装置では、Ｉ／Ｏバスとは別の信号線、あるいは、計算機上にＣＰＵのリセット処理を実行する回路やファームウェアが必要であった。この方式には、管理装置の接続可能な計算機が限定されるという問題があった。
本発明の目的は、ＯＳの障害処理が実行できなくなる障害が計算機に発生した場合でも、障害情報を取得可能な計算機システムを提供することにある。
また、本発明の別の目的は、Ｉ／Ｏバスを介して管理対象の計算機のバスを初期化可能な計算機システムを提供することにある。
発明の開示
上記目的を達成するために、本発明では、計算機と管理装置がＩ／Ｏバスにより接続された計算機システムにおいて、ＯＳの障害処理が実行できなくなる障害が計算機に発生した場合、障害管理装置から計算機内のＩ／Ｏバス管理装置にＩ／Ｏバス障害の発生を通知するＩ／Ｏバス信号を送る。そして、Ｉ／Ｏバス管理装置は、Ｉ／Ｏバスを初期化した後、Ｉ／Ｏバス障害を計算機のＣＰＵにＯＳが処理する割り込みとして通知する。
このようにして、従来、ＯＳの障害処理が実行できなくなる障害が計算機に発生した場合でも、ＯＳへの割り込みを契機として障害情報を取得可能な計算機システムを提供することができる。また、Ｉ／Ｏバスを介して管理対象の計算機のバスを初期化可能な計算機システムを提供できる。
発明を実施するための最良の形態
以下、図面を用いて本発明の実施例を説明する。
（１）第１の実施形態
第１図は、本発明の実施形態のシステム構成を示す図である。計算機１００は、管理装置１２０の管理対象となる計算機である。
計算機１００の構成について説明する。ＣＰＵ１０１と主記憶１０２は、バス１０３により接続している。バス１０３には、Ｉ／Ｏバス１０７を制御するＩ／Ｏバス制御装置１０４が接続している。バス１０３には、ＣＰＵ１０１やＩ／Ｏバス制御装置１０４に、バス１０３に関する内部状態のリセットを指示する信号線が含まれる。Ｉ／Ｏバス制御装置１０４からはＩ／Ｏバス１０７が伸びている。Ｉ／Ｏバス１０７には、管理装置１２０、外部記憶装置１０５、キーボード、ディスプレイ等の対話型デバイスから構成されるコンソール１０６等が接続される。
Ｉ／Ｏバス制御装置１０４は、ＣＰＵ１０１が実行する入出力操作のＩ／Ｏバス１０７への転送や、Ｉ／Ｏバス１０７に接続する入出力機器からのデータの、主記憶１０２やＣＰＵ１０１内のレジスタへの転送、割り込みのＣＰＵ１０１への転送等を実施する。
Ｉ／Ｏバス制御装置１０４とＣＰＵ１０１は、バスエラー通知線１０８により接続している。バスエラー通知線１０８は、Ｉ／Ｏバス制御装置１０４が、Ｉ／Ｏバス１０７上でエラーを検出した時に、ＣＰＵ１０１にバスエラーを通知するためのバス信号線である。
次に、管理装置１２０について説明する。管理装置１２０は、計算機１００のＩ／Ｏバス１０７に接続する外部入出力装置の一種で、遠隔から計算機１００の実行状況の監視や起動・停止等の運用操作を実現する。管理装置１２０は、それ自体で計算機を構成しており、そこで実行するプログラムは、計算機１００のＯＳが停止している時でも独立して実行可能である。管理装置１２０で実行するプログラムは、モデム１２７やネットワークアダプタ１２８を制御して、計算機１５１、および、１７０のような遠隔にある計算機と連携して、遠隔にある計算機からの計算機１００の運用のための操作を実現する。
管理装置１２０上のＣＰＵ１２１と主記憶１２２は、バス１２３で接続している。バス１２３には、Ｉ／Ｏバス制御装置１２４が接続し、Ｉ／Ｏバス制御装置１２４からはＩ／Ｏバス１２５が伸びている。Ｉ／Ｏバス１２５には、モデム１２７やネットワークアダプタ１２８があり、遠隔の計算機と通信可能となっている。
管理装置１２０は、デバイス制御装置１２６を介して、計算機１００のＩ／Ｏバス１０７と接続する。デバイス制御装置１２６は、ＣＰＵ１０１が実行する管理装置１２０に対する入出力操作要求を受信して、要求に応じた制御を実施する。例えば、主記憶１２２の内容を変更する、ＣＰＵ１２１に割り込みを送信する等の操作である。
デバイス制御装置１２６は、ＣＰＵ１２１からも入出力装置として見えるように構成する。デバイス制御装置１２６は、ＣＰＵ１２１の実行する入出力操作を受けてＩ／Ｏバス１０７にデータを書き出す等の操作を実施する。
デバイス制御装置１２６の中に、障害生成装置１３０がある。障害生成装置１３０は、ＣＰＵ１２１の指示を受けてＩ／Ｏバス１０７に不正な信号を送出する装置である。計算機１００のＩ／Ｏバス制御装置１０４は、Ｉ／Ｏバス１０７上で不正な信号を検出した場合、バスエラー通知線１０８によりＣＰＵ１０１に障害を通知する。
第２図は、本発明の実施形態のソフトウェア構成図である。ここでは、計算機１００のＩ／Ｏバス１０７に管理装置１２０が接続されており、管理装置１２０のネットワークアダプタ１２８がネットワークを介して管理計算機１５１に接続されている。
計算機１００と１５１、および、管理装置１２０のそれぞれには、ＯＳ２０１、ＯＳ２２１、および、ＯＳ２１３がローデイングされ、動作している。計算機１００では、通常のアプリケーションプログラム群２０２が実行している。加えて、計算機１００では、管理装置１２０と連携して実行する管理エージェントプログラム２０３が動作している。管理エージェント２０３は、計算機１００で実行するプログラム２０２、およびＯＳ２０１の実行状況の収集、管理装置１２０への実行状況送信、管理装置１２０への動作指示、管理装置１２０が収集した計算機１００の実行状況情報の取得、運用管理処理を実施する。運用管理処理とは、計算機１００の自動起動・停止時刻の設定、計算機１００のシャットダウン、リブート、電源断、管理情報の表示やネットワークへの管理情報送信等である。
管理装置１２０では、遠隔の計算機１５１との通信を行う通信制御プログラム２１２と、計算機１００の運用管理処理をする管理プログラム２１１が実行している。管理プログラム２１１は、計算機１００の動作状況の取得、時刻指定による計算機１００の電源制御、ＯＳ２０１の自動起動・停止処理、管理エージェント２０３収集情報の遠隔管理計算機１５１への転送、遠隔計算機１５１からの運用操作要求の処理等を実行する。
管理装置１２０上のプログラム２１１ないし２１３は、計算機１００のＯＳ２０１が停止していても実行可能である。計算機１００がＯＳ２０１の障害のため停止している時、管理プログラム２１１は、Ｉ／Ｏバス１０７経由で主記憶１０２の内容を取得、遠隔計算機１５１へ障害情報の送信等の障害処理を実施する。加えて、本実施形態では、障害生成装置１３０を駆動してＩ／Ｏバス１０７に障害信号を送出し、ＯＳ２０１の障害処理を起動させる処理を実施する。
遠隔の計算機１５１や１７０は、ＬＡＮのようなネットワーク１５０、あるいは、電話回線といった通信回線１４０で管理装置１２０と接続している。遠隔計算機１５１では、遠隔計算機管理プログラム２２０が実行している。このプログラム２２０は、管理装置１２０上の管理プログラム２１１と通信により管理情報を交換して、計算機１００の運用管理操作を実行する。例えば、計算機１００の運用管理情報の表示、遠隔からの停止・リブート、ＯＳ２０１の障害処理開始指示などを実行する。
バス１０３やＩ／Ｏバス１０７で障害が発生すると、ＣＰＵ１０１はバスエラー割り込みを生成して障害処理を実行する。ＯＳ２０１内には、バスエラー割り込みを処理する割り込みハンドラ２０４がある。割り込みハンドラ２０４は、ＣＰＵ１０１の割り込みベクタに登録されて、バスエラー割り込み発生時に実行されるように設定される。
第３図は、本実施形態におけるデバイス制御装置１２６の構成を示した図である。デバイス制御装置１２６は、Ｉ／Ｏバスインターフェイス回路３０１を介して管理装置１２０のＩ／Ｏバス１２５、および、計算機１００のＩ／Ｏバス１０７と接続している。回路３０１は、各Ｉ／Ｏバスからのデバイス制御装置１２６宛てデータの取出し、あるいは、ＣＰＵからのＩ／Ｏバスへのデータの送出を実施する回路である。回路３０１は、Ｉ／Ｏバス１０７より取得したデータ内容に従って、デバイス制御装置１２６内の他の回路を駆動する。
制御装置１２６には、Ｉ／Ｏバス１０７用のパリティ生成回路３０２と、障害生成装置１３０が組み込まれている。本実施形態では、パリティ生成回路３０２は、Ｉ／Ｏバス１０７に送出するアドレス信号１０７ｂに関するパリティ信号１０７ａを、排他的論理和回路の組み合わせにより生成している。通常実行時は、パリティ生成回路３０２で生成したパリティ信号をそのままＩ／Ｏバス１０７に送出する。
障害生成装置１３０は、パリティ生成回路３０２が生成したパリティ信号を反転して、Ｉ／Ｏバス１０７で障害と定義される信号を生成する。障害信号の生成は、障害生成レジスタ３０３で制御する。通常動作時は、レジスタ３０３は０に設定する。レジスタ３０３を１に設定すると、障害生成装置１３０はパリティ生成回路３０２で生成された信号を反転して、Ｉ／Ｏバス１０７に障害となる信号を送出する。
レジスタ３０３は、管理装置１２０のＣＰＵ１２１の入出力命令によりアクセス可能なように構成する。管理プログラム２１１は、レジスタ３０３を１にセットしてＩ／Ｏバス１０７にアクセスする操作を実行することで計算機１００のＯＳ２０１を強制停止できる。
障害生成装置１３０は、パリティ信号１０７ａに不正な信号を送出した時点で障害生成状態レジスタ３０４を１にセットする。また、Ｉ／Ｏバス１０７への障害注入が連続して発生しないように、レジスタ３０３を０にリセットする。
本実施形態では、アドレス信号のパリティを不正な値にすることでＩ／Ｏバスに障害を送出したが、不正なバス信号の生成の仕方はこの限りではない。
Ｉ／Ｏバス制御装置１０４について説明する。第４図は、本実施形態におけるＩ／Ｏバス制御装置１０４の構成の一部を示す図である。
Ｉ／Ｏバス制御装置１０４は、Ｉ／Ｏバス１０７へのデータの送出、および、Ｉ／Ｏバス１０７からのデータの取り込みを実施する。データ取り込みの際、Ｉ／Ｏバス１０７上のデータが不正になっていないかを検査するため、アドレス信号１０７ｂに関するパリティ信号１０７ａを参照する。Ｉ／Ｏバス制御装置１０４内のパリティ計算回路４０１は、アドレス信号１０７ｂよりパリティ値を求める。このパリティ値とＩ／Ｏバス１０７のパリティ信号１０７ａを比較する。一致しない場合、バスエラー通知線１０８により、ＣＰＵ１０１にバス障害を通知する。
障害生成装置１３０によりＩ／Ｏバス１０７に障害となる信号が送出された場合、パリティ値が不正になるため、ＣＰＵ１０１にバス障害が通知される。
第５図にＣＰＵ１０１側のバス障害処理に関する構成を示す。ＣＰＵ１０１は、バスエラー信号線１０８よりバス障害を通知されると、バス初期化回路５０１によりバス１０３の初期化を実施する。ここでバス１０３の初期化とは、ＣＰＵ１０１内部にあるバスに関する状態を初期状態に設定することを示し、ＣＰＵ１０１のリセットではない。このバス初期化処理は、バス１０３に接続している他の装置でも必要であり、バス初期化信号１０３ｂとして他の装置にもバス初期化を指示する。
また、ＣＰＵ１０１は、遅延回路５０２でエラー通知信号１０８を遅延させて、バス１０３の初期化が終了した時点で、割込み制御回路５０４を駆動して内部的にバスエラー割り込みを生成する。
通常の外部割り込みは、外部割り込み信号１０３ａでプロセッサに通知される。外部割り込みは、割り込み禁止レジスタ５０３の値によりマスクされる。バスエラー通知による割り込みが、割り込み禁止レジスタ５０３によるマスク制御を迂回して割り込み制御回路５０４を駆動するように構成すれば、ＣＰＵ１０１が外部割り込み禁止の状態でも、バス障害による割り込みを生成できる。
ＣＰＵ１０１のバス初期化処理について説明する。第６図は、ＣＰＵ１０１のバス初期化回路５０１の構成例を示した図である。
ＣＰＵ１０１のバスに関係する回路は、クロック信号６０４に同期して駆動する。
ＣＰＵ１０１内には、バス１０３を制御する回路がある。その中には、過去にバス１０３を流れたデータに関連する状態を保持している部分がある。この例では、フリップフロップにより構成されたレジスタ６０３がバス状態を保存しているとする。レジスタ６０３は、クロック信号６０４と同期して、バス状態を取り込む。
通常動作時のレジスタ６０３の値は、バス制御回路６０１により決定される。バス初期化信号１０３ｂがアクティブでない、つまり０の場合は、バス制御回路６０１の出力値がレジスタ６０３に到達するようにスイッチ回路６０５を構成する。
バス初期化信号１０３ｂがアクティブの場合は、初期状態レジスタ６０２に設定されている値がレジスタ６０３に到達するようにスイッチ回路６０５を構成する。初期状態レジスタ６０２の値は、ＣＰＵ１０１に予め設定されている、あるいは、計算機１０１の電源投入時の初期化により設定される。これにより、ＣＰＵ１０１は、バス初期化信号１０３ｂを受けてレジスタ６０３を初期状態に設定できる。
本実施形態では、ＣＰＵ１０１がバス初期化信号１０３ｂをバス１０３に送出したが、バスエラー通知信号１０８をバス１０３に接続する各々の装置が検出して、各装置で初期化を実施しても良い。
本実施形態では、以上のハードウェア構成により、計算機１００のＩ／Ｏバス１０７に接続する管理装置１２０が、計算機１００の実行状態とは独立した任意の時点に、Ｉ／Ｏバス１０７で障害と定義される信号をＩ／Ｏバス１０７へ送出することで、バス１０３に接続する各装置が保持するバス１０３に関連する内部状態を初期化して、ＣＰＵ１０１でバスエラー割り込みを生成することが可能となる。
次に、本実施形態のソフトウェアの処理について説明する。第７図は、計算機１００で実行するＯＳ２０１内の、バスエラー用の割り込みハンドラ２０４の処理を示すフローチャートである。
ＣＰＵ１０１は、バスエラー割り込みを捕獲すると、ステップ７０１から始まる割り込みハンドラ２０４に制御を渡す。バスエラー割り込みは、管理装置１２０が意図的に発生する場合と、そうでない場合がある。割り込みハンドラ２０４では、まず、管理装置１２０の障害生成状態レジスタ３０４の値を取得する（ステップ７０１）。レジスタ３０４は、ＣＰＵ１０１からＩ／Ｏバス１０７経由でアクセス可能なように構成されている。
続いて取得したレジスタ３０４の値を検査し（ステップ７０２）、レジスタ３０４の値が０である場合、つまり、管理装置１２０がバス障害を送出したのではに場合は、通常のバスエラー処理（ステップ７０５）を実行する。例えば、障害情報のコンソール１０６への表示、主記憶１０２の外部記憶装置１０５へのダンプ、計算機１００の再起動等である。
レジスタ３０４が１の場合、すなわち、管理装置１２０がＩ／Ｏバス１０７に障害を注入したことによるバスエラーの場合は、障害状態生成レジスタをリセットし（ステップ７０３）、その旨をコンソール１０６に表示する（ステップ７０４）。７２０は、コンソール画面表示の例である。
管理装置１２０内の管理プログラム２１１の処理について説明する。第８図は、管理プログラム２１１の処理例を示すフローチャートである。
まず、ステップ８０１で、計算機１００への停止要求があるかどうか検査する。停止要求は、遠隔の計算機１５１や１７０から通信回線経由でモデム１２７やネットワークアダプタ１２８に送られたり、および、緊急停止ボタン１２９の押下等により生じる。
停止要求がない場合は、計算機１００の動作状況を収集して管理データ２１０に格納する（ステップ８０２）。取得したデータ２１０より、計算機１００が正常に実行しているか判定する（ステップ８０３）。実行している場合は、動作状況を遠隔の計算機に送信する（ステップ８０４）。停止している場合は、ステップ８０７へ進み、障害情報を取得して遠隔の計算機に送信する。
停止要求がある場合は、ステップ８０５を実行する。ここでは、障害生成レジスタ３０３を１に設定し、Ｉ／Ｏバス１０７へアクセスする命令を実行する（ステップ８０６）。これにより、ＣＰＵ１０１でバスエラー割り込みが生成されて、バスエラー割り込みハンドラ２０４に制御が渡る。
その後、ステップ８０７へ進み、障害情報を遠隔の計算機に送信する。
以上のハードウェア構成、および、ソフトウェア手順により、Ｉ／Ｏバス１０７に接続した管理装置１２０より、計算機１００で実行するＯＳ２０１の実行を強制停止して、ＯＳの障害処理であるバスエラー割り込みハンドラ２０４を実行することが可能となる。
本実施形態は、管理装置１２０の障害生成装置１３０が、計算機１００の実行状態とは無関係の任意の時点に、Ｉ／Ｏバス１０７に障害となる信号を送出することにより、計算機１００で実行するＯＳ２０１の強制停止を実現している。この実施形態では、計算機１００と管理装置１２０をＩ／Ｏバス１０７だけで接続する。従来の専用信号線で管理装置と計算機を接続する方式と比べて、管理装置１２０が接続できる計算機１００の制限が緩和される。
また、従来の管理装置が、障害によるＯＳ実行停止時にＣＰＵリセットにより計算機の再起動を実行していたため、障害原因の解析を困難にしていた。それに対し、本実施形態では、Ｉ／Ｏバス制御装置１０４がバスエラーをＣＰＵ１０１に通知し、ＣＰＵ１０１はそれを受けて割り込みを生成して割り込みハンドラ２０４を実行する。この割り込みハンドラ２０４の延長で、主記憶１０２の内容の外部記憶装置１０５への格納、障害要因解析、障害要因除去などの障害処理や、ＯＳ２０１の停止処理を実行できるため、後の障害解析と回復が容易になる。
また、ＣＰＵ１０１、および、バス１０３に接続する各々の装置がバス１０３に関する内部状態を初期化してからＣＰＵ１０１が割り込みを生成するため、割り込みハンドラ２０４が実行できる可能性が高まる。
本実施形態では、バスエラー割り込みハンドラ２０４で主記憶１０２の内容を外部記憶装置１０５に格納するとしたが、主記憶１０２の内容の全て、あるいは、一部や、割り込みハンドラ２０４による障害解析情報を、管理装置１２０の主記憶装置１２２に格納しても良い。
この実施形態では、管理装置１２０がＩ／Ｏバス１０７に障害信号を送出するとしたが、ネットワークアダプタやモデムといった装置に、特定のパケットあるいはデータを受信した時に、Ｉ／Ｏバス１０７に障害信号を送出するように障害信号生成装置１３０を組み込んでも良い。
（２）第２の実施形態
次に、本発明の第２の実施形態について説明する。
第１の実施形態では、Ｉ／Ｏバス１０７に接続している管理装置１０２からＩ／Ｏバス１０７に、障害と認識される信号を送出する必要があった。このためには、管理装置１２０がＩ／Ｏバス１０７へアクセスする権利を取得しなければならない。つまり、バス１０７の調停でバスの使用権を獲得しなければならない。
ところが、管理装置１２０が、Ｉ／Ｏバス１０７の使用権が取得できない場合がある。ＣＰＵ１０１が、Ｉ／Ｏバス１０７に接続しているデバイスに対してある連続した非分割の処理を実行する場合、Ｉ／Ｏバス１０７を排他的に使用するとしてバス使用権を獲得する。これを、バスをロックすると呼ぶ。この時に、対象デバイスが故障している等の理由でデバイスが応答できなければ、バス１０７の使用権が解放されないままになる。
このような場合、第１の実施形態ではＩ／Ｏバス１０７に障害信号を注入できないため、管理装置１２０から計算機１００のＯＳ２０１の障害処理を起動できない。
本発明の第２の実施形態では、バスがロックしている状態を解除してから、障害信号を送出する手段と手順について説明する。本実施形態では、管理装置１２０がＩ／Ｏバス１０７のロック状態を検査できるようにする。更に、管理装置１２０が、バスをロックしたまま完了しないＩ／Ｏバス要求に対して、任意のデータを送出することで要求操作が完了したと見せかけ、要求発行元にバスロックを解除させる。
Ｉ／Ｏバス上のデータの流れについて説明する。第９図は、本実施形態におけるＩ／Ｏバス１０７上でのデータの流れを示すタイミング図である。
第９図は、Ｉ／Ｏバス１０７のアクセス権調停が済んで、実際にデータの受け渡しをする時のバス信号の状態を示している。Ｉ／Ｏバス１０７にアクセスするデバイスは、アクセス権を獲得した後、アクセス対象デバイスを指定するアドレス信号１０７ｂを出力する。
このアクセスを排他的に実行したい場合は、Ｉ／Ｏバスロック信号１０７ｃを同時にアクティブにする。Ｉ／Ｏバス１０７に接続するデバイスは、バスロック信号１０７ｃがアクティブになっている間、Ｉ／Ｏバス１０７に次の要求を出すことができないよう構成される。要求元デバイスは、操作が終了するまでバスロック信号１０７ｃをアクティブにしておく。
アドレス信号１０７ｂにより指定されたデバイスは、操作を完了すると応答信号１０７ｄをアクティブにして、データが有ればデータ信号線１０７ｅにデータを出力する。
要求元デバイスは、応答信号１０７ｄがアクティブになったのを検出して、データ信号線１０７ｅよりデータを取り込み、バスロック信号１０７ｃのアクティブを解除する。
第１０図は、第２の実施形態での制御装置１２０の構成を示した図である。ＣＰＵ１０１がデバイス１０２０に対して非分割の連続Ｉ／Ｏ要求を発行したが、デバイス１０２０が応答できないとして説明する。
ＣＰＵ１０１が非分割のＩ／Ｏ要求を発行すると、Ｉ／Ｏバス制御装置１０４は、Ｉ／Ｏバス１０７のバスロック信号１０７ｃをアクティブにする。
制御装置１２０には、各時点のバスロック信号１０７ｃを保持するバスロック状態レジスタ１００６を設ける。バスロック状態レジスタ１００６は、管理装置１２０上のＣＰＵ２０１から参照可能なように構成され、管理プログラム２１１はその値を知ることができる。
管理装置１２０は、通常動作時は、Ｉ／Ｏバス１０７のアドレス信号１０７ｂが制御装置１２０を指定した時だけ応答信号１０７ｄを出力するように構成されている。これに加えて、管理プログラム２１１の指示により、任意の時点にＩ／Ｏバス１０７へ応答信号１０７ｄを送出する手段を持っている。
応答信号１０７ｄは、代理応答制御レジスタ１００１で制御する。代理応答制御レジスタ１００１が０の場合は、デバイス制御回路１００２が出力する応答信号１００３が、Ｉ／Ｏバスの応答信号１０７ｄとして出力される。
Ｉ／Ｏバスデータ信号１０７ｅも、代理応答制御レジスタ１００１により制御する。スイッチ回路１００５が、レジスタ１００１の値に応じて、デバイス制御回路１００２の出力値か、代理応答値レジスタ１００４の出力値を、データ信号１０７ｅに出力する。
つまり、代理応答制御レジスタ１００１を１にセットすると、応答信号１０７ｄがアクティブになり、代理応答値レジスタ１００４に格納されている値がバスデータ信号１０７ｅに送出される。
次に、本実施形態の制御プログラム２１１の処理について説明する。第１１図は、制御プログラム２１１の、ＯＳ２０１の強制停止処理を示すフローチャートである。
まず、制御プログラム２１１は、バスロック状態レジスタ１００６参照して、Ｉ／Ｏバス１０７がロックされているかどうか検査する（ステップ１１０１）。ロックされていない場合は、ステップ１１０３へ進み、第１の実施形態と同じ手順で、障害生成レジスタ３０３を１にセットして、Ｉ／Ｏバス１０７に障害信号を注入する。
ロックされている場合は、ステップ１１０２へ進む。ステップ１１０２では、代理応答制御レジスタを１にセットする。これにより、Ｉ／Ｏバス１０７のロック解除を試み、ステップ１１０１へ戻って、再度バスロック状態を検査する。これで、バスロックが解除されれば、ステップ１１０３へ進み、障害信号を注入する。
以上の手段と手順により、管理装置１２０は、Ｉ／Ｏバス１０７が他のデバイスにロックされていても、障害信号をＩ／Ｏバス１０７に注入することが可能になる。これにより、Ｉ／Ｏバス１０７だけで計算機１００に接続している管理装置１２０からＯＳ２０１を強制停止できる障害範囲が拡大する。
（３）第３の実施形態
次に、本発明の第３の実施形態について説明する。第２の実施形態では、Ｉ／Ｏバス１０７のロックの解除と、Ｉ／Ｏバス１０７への障害注入の制御を個別に実行した。本実施形態では、これらを１つの回路としてまとめて制御装置１２０に実現する手段について説明する。
第１２図は、本実施形態の障害生成装置１２０１の構成を示す図である。障害生成装置１２０１には、障害生成回路１２０２とバスロック解除回路１２０３が含まれている。障害生成回路１２０２は、第１の実施形態の第３図に示した障害生成装置１３０と同様の構成である。バスロック解除回路１２０３も、第２の実施形態の第１０図に示した構成と同様の構成である。
障害生成装置１２０１は、クロック６０４と同期してＩ／Ｏバス１０７のバスロック信号１０７ｃを採取して、バスロック状態レジスタ１２０４に格納している。
障害生成装置１２０１は、障害信号注入の制御を、障害生成レジスタ１２０５により実施する。障害生成レジスタ１２０５が０の時、障害生成回路１２０２とバスロック解除回路１２０３は、作動しない。制御プログラム２１１は、ＯＳ２０１の実行を停止する時、障害生成レジスタ１２０５を１に設定する。
障害生成レジスタ１２０５を１に設定した時にバスロック信号１０７ｃがアクティブでなければ、障害生成回路１２０３が作動する。回路１２０３は、Ｉ／Ｏバス１０７に障害となる信号を送出する。
レジスタ１２０５を１に設定した時にバスロック信号１０７ｃがアクティブである場合は、バスロック解除回路１２０４が作動する。回路１２０４は、Ｉ／Ｏバス１０７にバス応答信号１０７ｄとバスデータ信号１０７ｅを送出して、バスロックの解除を試みる。
バスロックが解除されると、つまり、バスロック信号１０７ｃがアクティブでなくなると、障害生成回路１２０３が作動し、障害信号をＩ／Ｏバス１０７に送出する。
本実施形態に依れば、第２の実施形態でのようにソフトウェアによりロック信号を監視して障害信号を注入するよりも、確実に計算機１００の実行を停止できる。また、第２の実施形態でのソフトウェアによる制御部を除去できる。
第２と第３の実施形態では、管理装置１２０が疑似の応答信号をＩ／Ｏバス１０７に送出してバスロックを解除した。Ｉ／Ｏバス１０７の構成によっては、応答に応答先を指定しなければならないバスもある。この場合は、管理装置１２０がバスロックを要するバストランザクションを送出した装置のバス上の識別子を記録しておけば良い。
（４）第４の実施形態
次に、本発明の第４の実施形態について説明する。これまで説明した実施形態では、Ｉ／Ｏバス１０７だけの接続により計算機１００の実行を停止する方式について説明したが、管理装置１２０が従来の専用信号線も備えていても良い。例えば、計算機１００の実行を停止する場合、まず、本発明の手段によりＯＳ２０１の停止を試み、本発明の手段により停止できなければ、従来の手段により計算機１００をリセットする。これを実現する計算機１００と管理装置１２０の構成について説明する。
第１３図は、第４の実施形態の計算機１００と管理装置１２０の構成を示す図である。計算機１００には、ＣＰＵ１０１をリセットするリセット回路１３０２がある。リセット回路１３０２は、リセット制御線１３０３により管理装置１２０と接続している。リセット制御線１３０３がアクティブになった時に、リセット回路１３０２が作動し、ＣＰＵ１０１をリセットする。これにより計算機全体がリセットされる。
管理装置１２０には、リセット制御レジスタ１３０１がある。リセット制御レジスタ１３０１は、ＣＰＵ１２１から設定可能なように構成する。リセット制御レジスタ１３０１が１に設定されたときに、リセット制御線がアクティブになるよう構成する。
次に、管理プログラム２１１の計算機１００停止の処理フローについて説明する。第１４図は、そのフローチャートを示している。まず、障害生成装置１３０を駆動して、Ｉ／Ｏバス１０７に障害信号を送出してみる（ステップ１４０１）。あらかじめ定めた時間を待ってから（ステップ１４０２）、ＯＳ２０１が障害処理を実行したかを検査する（ステップ１４０３）。処理が実行されていなければ、ステップ１４０４でリセット制御レジスタ１３０２を１にして、計算機１００をリセットする。
（５）第５の実施形態
これまで説明した実施形態では、遠隔の計算機や操作者がＩ／Ｏバス１０７への障害送出の契機を与えるとしているが、管理装置１２０や管理プログラム２１１が障害送出の実施するかを決定しても良い。本発明の第５の実施形態では、管理エージェントプログラム２０３と管理プログラム２１１が連携により、障害送出を実施する方式について述べる。管理装置１２０には、管理エージェント２０３が実行していることを示す、エージェント起動レジスタがある。エージェント起動レジスタは、計算機１００のＣＰＵ１０１と管理装置１２０のＣＰＵ２０１の両方からアクセス可能なように構成される（図省略）。
管理エージェント２０３は、一定時間間隔で実行して、実行時にエージェント起動レジスタをセットするように構成する（フローチャート省略）。管理装置１２０の側では、エージェント起動レジスタを参照することにより、計算機１００が正常実行しているか判定する。
第１５図は、管理装置１２０で実行する管理プログラム２１１の処理を示すフローチャートである。第１５図に示した処理は、一定時間間隔で実行されるように構成する。
管理プログラム２１１は、エージェント起動レジスタを検査した時に、レジスタがセットされていない回数を記録する変数（未起動回数）を保持している。
管理プログラム２１１の処理について説明する。まず、管理装置１２０のエージェント起動レジスタを検査する（ステップ１５０１）。本レジスタがセットされている場合は、本レジスタをクリアし（ステップ１５０４）、未起動回数を０に設定して（ステップ１５０５）、終了する。
レジスタがセットされていない場合、未起動回数を検査する（ステップ１５０２）。未起動回数が予め定めた正整数Ｘである場合、Ｉ／Ｏバス１０７に障害信号を送出する（ステップ１５０３）。Ｘでない場合は、未起動回数に１を加算して（ステップ１５０６）、終了する。
以上により、管理プログラム２１１が計算機１００の実行状態を検査して、自発的にＩ／Ｏバス１０７に障害を送出することが可能となる。障害を送出する時に、遠隔の計算機１５１や１７０に、計算機１００を強制停止したことを示すメッセージを送信しても良い。
また、第５の実施形態では、ソフトウェアによりＩ／Ｏバス１０７への障害送出を実施するようにしたが、管理装置１２０に一定時間再設定されなければ障害生成装置１３０を駆動するように構成したウォッチドッグタイマを設けてもよい。
この場合、管理エージェント２０３は、一定時間間隔で実行して、実行時にウォッチドッグタイマを再設定するよう構成する。管理プログラム２１１の側では、特別な処理は不要になる。
また、管理プログラム１２０が、計算機１００の主記憶１０２の内容を参照して、ＯＳ２０１の実行状況を検査して、それに応じてＩ／Ｏバス１０７に障害信号を送出しても良い。
産業上の利用可能性
以上のように、本発明にかかる計算機の障害処理方法及び装置は、管理装置からＩ／Ｏバス経由で管理対象の計算機に障害発生の信号を送り、管理対象の計算機ではこの信号の受信を契機としてバスの初期化を行なうとともに、割り込みを生成する計算機システムを構築するのに適している。
【図面の簡単な説明】
第１図は、本発明の実施形態のシステム構成図である。
第２図は、本発明の実施形態のプログラムの構成図である。
第３図は、デバイス制御装置の構成図である。
第４図は、Ｉ／Ｏバス制御装置の構成図である。
第５図は、ＣＰＵ内の障害処理部分の構成図である。
第６図は、ＣＰＵ内のバス初期化部分の構成図である。
第７図は、ＯＳのバスエラー割り込みハンドラの処理のフローチャートである。
第８図は、管理装置で実行する管理プログラムの処理のフローチャートである。
第９図は、Ｉ／Ｏバス上の信号のタイミングを示す図である。
第１０図は、本発明の第２の実施形態における、管理装置内のバスロック解除装置の構成図である。
第１１図は、本発明の第２の実施形態における、管理装置で実行する管理プログラムの処理のフローチャートである。
第１２図は、本発明の第３の実施形態における、管理装置内の障害生成装置の構成図である。
第１３図は、本発明の第４の実施形態における、計算機と管理装置の構成図である。
第１４図は、本発明の第４の実施形態における、管理装置で実行する計算機停止処理のフローチャートである。
第１５図は、本発明の第５の実施形態における、管理装置で実行する計算機停止処理のフローチャートである。
【図１】
0003991590.tif 000002
【図２】
0003991590.tif 000003
【図３】
0003991590.tif 000004
【図４】
0003991590.tif 000005
【図５】
0003991590.tif 000006
【図６】
0003991590.tif 000007
【図７】
0003991590.tif 000008
【図８】
0003991590.tif 000009
【図９】
0003991590.tif 000010
【図１０】
0003991590.tif 000011
【図１１】
0003991590.tif 000012
【図１２】
0003991590.tif 000013
【図１３】
0003991590.tif 000014
【図１４】
0003991590.tif 000015
【図１５】
0003991590.tif 000016