(57)【要約】【課題】マルチプロセッシング方式の電子計算機（マルチプロセッサシステム）において、安全なプロセッサ障害処理方法を提供する。【解決手段】図１に示す実施形態は主記憶装置共有型のマルチプロセッサシステムの概略構成図である。プロセッサのいずれか１つに障害が発生すると、プロセッサ割り当て手段３０１が、障害の発生していないプロセッサのいずれか１つに、障害処理用に準備された実行環境を割り当て、障害処理を行わせる。障害処理は、プロセス空間上書き手段２０１が障害の発生したプロセッサの実行環境をプロセッサ障害処理実行手段４２１で上書きして行われ、プロセッサ障害処理実行手段４２１の障害処理実行内容は、障害発生プロセッサの排他制御情報を参照して解放を行い、実行中のプログラムの停止処理を行うことである。【選択図】図１
2008123129.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置共有型のマルチプロセッサシステムであって、
プロセッサのいずれか１つに障害が発生すると、障害の発生していないプロセッサのいずれか１つに、障害処理用に準備された実行環境を割り当て、
該障害非発生プロセッサが、前記障害発生プロセッサの排他制御情報を参照して解放を行い、前記障害発生プロセッサで実行中のプログラムの停止処理を行うことを特徴とするマルチプロセッサシステム。
【請求項２】
任意のプログラムの実行を障害の発生していないプロセッサのいずれか１つに割り当てて、主記憶装置上に前記プログラムの実行環境を準備するプロセッサ割り当て手段を有することを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
プロセッサのいずれか１つに障害が発生したことを検出してプロセッサ番号とともに前記障害非発生プロセッサの障害処理用に準備された実行環境に通知するプロセッサ障害検出手段を有することを特徴とする請求項１又は２記載のマルチプロセッサシステム。
【請求項４】
主記憶装置共有型のマルチプロセッサシステムの障害処理方法であって、
プロセッサのいずれか１つに障害が発生すると、障害の発生していないプロセッサのいずれか１つに、障害処理用に準備された実行環境を割り当て、
該障害非発生プロセッサが、前記障害発生プロセッサの排他制御情報を参照して解放を行い、前記障害発生プロセッサで実行中のプログラムの停止処理を行うことを特徴とするマルチプロセッサシステムの障害処理方法。
【請求項５】
主記憶装置共有型のマルチプロセッサシステムに、
プロセッサのいずれか１つに障害が発生すると、障害の発生していないプロセッサのいずれか１つに、障害処理用に準備された実行環境を割り当てるプロセッサ割り当て処理と、
障害処理を割り当てられたプロセッサが前記障害発生プロセッサの排他制御情報を参照して解放を行う処理と、
前記障害処理を割り当てられたプロセッサが前記障害発生プロセッサで実行中のプログラムの停止を行う処理と、
を実行させることを特徴とするマルチプロセッサシステムの障害処理プログラム。
【請求項６】
マルチプロセッサシステムに、
任意のプログラムの実行を障害の発生していないプロセッサのいずれか１つに割り当てて、主記憶装置上に前記プログラムの実行環境を準備するプロセッサ割り当て処理を実行させることを特徴とする請求項５記載のマルチプロセッサシステムの障害処理プログラム。
【請求項７】
請求項５又は６記載のマルチプロセッサシステムの障害処理プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステム、障害処理方法、プログラム及び記録媒体に関し、特に、主記憶装置を共有するタイプのマルチプロセッシング方式のコンピュータシステムに関する。
【背景技術】
【０００２】
従来、マルチプロセッシング方式の電子計算機のプロセッサ障害処理方法としては、例えば、電子計算機のブート（起動）時に、固定されたブートＣＰＵ又は正常に動作するＣＰＵのいずれか１つがブート処理を行い、他のＣＰＵの障害を検査して、異常が発見されたＣＰＵはシステムに組み込まず正常なＣＰＵだけで動作するという従来技術が知られている。
【０００３】
しかしながら、上記の従来技術は、ＣＰＵ障害検出は起動時にのみ行われる方法であって、システムに稼働中には行われず稼働中の突発的なＣＰＵ障害に対しては対応できないという問題点があった。システム稼働中のＣＰＵ障害には、多くの場合、システム全体が異常停止してしまう。
【０００４】
マルチプロセッサ構成の計算機の障害処理方法に関する従来技術としては、例えば、特許文献１に開示された発明がある。この従来発明は、マルチプロセッサ構成の計算機のシステムリカバリ制御方法であって、リカバリ制御手段により排他状態で更新不能となっているデータを非排他状態にする従来技術である（例えば、段落番号００２１）。
【０００５】
また、他に例えば、特許文献２に記載の従来発明は、各々のノードごとに異なる計算機プログラム実行環境を設定して動作させる耐障害計算機システムである（例えば、段落番号００６５）。
【０００６】
一方で、あるプロセッサで実行中のプログラムの停止処理を行うという点に注目すれば、例えば、特許文献３に記載の従来発明がある。この従来発明は、管理タスクがアプリケーションソフト動作タスクの終了処理をする（携帯電話機）端末及びコンピュータプログラムである（例えば、段落番号００１６）。
【特許文献１】特開平１１−２９６４９２号公報
【特許文献２】特開２００４−２９５７３８号公報
【特許文献３】特開２００３−０２９９８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のマルチプロセッサ構成のシステムにおいては、プロセッサ障害が発生した場合、障害が発生したプロセッサ上で実行されるプログラムが実行中のまま放置されることにより、関連するプログラムの実行に影響を及ぼすだけでなく、システム運用にも支障を来す場合があった。
【０００８】
また、障害が発生したプロセッサ上で実行されていたプログラムを終了させる機構を保有するシステムにおいても、プログラムの実行環境に障害発生時のものを使用するため、正常にプログラムが終了しないという問題点があった。
【０００９】
また、プロセッサ障害が発生することが事前に予知可能なハードウェア機構を持つシステムでは、プロセッサ障害が発生する直前に当該プロセッサ上で動作するプログラムを退避し、オペレーティングシステム上、そのプロセッサを存在しないものとして扱うことなどの事前対応が可能である。
【００１０】
しかしながら、そうしたハードウェア機構を持たないシステムでは、突然プロセッサ障害が発生することにより、オペレーティングシステム上矛盾を生じ、継続してシステム運用ができないことがある、という問題点があった。
【００１１】
特に、メインフレーム用オペレーティングシステムやハードウェアベンダ等が独自に開発したオペレーティングシステムでは独自の障害処理機能を保有していたり、専用のハードウェア機構が実装されていたりすることがあるのに対して、オープンソースであるＵＮＩＸ（登録商標）システムは、障害処理系が弱い。
【００１２】
そこで本発明は、上記従来技術の問題点に鑑み、マルチプロセッシング方式の電子計算機（マルチプロセッサシステム）において、安全なプロセッサ障害処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するための請求項１記載の発明は、主記憶装置共有型のマルチプロセッサシステムであって、プロセッサのいずれか１つに障害が発生すると、障害の発生していないプロセッサのいずれか１つに、障害処理用に準備された実行環境を割り当て、該障害非発生プロセッサが、前記障害発生プロセッサの排他制御情報を参照して解放を行い、前記障害発生プロセッサで実行中のプログラムの停止処理を行うことを特徴とするマルチプロセッサシステムである。
【００１４】
請求項２記載の発明は、請求項１記載のマルチプロセッサシステムにおいて、任意のプログラムの実行を障害の発生していないプロセッサのいずれか１つに割り当てて、主記憶装置上に前記プログラムの実行環境を準備するプロセッサ割り当て手段を有することを特徴とする。
【００１５】
請求項３記載の発明は、請求項１又は２記載のマルチプロセッサシステムにおいて、プロセッサのいずれか１つに障害が発生したことを検出してプロセッサ番号とともに前記障害非発生プロセッサの障害処理用に準備された実行環境に通知するプロセッサ障害検出手段を有することを特徴とする。
【００１６】
請求項４記載の発明は、主記憶装置共有型のマルチプロセッサシステムの障害処理方法であって、プロセッサのいずれか１つに障害が発生すると、障害の発生していないプロセッサのいずれか１つに、障害処理用に準備された実行環境を割り当て、該障害非発生プロセッサが、前記障害発生プロセッサの排他制御情報を参照して解放を行い、前記障害発生プロセッサで実行中のプログラムの停止処理を行うことを特徴とするマルチプロセッサシステムの障害処理方法である。
【００１７】
請求項５記載の発明は、主記憶装置共有型のマルチプロセッサシステムに、プロセッサのいずれか１つに障害が発生すると、障害の発生していないプロセッサのいずれか１つに、障害処理用に準備された実行環境を割り当てるプロセッサ割り当て処理と、障害処理を割り当てられたプロセッサが前記障害発生プロセッサの排他制御情報を参照して解放を行う処理と、前記障害処理を割り当てられたプロセッサが前記障害発生プロセッサで実行中のプログラムの停止を行う処理と、を実行させることを特徴とするマルチプロセッサシステムの障害処理プログラムである。
【００１８】
請求項６記載の発明は、請求項５記載のマルチプロセッサシステムの障害処理プログラムにおいて、マルチプロセッサシステムに、任意のプログラムの実行を障害の発生していないプロセッサのいずれか１つに割り当てて、主記憶装置上に前記プログラムの実行環境を準備するプロセッサ割り当て処理を実行させることを特徴とする。
【００１９】
請求項７記載の発明は、請求項５又は６記載のマルチプロセッサシステムの障害処理プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体である。
【発明の効果】
【００２０】
本発明によれば、マルチプロセッサシステムにおいて、安全なプロセッサ障害処理方法を提供することができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の最良の実施形態について図面を参照して詳細に説明する。
本実施形態は、プロセッサ障害が発生した場合でも、当該プロセッサを切り離し、継続してシステム運用を可能とするプロセッサ障害処理機構であることに特徴がある。
【００２２】
上記の機構は、障害が発生したプロセッサ上で動作していたプログラムのテキスト、データ、スタック情報を、障害処理専用コードに置き換え、別のプロセッサで実行させることにより、プロセスを安全に終了させ、継続してシステム運用を可能とする機構である。
【００２３】
また、好適には、ハードウェアは、複数の演算制御装置（プロセッサ群）が１つの主記憶装置（メインメモリ）を共有する密結合型のマルチプロセッサシステムであり、基本ソフトウェア（オペレーティングシステム）は、ＵＮＩＸ（登録商標）系を用いる。
なお、密結合型（メモリ共有型）マルチプロセッシング方式は、対称型マルチプロセッシングを含む。
【００２４】
上述のように構成することによって、次のような効果が得られる。すなわち、第１の効果は、プロセッサ障害後も残存するプロセッサを利用して継続してシステム運用ができることにある。
その理由は、プロセッサ障害処理専用の実行環境を使用することにより、障害が発生したプロセッサ上で実行されていたプログラムを安全に終了させ、システムとして矛盾を生じさせないようにするためである。
【００２５】
以下、本実施形態の構成についてさらに詳しく、図１を参照して述べる。
図１は、本実施形態に係るマルチプロセッサシステムの、主要部の構成を示す概略ブロック図である。
【００２６】
図１において、このシステムは、プログラム制御により動作する「プロセッサ１」１０１、「プロセッサ２」１０２、「プロセッサｎ」１０３と、プロセス空間上書き手段２０１と、プロセッサ障害検出手段２１１と、プロセッサ割り当て手段３０１と、メモリ４０１と、各プロセッサとメモリ間のデータ転送用バス５０１とから構成されている。
【００２７】
メモリ４０１は、各プロセッサで動作するプロセスの実行環境（「プロセッサ１実行環境」４１１と、「プロセッサ２実行環境」４１２と、「プロセッサｎ実行環境」４１３）と、プロセッサ障害処理実行手段４２１と、「プログラムＡ」４３１と、「プログラムＢ」４３２と、「プログラムＺ」４３３とを含む。全てのプログラムはプロセッサ割り当て手段３０１により任意のプロセッサが割り当てられ、そのプロセッサ上で実行される。図１の場合は、「プログラムＡ」４３１が「プロセッサ１」１０１、「プログラムＢ」３２が「プロセッサ２」１０２、「プログラムＺ」４３３が「プロセッサｎ」１０３で実行されていることを示している。
【００２８】
「プロセッサ１実行環境」４１１は、「プロセッサ１」１０１がプログラムを実行するためのメモリエリアである。「プロセッサ２実行環境」４１２、「プロセッサｎ実行環境」４１３も同様にそれぞれ「プロセッサ２」１０２、「プロセッサｎ」１０３がプログラムを実行するためのメモリエリアである。
【００２９】
これらの「実行環境」は、プログラムが動作するためのテキスト、データ、スタック領域を示す。これに対し、プロセッサ障害処理実行手段４２１は、プログラムであり、実際に実行される場合は、いずれかのプロセッサの「実行環境」にロードされる。
なお、プロセッサ障害処理実行手段４２１は、必ずしもメモリに常駐されている必要はなく、必要なときだけロードされるプログラムとして存在していてもよい。
【００３０】
また、プロセッサ障害検出手段２１１は、各プロセッサが障害時に発する異常ステータス値等を、データ転送用バス５０１を介して検出するといったハードウェアである。そして、プロセッサ障害検出手段２１１は、プロセッサ障害が発生したことをそのプロセッサ番号と共に、本実施形態のオペレーティングシステムへ、割り込み信号を送って通知するという動作を行う。
【００３１】
また、プロセス空間上書き手段２０１、プロセッサ割り当て手段３０１、プロセッサ障害処理実行手段４２１のそれぞれは、本実施形態のオペレーティングシステム内のプログラムである。なお、このプログラムは、例えば、オペレーティングシステムのカーネルドライバの、一部の構成要素であることが好適である。
【００３２】
以上の構成を備える本実施形態の動作を、図２を参照して説明する。
図２において、プロセッサ障害が発生すると（ステップＳ２１）、プロセッサ障害検出手段２１１は、どのプロセッサで障害が発生したかを検出し（ステップＳ２２）、プロセス空間上書き手段２０１に通知する（ステップＳ２３）。プロセス空間上書き手段２０１は、障害が発生したプロセッサ上で実行されていたプログラムに、プロセッサ障害処理実行手段４２１を上書きする（ステップＳ２４）。
【００３３】
プロセッサ割り当て手段３０１は、メモリ４０１上に存在するプログラムを実行するためのプロセッサを選択する。プロセッサを選択した後、プロセッサ番号に相当するプログラム実行環境メモリエリアにプログラムが実行するために必要な情報を展開する。これにより、指定されたプロセッサでプログラムが実行される。
【００３４】
図１において、「プロセッサ１」１０１がプロセッサ障害を起こした場合を例にとって、さらに具体的に説明する。
【００３５】
図１のように「プロセッサ１」１０１で「プログラムＡ」４３１が実行されている状況において、「プロセッサ１」１０１がプロセッサ障害を起こした場合を仮定すると、プロセッサ障害検出手段２１１は、「プロセッサ１」１０１で障害が発生したことを検出し、その旨をプロセス空間上書き手段２０１に通知する。
【００３６】
プロセス空間上書き手段２０１は、プロセッサ障害処理実行手段４２１を「プロセッサ１」１０１上で実行されていた「プログラムＡ」４３１に上書きする。これにより、「プログラムＡ」４３１は、プロセッサ障害処理実行手段４２１を実行するプログラムに変更される。
【００３７】
次に、プロセッサ割り当て手段３０１は、変更後の「プログラムＡ」４３１を正常に動作するプロセッサに割り当てる。これにより、割り当てられたプロセッサ上でプロセッサ障害処理実行手段４２１が実行される。
【００３８】
ここで、プロセッサ障害処理実行手段４２１によってプロセッサ障害処理が実行される手順を、図３を参照して説明する。
【００３９】
図３において、まず、障害が発生したプロセッサがシステム情報をアクセスするために保有している排他制御情報を参照し、必要に応じて開放処理を行う（ステップＳ３１）。次に、「プログラムＡ」４３１の終了処理を行う（ステップＳ３２）。このプログラム終了処理は、プロセッサ障害発生前に実行していた「プログラムＡ」４３１の実行環境である、「プロセッサ１実行環境」４１１は使用せず、障害処理専用の実行環境（テキスト、データ、スタック領域）を使用して実行される。
【００４０】
なお、本実施形態のプロセッサ障害検出手段２１１は、ハードウェア機構によって実装されるが、本実施形態のプロセス空間上書き手段２０１、プロセッサ割り当て手段３０１、プロセッサ障害処理実行手段４２１は、オペレーティングシステムの一部として（好適には例えばカーネルドライバのモジュールとして）、実施が可能である。また、当該オペレーティングシステムを、コンピュータ読み取り可能な記録媒体に記録することができる。この場合、記録媒体は光ディスク、磁気ディスク、磁気テープ等、種々の媒体で実施可能である。
【００４１】
以上に述べた本実施形態の効果について説明する。
上記本実施形態によれば、プロセッサ障害処理専用の実行環境を使用することにより、障害が発生したプロセッサ上で実行されていたプログラムを安全に終了させることができる。したがって、プロセッサ障害後も継続してシステム運用を行うことができる。
【００４２】
また、上記本実施形態によれば、マルチプロセッサ構成のシステムにおいて、プロセッサ障害が発生してもシステムダウンに陥ることなくシステムの継続運用が可能になる。したがって、仮に故障率が高い（ＭＴＢＦが短い）安価なプロセッサを組み合わせたシステムを構築した場合でも、システムダウンを招くことなく可用性の高いシステムが構築可能となる。
【産業上の利用可能性】
【００４３】
本発明は、特に、故障率が高い安価なプロセッサを組み合わせたマルチプロセッサシステムの構築に、産業上の利用可能性がある。
【図面の簡単な説明】
【００４４】
【図１】本発明の好適な実施形態に係るマルチプロセッサシステムの、主要部の構成を示す概略ブロック図である。
【図２】本発明の好適な実施形態に係るプロセッサ障害が発生してからプロセッサ障害処理が実行されるまでの手順を示すフローチャート図である。
【図３】本発明の好適な実施形態に係るプロセッサ障害処理を実行する手順を示すフローチャート図である。
【符号の説明】
【００４５】
１０１    プロセッサ１
１０２    プロセッサ２
１０３    プロセッサｎ
２０１    プロセス空間上書き手段
２１１    プロセッサ障害検出手段
３０１    プロセッサ割り当て手段
４０１    メモリ
４１１    プロセッサ１実行環境
４１２    プロセッサ２実行環境
４１３    プロセッサｎ実行環境
４２１    プロセッサ障害処理実行手段
４３１    プログラムＡ
４３２    プログラムＢ
４３３    プログラムＺ
５０１    データ転送用バス
【図１】
2008123129.tif 000003
【図２】
2008123129.tif 000004
【図３】
2008123129.tif 000005