(57)【特許請求の範囲】
【請求項１】
ジョブが相互にメモリを共用しない複数のプロセスを含み、複数のプロセスが主プロセスとこの主プロセスによって起動される少なくとも一つの副プロセスからなる計算機システムにおいて、
前記ジョブに含まれる複数のプロセスのうちの少なくとも一つのプロセスの異常を検出する異常検出部と、
前記異常検出部で前記主プロセスの異常を検出したときに、前記主プロセスの終了とともに、異常を生じていない前記副プロセスを強制的に終了させる回収処理部と、
前記複数のプロセスのうち少なくとも主プロセスを新たなメモリ空間上で再起動させる再起動処理部とを有するプロセス自動再起動処理方式。
【請求項２】
再起動される主プロセスが自プロセスの再起動を強制的に打ち切るか否かを判断することを特徴とする請求項１記載のプロセス自動再起動処理方式。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、プロセス制御を行う計算機システムにおいて、間欠的な障害が発生したときに自動修復を行うようにしたプロセス自動再起動処理に関する。
【０００２】
【従来の技術】
計算機システムの重要性は年々増大する傾向にあり、２４時間ノーダウンのシステムが要求されている。そのため、オペレーティングシステム（ＯＳ）には、異常発生時におけるリカバリ確認機能が必須とされ、異常が発生してもシステムダウンとならないように、システムのフォルト・トレラント（Ｆａｕｌｔ  Ｔｏｒｅｒａｎｔ）化が必要になってきてきる。
【０００３】
このような点に鑑みて、本発明者は特開平２−１５８８４３号公報に示されるように、異常が発生したプロセスを新しいアドレス空間に自動的に再起動することにより待機プロセスの準備を不要とした技術を提案している。
【０００４】
この従来技術の概略を簡単に説明すると図９に示す通りである。すなわち、ジョブスケジューラにおける異常検出部が主プロセスの異常を検出すると、再起動処理部に対して再起動を指示し、新しく開設したアドレス空間でジョブの再起動を実行するようになっていた。
【０００５】
【発明が解決しようとする課題】
しかしながら、前記従来技術では単一のプロセスで構成されたジョブを対象としているため、複数のプロセスで構成されるジョブにおける障害発生時には対応できなかった。すなわち、図１０に示すように、ジョブが主プロセスと複数のプロセスとで構成されている場合が問題となっていた。
【０００６】
この場合、副プロセスに障害が発生した場合には、正常に動作している主プロセスを用いて異常の生じた副プロセスの復旧が可能であるため問題は生じないものの、主プロセス自体に異常が発生した場合に、異常検出部により異常が検出されると副プロセスはそのまま作動した状態で主プロセスの再起動が行われることになり、再起動された主プロセスと副プロセスとの間で矛盾を生じる可能性があり、危険であった。
【０００７】
本発明は前記課題に鑑みてなされたものであり、その目的は複数のジョブがメモリを共有しない複数のプロセスで構成されるシステムにおいて、継続しているプロセスが存在することにより生じる相互干渉を防止してプロセスの再起動を可能とするシステムを提案することにある。
【０００８】
【課題を解決するための手段】
本発明の第１の手段は、ジョブが相互にメモリを共用しない複数のプロセスを含み、複数のプロセスが主プロセスとこの主プロセスによって起動される少なくとも一つの副プロセスからなる計算機システムにおいて、前記ジョブに含まれる複数のプロセスのうちの少なくとも一つのプロセスの異常を検出する異常検出部と、前記異常検出部で前記主プロセスの異常を検出したときに、前記主プロセスの終了とともに、異常を生じていない前記副プロセスを強制的に終了させる回収処理部と、前記複数のプロセスのうち少なくとも主プロセスを新たなメモリ空間上で再起動させる再起動処理部とを有するプロセス自動再起動処理方式とするものである。
第２の手段は、再起動される主プロセスが自プロセスの再起動を強制的に打ち切るか否かを判断するものである。
図１には、ジョブが相互にメモリを共用しない複数のプロセスからなる計算機システムにおいて、少なくとも一つのプロセスの異常を検出する異常検出部（２１）と、ジョブを構成するプロセスのうち、異常を生じていない残りのプロセスを強制的に終了させてプロセスの情報を回収する回収処理部（１０１）と、前記プロセスのうち少なくとも主プロセスとなるプロセスを新たなメモリ空間上で再起動させる再起動処理部（１６）とを有するプロセス自動再起動処理方式が示されている。
【０００９】
図２には、前記再起動処理部（１６）に、前記で再起動されたプロセスを強制的に打ち切るか否かを判断する再起動判定部（１０２）を備えたものが示されている。
【００１０】
【作用】
本発明の第１の手段によれば、副プロセスを有する主プロセスに異常が発生した場合、回収処理部により異常を生じていない副プロセスも強制的に終了されるため、異常の生じていない副プロセスのみが動作して主プロセスと矛盾を生じることを防止できる。
【００１１】
また、第２の手段によれば、新しいメモリ空間で主プロセスが再起動された後、ジョブ自身に再起動の打ち切りを行うことのできる機能を与えることにより、障害発生時においてもジョブプログラムによる柔軟な対応が可能となる。
【００１２】
【実施例１】
以下、本発明を図に基づいて説明する。
〔本実施例のシステム構成〕
図３は、本発明の一実施例である計算機のシステム構成を示している。
【００１３】
図３において、１０はＣＰＵおおびメモリ等を備えた計算機システム、１１および１２は計算機資源を使用する処理単位であるプロセスであり、このうち子プロセス群は主プロセスと複数の副プロセスとで構成されている。
【００１４】
１４はプロセスの起動制御等を行うプロセス制御部、１５は回復処理部、１６は再起動処理部、１７はユーザからの処理要求の単位であるセッションを制御するセッション制御部、１８は回復用情報記憶部、１９は不揮発メモリ、２０はＯＳの核となるカーネル部、２１は異常検出部、２２はアドレス空間を管理する空間管理部、２３はアドレス空間の管理情報を記憶する空間管理テーブル、Ａ０〜Ａ２はそれぞれ個別の仮想記憶空間であるアドレス空間を表している。また、アドレス空間Ａ１に生成された１０１は回収処理部を表している。
〔システムの作動状態の概要〕
図３において、セッション制御部１７は、ユーザからの処理要求またはコマンド列からなるプロシジャによる処理要求に基づいてセッションを開設する。このセッションでは、例えばアドレス空間Ａを獲得し、プロセス１１を起動する。プロセス１１は計算機資源を使用する処理単位（ジョブ）であり、プログラムの実行環境を形成するものである。また、必要に応じて他のアドレス空間Ａ２〜Ａｎを獲得してその空間で動作する他のプロセス１２，，，（主プロセスと副プロセスの複数プロセスでも可）を起動することもできる。
【００１５】
セッション制御部１７が管理する回復用情報記憶部１８は、起動されたプロセス１１，１２毎に処理依頼等に用いられるメッセージの宛先情報、システム内のプロセスを一意に識別するプロセス識別子、アドレス空間を一意に識別するアドレス空間識別子、起動元のプロセス識別子の情報等を記憶するものである。あるプロセスが他のプロセスを起動したときにセッション制御部１７へこれらの情報が通知され、セッション制御部１７はこの内容を回復用情報記憶部１８に格納し、さらにこれを不揮発メモリ１９に待避する機能を有している。
【００１６】
不揮発メモリ１９はハードウエアの一部であり、プロセスやアドレス空間に異常が発生した場合にも、回復用情報記憶部１８の内容を保証するようになっている。
【００１７】
カーネル部２０に設けられた異常検出部２１は、プログラムチェック割り込みやその他のプログラムの異常を検出するものであり、異常を検出した場合、
アドレス空間Ａ１へ異常発生を通知する機能を有している。
【００１８】
プロセスを制御するプロセス制御部１４等は、回復処理部１５、再起動処理部１６および回収処理部１０１を有している。
回復処理部１５は、異常検出部２１からの異常発生通知があると、関連する回復用情報記憶部１８の内容をセッション制御部１７に要求し、自プロセス１１が起動したプロセス１２の資源の回収を行い、アドレス空間Ａ２〜Ａｎを消滅させて実行環境の整理を行うことにより、システムの状態を矛盾のない状態に回復する。
【００１９】
回収処理部１０１は、異常の発生したプロセス（主プロセス）に副プロセスが存在する場合に、これらの副プロセス群を強制的に終了させる機能を有している。
【００２０】
さらに再起動処理部１６は、前記主プロセスおよび副プロセスが強制的に終了させられた後に、空間管理部２２に新しいアドレス空間の創成を依頼し、そのアドレス空間でプロセス１２を再起動する機能を有している。
〔システムの正常時の作動状態〕
次に図４を用いてまずシステムが正常に起動された場合の作動状態を説明する。
【００２１】
図４および図５において、前記図３と同じ符号のものは同一機能を有するものとする。なお、符号３０，３１はプロセッサ、３２，３３は図３に示すカーネル部２０に相当するスーパバイザ、４０は再起動されたプロセス、４１はプロセス制御部を表す。
【００２２】
ここで、アドレス空間Ａ１からプロセス１２を起動するときの処理の流れについて（１）〜（６）（図では丸付き数字で表示している）にしたがって説明する。
（１）  アドレス空間Ａ１は、プロセス１１を起動するとき、パラメータで自動再起動を設定してプロセス起動マクロ命令を発行する。
（２）  このマクロ命令の発行により、プロセス制御部１３のプロセス起動部では、スーパバイザ３２に対しアドレス空間の創成を依頼する。
（３）  スーパバイザ３２は、アドレス空間を創成し、新空間へのメッセージの宛先およびアドレス空間識別子を要求元へ返却する。
（４）  新しく開設されたアドレス空間Ａｘ内で、プロセス制御部１３のプロセス起動部が動作し、スーパバイザ３２に対し、プログラム実行体の創成、すなわちＣＰＵ資源の獲得を依頼する。
（５）  プロセス制御部１３のプロセス起動部には、スーパバイザ３２から返却された情報（新アドレス空間の宛先、新アドレス空間識別子）および自分のプロセス識別子、新プロセス１２のプロセス識別子を、セッション制御部１７に通知する。
（６）  セッション制御部１７は、通知された情報を回復用情報記憶部１８に登録し、自分のアドレス空間Ａ０がクラッシュしたときに、それらの情報が失われないようにするために、それの情報を不揮発メモリ１９に退避する。
【００２３】
なお、セッション制御部１７もプロセスの一種であるが、本実施例では、セッション制御部１７については、待機プロセスを用意することにより、障害発生に迅速に対応できるようにしている。
【００２４】
前記図４に示す状態において、アドレス空間Ａ２に異常が発生したときの処理の流れは、以下の図５に示すようになる。
〔障害発生時の作動状態〕
以下の処理の流れを（１）〜（８）（図では丸付き数字で表示している）にしたがって説明する。
（１）  異常がアドレス空間Ａ２におけるプログラムチェック（主プロセス）であったとする。ハードウエアからプログラムチェック割り込みがあると、スーパバイザはこの異常を検出する。
（２）  スーパバイザ３２は、空間創成依頼を受けたときに、どの空間がどの空間を創成したかという情報を記憶しているので、クラッシュしたアドレス空間Ａ２の起動元を調べ、そのに異常発生を通知する。
（２）’  回収処理部１０１は、スーパバイザ３２に対して副プロセスの空間回収を依頼する。この空間回収は副プロセス毎に行われ、空間が回収される度に回収処理部１０１に対してスーパバイザ３２より空間終了通知がなされる。この空間回収処理がアドレス空間Ａ２〜Ａｎに展開されている副プロセスの数（ｎ個）だけ繰り返される。
（３）  起動元であるアドレス空間Ａ１における回復処理部１５は、セッション制御部１７に対してプロセス情報の通知を依頼し、該当する回復用情報記憶部１８の内容を獲得する。
（４）  次に回復処理部１５は、獲得した情報により削除すべきアドレス空間Ａ２〜Ａｎを知り、スーパバイザに対して削除を依頼して、アドレス空間Ａ２〜Ａｎの回収を行う。
（５）  再起動処理部１６は、プロセス１１を新しいプロセス４０として起動するために、スーパバイザ３２にアドレス空間Ａ３の創成を依頼する。
（６）  スーパバイザ３２は前記依頼に対して新アドレス空間Ａ３を創成し、その宛先とアドレス空間識別子を返却する。
（７）  再起動処理部１６は、返却された新アドレス空間の宛先とそのアドレス空間識別子、自分のプロセス識別子、新プロセスの識別子を再度セッション制御部１７に通知する。セッション制御部１７は、その情報を回復用情報記憶部１８に登録する。
（８）  アドレス空間Ａ３におけるプログラム制御部４１のプロセス起動部は、プロセス実行体の創成（ＣＰＵの獲得）をスーパバイザ３２に依頼する。
【００２５】
異常により、プロセス１２で行っていた処理を、新しい空間Ａ３で動作するプロセス４０に引き継ぐことができ、副プロセスも含めて異常発生時の状態に復帰することができる。
【００２６】
【実施例２】
本実施例２の構成を示したものが図６である。同図は図５とほぼ同じであるが、プロセス制御部１３内に再起動処理部１６のほかに再起動判定部１０２が設けられている点が異なる。
【００２７】
再起動判定部１０２は、前記実施例１の処理（８）の後、再起動された主プロセスからの通知に基づいて再起動動作を打ち切るか否かを判定する機能を有している。
【００２８】
すなわち、処理（８）において主プロセスが新メモリ空間Ａ３で再起動された後、主プロセスから再起動打ち切り宣言が通知されると、これを受け付けて主プロセスの打ち切り制御を行いこれ以降の再起動動作を行わない。
【００２９】
これを概念的に示したものが図７である。すなわちジョブスケジューラ７０１はジョブ７０２中に主プロセス７０３と副プロセス７０４および７０５を起動する。この処理中に主プロセス７０３より異常が検出されると、副プロセス７０４および７０５を回収処理部１０１が回収する。そしてジョブ７０２全体の終了が認識されると、新たなメモリ空間（図６のＡ３）にジョブ７０２’を確保して主プロセス７０３’を再起動する。そしてこの主プロセス７０３’からの再起動打ち切り宣言を再起動判定部１０２が受け付けると、この主プロセス７０３’は終了され、これ以降の再起動動作は行われない。
【００３０】
ジョブ（主プロセス）の再起動の処理手順を示したものが図８である。
同図において、ジョブ７０２を構成する主プロセス７０３の終了が検出されると（８０１）、主プロセス７０３の終了状態が退避される（８０２）。次に、ジョブを構成する他の主プロセスがあるか否かが判断され（８０３）、存在する場合にはジョブの終了がユーザに通知される（８０５）。存在しない場合には、ジョブを構成する主プロセス７０３以外の副プロセス７０４，７０５が強制終了される（８０４）。
【００３１】
次に、ジョブから打ち切り指示があったか否かが判断されるが（８０６）、これが肯定枝に分岐するのは主プロセス７０３’が再起動された場合となる。
ジョブより打ち切り指示がない場合には、退避していた主プロセス７０３の終了状態を起動情報としてジョブを構成する主プロセス７０３’を再起動する（８０７）。
【００３２】
以上のように、本実施例２によれば、ジョブ自身に再起動を打ち切る論理を組み込むことにより、ジョブプログラムによる柔軟な対応が可能となりシステムの自動運転に寄与することができる。
【００３３】
【発明の効果】
本発明によれば、ジョブを構成する主プロセスに異常が発生した場合に、強制的にその副プロセスも終了させるため、異常が発生したプログラムの一部が動作を継続していることがなくなり、相互干渉による動作不良が防止できる。
【図面の簡単な説明】
【図１】本発明の第１の原理図
【図２】本発明の第２の原理図
【図３】本発明の実施例１の計算機のシステム構成を示す説明図
【図４】実施例１の計算機の動作を示す説明図
【図５】実施例１の計算機の動作を示す説明図
【図６】実施例２の計算機の動作を示す説明図
【図７】実施例２の動作を概念的に示した説明図
【図８】実施例２のジョブの再起動における処理手順を示すフロー図
【図９】従来技術の説明図
【図１０】従来技術の説明図
【符号の説明】
１０・・計算機システム
１１，１２・・プロセス
１３，１４・・プロセス制御部
１５・・回復処理部
１６・・再起動処理部
１７・・セッション制御部
１８・・回復用情報記憶部
１９・・不揮発メモリ
２０・・カーネル部
２１・・異常検出部
２２・・空間管理部
２３・・空間管理テーブル
１０１・・回収処理部
１０２・・再起動判定部
７０１・・ジョブスケジューラ
７０２・・ジョブ
７０３・・主プロセス
７０４，７０５・・副プロセス
【図１】
0003604171.tif 000002
【図２】
0003604171.tif 000003
【図３】
0003604171.tif 000004
【図４】
0003604171.tif 000005
【図５】
0003604171.tif 000006
【図６】
0003604171.tif 000007
【図７】
0003604171.tif 000008
【図８】
0003604171.tif 000009
【図９】
0003604171.tif 000010
【図１０】
0003604171.tif 000011