(57)【特許請求の範囲】
【請求項１】
ＣＰＵを有すると共に別のノードと接続されてコンピュータシステムを構成するノードであって、
所定の機能を有する１つ以上のプロセスを実行するプロセス実行手段と、
前記コンピュータシステムに含まれる各ノードで実行される各プロセスに係るプロセス情報を含むシステム情報を、前記プロセス実行手段によって実行される各プロセスからアクセス可能な状態で記憶する共有メモリと、
前記システム情報のうち前記プロセス実行手段によって実行される各プロセスに係るプロセス情報を含むシステム情報を前記別のノードにマルチキャストするシステム情報送信手段と、
前記別のノードからマルチキャストされた前記システム情報を受信して前記共有メモリに記憶させるシステム情報格納手段と、
前記共有メモリに記憶されたシステム情報を監視し、当該システム情報に応じてプロセス又はノードの制御を行うシステム管理手段と、
自ノード又は自ノードで実行されるプロセスに異常が発生する危険度を推定して、推定した危険度を示す情報を前記システム情報送信手段によってマルチキャストされるシステム情報とする危険度推定手段と、を備え、
前記システム管理手段は、前記危険度推定手段によって推定された危険度に基づいてプロセス又はノードの制御を行う、ノード。
【請求項２】
前記プロセス実行手段によって実行される前記プロセスは、自プロセスに係るプロセス情報をシステム情報として前記共有メモリに記憶させ、
前記システム情報送信手段は、共有メモリに記憶されたシステム情報を読み出して前記別のノードにマルチキャストする、
ことを特徴とする請求項１に記載のノード。
【請求項３】
前記プロセス実行手段によって実行される前記プロセスは、前記システム情報送信手段を構成し、自プロセスに係るプロセス情報を含むシステム情報を前記別のノードにマルチキャストすることを特徴とする請求項１に記載のノード。
【請求項４】
自ノード又は自ノードで実行されるプロセスの状態を監視して、当該状態を示す情報を前記システム情報送信手段によってマルチキャストされるシステム情報とするノード管理手段を更に備える請求項１〜３の何れか一項に記載のノード。
【請求項５】
前記コンピュータシステム以外の装置と通信を行って、前記共有メモリに格納される前記システム情報の送受信を行う通信手段を更に備える請求項１〜４の何れか一項に記載のノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵ（Central Processing Unit）を有すると共に別のノードと接続されてコンピュータシステムを構成するノードに関する。
【背景技術】
【０００２】
従来から、複数のコンピュータを互いに情報を送受信できるように接続したコンピュータシステムが知られている（例えば、下記の特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−２０８５２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＣＰＵを有するノードを複数接続したシステムの１つとして、海中機器等に適用される分散型マルチＣＰＵ制御システムがある。このシステムでは、ノードである各ＣＰＵボード上に単機能を有する複数のプロセスが同時稼動しており、各プロセスによってアクチュエータやセンサが制御されている。
【０００５】
従来の分散型マルチＣＰＵ制御システムでは、各プロセスが同ノード上の他のプロセス、あるいは他のノード上のプロセスが管理する情報を共有するためには、各プロセス間で各情報を個別に送受信する必要があった。加えて、ノード上でプロセスを動的に停止や起動（再起動）させたり、ノードを増減させたりする場合、上記の通信に要する情報（例えば、ＩＰ（Internet Protocol））を現在のシステム状態及びその構成に合わせてその都度、変更させる必要があった。また、海中機器等の長期間の運用が必要とされる機器では、何れかのノードに不具合が生じた場合であってもシステム全体の運用の継続を可能とする高い冗長性が必要となる。
【０００６】
本発明は、上記を鑑みてなされたものであり、複数のノードが接続されて構成されるコンピュータシステムにおいて、システム構成の変更を容易にすると共に高い冗長性を持たせることを可能とするノードを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明に係るノードは、ＣＰＵを有すると共に別のノードと接続されてコンピュータシステムを構成するノードであって、所定の機能を有する１つ以上のプロセスを実行するプロセス実行手段と、コンピュータシステムに含まれる各ノードで実行される各プロセスに係るプロセス情報を含むシステム情報を、プロセス実行手段によって実行される各プロセスからアクセス可能な状態で記憶する共有メモリと、システム情報のうちプロセス実行手段によって実行される各プロセスに係るプロセス情報を含むシステム情報を別のノードにマルチキャストするシステム情報送信手段と、別のノードからマルチキャストされたシステム情報を受信して共有メモリに記憶させるシステム情報格納手段と、を備えることを特徴とする。
【０００８】
本発明に係るノードでは、自ノードに係るプロセス情報はマルチキャストで別のノードに入力される。その一方で、別のノードに係るプロセス情報はマルチキャストで入力され共有メモリに記憶される。共有メモリに記憶された情報は、自ノードで実行される各プロセスからアクセスされる。従って、各ノードで実行されるプロセス間で個別に情報の送受信を行う必要が無く、各プロセスに係るプロセス情報を含むシステム情報が各ノード間で共有される。即ち、本発明に係るノードでは、システム構成の変更を容易にすると共に高い冗長性を持たせることが可能となる。
【０００９】
プロセス実行手段によって実行されるプロセスは、自プロセスに係るプロセス情報をシステム情報として共有メモリに記憶させ、システム情報送信手段は、共有メモリに記憶されたシステム情報を読み出して別のノードにマルチキャストする、こととしてもよい。あるいは、プロセス実行手段によって実行されるプロセスは、システム情報送信手段を構成し、自プロセスに係るプロセス情報を含むシステム情報を別のノードにマルチキャストすることとしてもよい。これらの構成によれば、確実にプロセス情報をマルチキャストできるので、適切かつ確実に本発明を実施することができる。
【００１０】
ノードは、共有メモリに記憶されたシステム情報を監視し、当該システム情報に応じてプロセス又はノードの制御を行うシステム管理手段を更に備える。この構成によれば、コンピュータシステムの適切な管理が可能となる。
【００１１】
ノードは、自ノード又は自ノードで実行されるプロセスの状態を監視して、当該状態を示す情報をシステム情報送信手段によってマルチキャストされるシステム情報とするノード管理手段を更に備えることが望ましい。この構成によれば、ノードの状態にも応じた、コンピュータシステムの適切な管理が可能となる。
【００１２】
ノードは、自ノード又は自ノードで実行されるプロセスに異常が発生する危険度を推定して、推定した危険度を示す情報をシステム情報送信手段によってマルチキャストされるシステム情報とする危険度推定手段を更に備え、システム管理手段は、危険度推定手段によって推定された危険度に基づいてプロセス又はノードの制御を行う。この構成によれば、コンピュータシステムに異常が発生する前に適切な制御を行うことができ、コンピュータシステムの更に適切な管理が可能となる。
【００１３】
ノードは、コンピュータシステム以外の装置と通信を行って、共有メモリに格納されるシステム情報の送受信を行う通信手段を更に備えることが望ましい。この構成によれば、コンピュータシステムの外部からコンピュータシステムの監視及び制御を容易に行うことができる。
【発明の効果】
【００１４】
本発明によれば、各ノードで実行されるプロセス間で個別に情報の送受信を行う必要が無く、各プロセスに係るプロセス情報を含むシステム情報が各ノード間で共有される。即ち、本発明によれば、システム構成の変更を容易にすると共に高い冗長性を持たせることが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態に係る複数のノードを含んで構成されるコンピュータシステムである分散型マルチＣＰＵ制御システムを示す図である。
【図２】本発明の第１実施形態に係るノードの機能構成を示す図である。
【図３】本実施形態に係るシステム情報を示す図である。
【図４】本発明の第１実施形態に係るノードで実行される処理を示すシーケンス図である。
【図５】本発明の第２実施形態に係るノードの機能構成を示す図である。
【図６】本発明の第２実施形態に係るノードで実行される処理を示すシーケンス図である。
【図７】本発明の第３実施形態に係るノードの機能構成を示す図である。
【図８】本発明の第３実施形態に係るノードで実行される処理を示すシーケンス図である。
【図９】本発明の第４実施形態に係るノードを含んで構成される分散型マルチＣＰＵ制御システムの構成を示す図である。
【図１０】本発明の第４実施形態に係るノードを含んで構成される分散型マルチＣＰＵ制御システムで実行される処理を示すシーケンス図である。
【図１１】本発明の第５実施形態に係るノードを含んで構成される分散型マルチＣＰＵ制御システムの構成を示す図である。
【図１２】本発明の第５実施形態に係るノードを含んで構成される分散型マルチＣＰＵ制御システムで実行される処理を示すシーケンス図である。
【図１３】本発明の第６実施形態に係るノードを含んで構成される分散型マルチＣＰＵ制御システムの構成を示す図である。
【図１４】本発明の第６実施形態に係るノードを含んで構成される分散型マルチＣＰＵ制御システムで実行される処理を示すシーケンス図である。
【図１５】本発明の第７実施形態に係るノードを含んで構成される分散型マルチＣＰＵ制御システムの構成を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面と共に本発明に係るノードの好適な実施形態について詳細に説明する。なお、図面の説明においては同一要素には同一符号を付し、重複する説明を省略する。
【００１７】
図１に本実施形態に係るノード１０により構成されるコンピュータシステムである分散型マルチＣＰＵ制御システム１を示す。分散型マルチＣＰＵ制御システム１は、例えば、自律型の海中探査機の制御システムとして用いられる。複数のノード１０は、ケーブル等によって構成されるネットワーク１４によって接続されており、互いに情報の送受信を行えるようになっている。
【００１８】
ノード１０は、ＣＰＵ１１、メモリ１２、通信モジュール１３等のハードウェアによって構成されたＣＰＵボードである。これらの構成要素が、後述するノード１０の機能手段を構成する。分散型マルチＣＰＵ制御システム１では、複数のノード１０がネットワークを介して互いに接続されている。各ノード１０では、所定の機能である単機能を有するプロセスが起動されて、当該プロセスによって制御システムとしての機能が実現される。
【００１９】
例えば、ノード１０には、ノード１０に応じて海中探査機に設けられた各機器２１〜２３がケーブル等によって接続されており、各機器２１〜２３はノード１０（のプロセス）によって監視及び制御される。機器２１〜２３は、具体的には、海中探査機の推進に用いられるスラスタ（推進装置）２１、海中探査機の速度を計測する速度計（ＤＶＬ：Doppler Velocity Log）２２、及び海中における海中探査機の位置の計測を行う慣性航法装置（ＩＮＳ：Inertial Navigation System）２３等である。
【００２０】
なお、各プロセスは、他のプロセスによって得られる情報を利用することがある。例えば、スラスタ２１を制御するプロセスは、速度計２２を監視するプロセスによって得られる速度計２２によって計測された速度、及び慣性航法装置２３を監視するプロセスによって得られる慣性航法装置２３によって計測された位置（緯度、経度）の情報に基づいてスラスタ２１の制御内容を決定する。
【００２１】
上述したように、従来の分散型マルチＣＰＵ制御システムでは、各プロセスが個別に別のプロセスと通信を行って情報共有を行っていた。そのため、ノード数及びプロセス数が増加するに伴い、システム情報を共有するために複雑なコーディングソフトウェアが必要となっていた。本発明に係るプロセス間の情報共有は、分散型マルチＣＰＵ制御システム１において、システム構成の変更を容易にすると共に高い冗長性を持たせることを可能とするものである。
【００２２】
＜第１実施形態＞
図２に第１実施形態に係るノード１０の構成を示す。ノード１０では、１つ以上のプロセス３１，４１が稼動される。これらのプロセス３１，４１は、ノード１０が備えるＣＰＵ１１、メモリ１２等によって構成されるプロセス実行手段によって実行され稼動される。各プロセス３１，４１の実行は、従来のノードと同様に例えば、ノード１０内に記憶されるプログラムが読み出されて実行されることによって行われる。本実施形態では、後述するように各プロセスが本発明の機能手段を実現するものである。プロセス３１は、従来のノードでも実行される、例えば上述した機器の監視や制御を行うプロセスである。
【００２３】
また、ノード１０は、共有メモリ５１を備える。共有メモリ５１は、分散型マルチＣＰＵ制御システム１に含まれる各ノード１０で実行される各プロセスに係るプロセス情報を含むシステム情報を記憶するメモリである。プロセス情報とは、各プロセスの機能に係るものであり、例えば、上述したスラスタ２１から出力されたスラスタ速度（スラスタ回転数）や速度計２２によって計測された速度（ＤＶＬ速度）や慣性航法装置２３によって計測された位置を示す情報（ＩＮＳ緯度、経度）等の各プロセス３１によって管理される情報である。これらのプロセス情報を、図３に示すように一定のフォーマットでまとめて配列化（一元化）したものがシステム情報である。システム情報に含まれる情報は、分散型マルチＣＰＵ制御システム１で共通したものであり、全てのノード１０のプロセスで管理あるいは利用されえる情報である。
【００２４】
共有メモリ５１は、自ノード１０における各プロセス３１，４１からアクセス可能な状態でシステム情報を記憶する。自ノード１０における各プロセス３１は、共有メモリ５１に格納されたシステム情報を参照して、自プロセス３１の機能に必要な情報を取得する。更に、各プロセス３１は、自プロセス３１に係るプロセス情報をシステム情報に含めて共有メモリ５１に記憶させる。即ち、各プロセス３１は、自プロセス３１で管理しているプロセス情報で、共有メモリ５１に記憶されたシステム情報のうち当該プロセス情報を更新する。例えば、プロセス３１は、一定時間毎（例えば、１００ｍｓ毎）に自身が管理しているＤＶＬ速度の情報で、システム情報のうちＤＶＬ速度の情報を更新する。あるいは、プロセス３１は、速度計２２を監視することによってＤＶＬ速度の情報を新たに取得した場合、システム情報のうちＤＶＬ速度の情報を新たに取得したＤＶＬ速度の情報で更新することとしてもよい。
【００２５】
上記のプロセス３１，４１のうち共有メモリ制御プロセス４１は、本実施形態の機能に係るプロセスである。共有メモリ制御プロセス４１は、システム情報のうち自ノード１０の各プロセス３１を含むプロセス情報をシステム情報として別のノード１０にマルチキャストするシステム情報送信手段である。このマルチキャストは、分散型マルチＣＰＵ制御システム１に含まれる全てのノード１０に対して行われる。
【００２６】
例えば、共有メモリ制御プロセス４１は、一定時間毎（例えば、１００ｍｓ毎）に共有メモリ５１を参照して、システム情報を取得して（読み出して）別のノード１０にマルチキャストする。あるいは、共有メモリ制御プロセス４１は、共有メモリ５１を監視しておき、システム情報の更新が行われたらシステム情報を取得して別のノード１０にマルチキャストする。なお、送信するシステム情報は、自ノード１０の共有メモリ５１に記憶されている全てのプロセス情報を含むものであってもよいし、自ノード１０において更新したプロセス情報のみを含むものであってもよい。
【００２７】
また、共有メモリ制御プロセス４１は、別のノード１０からマルチキャストされたシステム情報を受信して共有メモリ５１に記憶させるシステム情報格納手段である。即ち、共有メモリ制御プロセス４１は、別のノード１０（の共有メモリ制御プロセス４１）から送信されたシステム情報で、自ノード１０の共有メモリ５１に記憶されたシステム情報を更新する。
【００２８】
このとき、共有メモリ制御プロセス４１は、システム情報の更新確認及び共有メモリ５１の保全のために、常に共有メモリ５１をリフレッシュしてからシステム情報を更新（格納）することとしてもよい。あるいは、共有メモリ制御プロセス４１は、一定時間毎に共有メモリ５１をリフレッシュすることとしてもよい。以上が、第１実施形態に係るノードの構成である。
【００２９】
引き続いて、図４のシーケンス図を用いて、本実施形態に係るノード１０で実行される処理を説明する。本処理は、分散型マルチＣＰＵ制御システム１が稼動している間、常に行われる。
【００３０】
ノード１０では、各プロセス３１によって、自プロセス３１に係るプロセス情報がシステム情報に含められて共有メモリ５１に記憶される（Ｓ０１）。その一方で、共有メモリ制御プロセス４１によって、共有メモリ５１が参照されてシステム情報が取得される（Ｓ０２）。続いて、取得されたシステム情報が、共有メモリ制御プロセス４１から別のノード１０にマルチキャストされる（Ｓ０３）。
【００３１】
また、共有メモリ制御プロセス４１によって、別のノード１０から（Ｓ０２，Ｓ０３に相当する処理によって）マルチキャストされたシステム情報が受信される（Ｓ０４）。続いて、共有メモリ制御プロセス４１によって、受信されたシステム情報が共有メモリ５１に記憶される（Ｓ０５）。また、各プロセス３１によって、共有メモリ５１に記憶されたシステム情報のうち自プロセス３１の機能に必要な情報が参照される（Ｓ０６）。
【００３２】
以上が、本実施形態に係るノード１０で実行される処理である。なお、ノード１０においては、Ｓ０１〜Ｓ０６の処理は必ずしも順番に行われる必要はなく、それぞれのタイミングで行われればよい。但し、Ｓ０２の処理とＳ０３の処理とはセットであり、Ｓ０４の処理とＳ０５の処理とはセットである。なお、本実施形態では、共有メモリ５１において、システム情報における自ノード１０のプロセス３１に係るプロセス情報が他のノード１０でのシステム情報における当該プロセス情報よりも早く更新される。
【００３３】
上述したように本実施形態に係るノード１０では、各プロセス３１に係るプロセス情報は、システム情報として全て共有メモリ５１に記憶されて各プロセス３１において利用される。上記の情報の共有に、各プロセス間の個別の情報の送受信は不要である。更に、本実施形態は、全てのノード１０で同一の機能を有する共有メモリ５１と共有メモリ制御プロセス４１とを設け、また、各プロセス３１に自プロセス３１の情報を共有メモリ５１に格納させ必要な情報は共有メモリ５１を参照させることによって実現できる。
【００３４】
従って、システム構成の変更を行う場合であっても、システム情報の共有を容易に行うことができ、その結果、当該変更を容易に行うことができる。また、各ノード１０において全てのシステム情報を共有することになるので高い冗長性及び移植性を持たせることが可能になる。これによりシステムや機器の制御の設計及び換装を容易にし、堅牢なシステムが構築される。
【００３５】
＜第２実施形態＞
図５に第２実施形態に係るノード１１０の構成を示す。なお、以下の説明では第１実施形態との相違点について示す。従って、特段の説明が無い部分については第１実施形態と同様である（以下の実施形態についても同様）。
【００３６】
ノード１１０では、１つ以上のプロセス１３１と、共有メモリ制御プロセス１４１とが実行される。また、ノード１０は、共有メモリ１５１を備える。
【００３７】
各プロセス１３１は、自プロセス１３１に係るプロセス情報を含むシステム情報を別のノード１１０にマルチキャストするシステム情報送信手段である。例えば、プロセス１３１は、一定時間毎（例えば、１００ｍｓ毎）に自身が管理しているＤＶＬ速度の情報を含むシステム情報をマルチキャストする。あるいは、プロセス１３１は、速度計２２を監視することによってＤＶＬ速度の情報を新たに取得した場合、取得したＤＶＬ速度の情報を含むシステム情報をマルチキャストする。なお、送信するシステム情報は、自ノード１１０の共有メモリ１５１に記憶されている（自プロセス１３１以外の）全てのプロセス情報を含むものであってもよいし、自プロセス１３１において更新したプロセス情報のみを含むものであってもよい。このマルチキャストは、分散型マルチＣＰＵ制御システム１に含まれる全てのノード１１０に対して（自ノード１１０に対しても）行われる。
【００３８】
また、各プロセス１３１は、ネットワークの正常性が確保されずに、パケットロス等によってシステム情報がノード１１０間で共有されない場合には、自プロセス１３１が管理するプロセス情報を含むシステム情報を自ノード１１０の共有メモリ１５１にバックアップしておく。
【００３９】
本実施形態においては、共有メモリ制御プロセス１４１によるマルチキャストは行われない。別のノード１１０及び自ノード（のプロセス１３１）からマルチキャストされたシステム情報の受信及び共有メモリ１５１への格納は、共有メモリ制御プロセス１４１によって第１実施形態と同様に行われる。以上が、第２実施形態に係るノード１１０の構成である。
【００４０】
引き続いて、図６のシーケンス図を用いて、本実施形態に係るノード１１０で実行される処理を説明する。本処理は、分散型マルチＣＰＵ制御システム１が稼動している間、常に行われる。
【００４１】
ノード１１０では、各プロセス１３１によって、自プロセス１３１に係るプロセス情報を含むシステム情報が別のノード１０にマルチキャストされる（Ｓ１１）。また、このマルチキャストと同じタイミングで、各プロセス１３１によって、自プロセス１３１に係るプロセス情報を含むシステム情報が自ノード１０の共有メモリ１５１にバックアップされる（Ｓ１５）。
【００４２】
また、共有メモリ制御プロセス１４１によって、システム情報として別のノード１１０から（Ｓ１１に相当する処理によって）マルチキャストされたシステム情報が受信される（Ｓ１２）。続いて、共有メモリ制御プロセス１４１によって、受信されたシステム情報が共有メモリ１５１に記憶される（Ｓ１３）。また、各プロセス１３１によって、共有メモリ１５１に記憶されたシステム情報のうち自プロセス３１の機能に必要な情報が参照される（Ｓ１４）。
【００４３】
以上が、本実施形態に係るノード１１０で実行される処理である。なお、ノード１１０においては、Ｓ１１〜Ｓ１４の処理は必ずしも順番に行われる必要はなく、それぞれのタイミングで行われればよい。但し、Ｓ１２の処理とＳ１３の処理とはセットである。なお、本実施形態では、全てのノード１１０には各プロセス１３１のプロセス情報を含むシステム情報が同じタイミングで入力されるので、各ノード１１０の共有メモリ１５１では同じタイミングでシステム情報が更新される。
【００４４】
上述したように、各プロセス１３１が、自プロセス１３１に係るプロセス情報を含むシステム情報を全てのノード１１０にマルチキャストするようにしても、システム情報の共有を容易に行うことができる。
【００４５】
＜第３実施形態＞
ところで、長時間の運用を前提とする海中機器にもかかわらず、従来の分散型マルチＣＰＵ制御システムでは、各プロセスあるいは各ノードに不具合が生じた場合、当該プロセスあるいは当該ノードにおいて自力で不具合に対処する術がなく、海中機器自体を全回収して不具合に対処する必要があった。しかし、突発的な不具合発生に伴うシステムの再起動、あるいは計測機器、観測機器の取り付け取り外し、そしてこれに伴う制御系、通信系の構成変更（ノードの増減）は、海中機器の開発及びその運用において回避困難な事項である。また、長期間運用を基本とする海中機器においては、システムの自己復旧はその運用性を考慮した結果、必須の事項となる。
【００４６】
以下に説明する実施形態では、上述した２つの実施形態の何れかによって各ノード間でのシステム情報が共有されるシステムを利用して、上記の問題点を解決するためのシステムについて説明する。
【００４７】
図７に本実施形態に係るノード２１０の構成を示す。本実施形態に係るノード２１０では、上記の実施形態で説明したプロセスに加えて、システム管理プロセス２４２と、ノード管理プロセス２４３とが実行される。
【００４８】
システム管理プロセス２４２は、共有メモリ２５１に記憶されたシステム情報を監視し、当該システム情報に応じてプロセス２３１又はノード２１０の制御を行うシステム管理手段である。上述したようにシステム情報は、全てのノード２１０で共有されているので、システム管理プロセス２４２は全てのノード２１０で実行されている必要はなく、特定のノード２１０でのみ実行されていればよい。システム管理プロセス２４２は、後述するように制御の必要性を判断して、制御の実行をノード管理プロセス２４３に指令する。
【００４９】
ノード管理プロセス２４３は、システム管理プロセス２４２からの指令を受け付けて、自ノード２１０内において制御に係る処理を実行するプロセスであり、ノード管理手段に相当する。ノード管理プロセス２４３は、分散型マルチＣＰＵ制御システム１における全てのノード２１０で実行されるノードである。また、ノード管理プロセス２４３は、プロセス状態監視プロセス２４４と、ノード状態監視プロセス２４５とを含んでいる。ノード管理プロセス２４３によるノード２１０の操作としては、ノード２１０の起動状態からの停止、ノード２１０の停止状態からの起動、及びノード２１０の再起動がある。また、ノード管理プロセス２４３によるプロセスの操作としては、プロセスの起動状態からの停止、プロセスの停止状態からの起動、及びプロセスの再起動がある。
【００５０】
プロセス状態監視プロセス２４４は、自ノード２１０で実行される各プロセスの状態を監視するプロセスである。各プロセスの状態を示す状態としては、例えば、各プロセスを識別する識別ＩＤに対応付けられた正常、異常及び動的再起動中等の情報である。各プロセスの監視より得られた情報はプロセス状態監視プロセス２４４によってシステム情報に含められ、マルチキャストされる。マルチキャストは、第１実施形態のように自ノード２１０の共有メモリ制御プロセス（図７には図示せず）によって行われてもよいし、第２実施形態のようにプロセス状態監視プロセス２４４自身によって行われてもよい。
【００５１】
ノード状態監視プロセス２４５は、自ノード２１０の状態を監視するプロセスである。自ノードの状態を示す状態としては、例えば、自ノードを識別する識別ＩＤに対応付けられた正常、異常及び動的再起動中等の情報である。自ノード２１０の監視より得られた情報はノード状態監視プロセス２４５によってシステム情報に含められ、マルチキャストされる。マルチキャストは、第１実施形態のように自ノード２１０の共有メモリ制御プロセスによって行われてもよいし、第２実施形態のようにノード状態監視プロセス２４５自身によって行われてもよい。
【００５２】
プロセス状態監視プロセス２４４及びノード状態監視プロセス２４５による監視自体は、従来のプロセス状態及びノード状態の監視と同様の技術を利用することができる。
【００５３】
システム管理プロセス２４２は、システム情報から何れかのノード２１０及びプロセス２３１に異常が無いかどうか判断する。なお、この判断の際には、プロセス状態監視プロセス２４４及びノード状態監視プロセス２４５による監視によって得られたプロセス及びノードの状態の情報が参照される。また、通常のプロセス２３１に係るプロセス情報が参照されて判断されてもよい。
【００５４】
システム管理プロセス２４２は、何れかのノード２１０及びプロセス２３１に異常があると判断した場合は、当該異常に応じた制御を行う。具体的には、異常が発生しているノード２１０又はプロセス２３１の再起動を行う。なお、プロセス２３１の設定された回数の再起動によっても異常が解消されなかった（復旧しなかった）場合には、当該プロセスの重要度に応じて当該プロセス２３１が実行されているノード２１０の再起動を行うこととしてもよい。なお、再起動の実行自体は、上述したようにノード管理プロセス２４３によって行われる。システム管理プロセス２４２は、再起動の対象となるノード２１０又はプロセス２３１と同じノード２１０で実行されているノード管理プロセス２４３に対して、再起動の実行をするように指令する。
【００５５】
また、システム管理プロセス２４２は、ノード状態監視プロセス２４５によって監視されたノードの状態を参照することによって、ノードの追加、取り外し、換装あるいはノードの状態変化（起動→停止、停止→起動、再起動）が生じたことを検出する。システム管理プロセス２４２は、これらを検出した場合に各ノード２１０の共有メモリ制御プロセスに対してノード２１０間でシステム情報が共有されるように制御する。以上が、第３実施形態に係るノード２１０の構成である。
【００５６】
引き続いて、図８のシーケンス図を用いて、本実施形態に係るノード２１０（あるいはノード２１０間）で実行される処理を説明する。本処理は、ノード２１０内のプロセス２３１に異常が発生した場合に行われる。
【００５７】
ノード２１０では、ノード管理プロセス２４３のプロセス状態監視プロセス２４４によって、プロセス２３１が監視されている。プロセス２３１に異常が発生すると、プロセス状態監視プロセス２４４によって異常が検知される（Ｓ２１）。検知された異常の情報は、システム情報に含められノード２１０間で共有される。続いて、システム管理プロセス２４２によってシステム情報が参照されて、プロセス２３１の異常が検知される（Ｓ２１）。なお、システム管理プロセス２４２は、異常が発生したプロセス２３１とは別のノード２１０において実行されていてもよい。
【００５８】
続いて、システム管理プロセス２４２によって、異常の検知に応じて異常が発生したプロセス２３１の再起動を行うと判断される。続いて、システム管理プロセス２４２から、当該プロセス２３１が実行されているノード２１０のノード管理プロセス２４３に対して、当該プロセス２３１の再起動指令がなされる（Ｓ２２）。ノード管理プロセス２４３では、再起動指令が受け付けられると、プロセス２３１の再起動が実施される（Ｓ２３）。プロセス２３１の再起動が実施されると、当該プロセス２３１からノード管理プロセス２４３に対して起動通知及び正常復帰の通知が行われる（Ｓ２４）。以上が、本実施形態に係るノード２１０で実行される処理である。
【００５９】
上述したように本実施形態に係るノード２１０では、分散型マルチＣＰＵ制御システム１の各ノード２１０及び各ノード２１０で実施されるプロセスが正常に動作するように制御される。従って、ノード２１０及びプロセスに応じた、分散型マルチＣＰＵ制御システム１の適切な管理が可能になる。
【００６０】
＜第４実施形態＞
引き続いて、第３実施形態における分散型マルチＣＰＵ制御システム１の管理をベースとした当該管理のバリエーションを示す。図９に本実施形態に係るノード３１０ａ〜３１０ｅを含んで構成される分散型マルチＣＰＵ制御システム１の構成を示す。図９では、上述した本発明の機能に係るプロセスについては省略し、通常のプロセス３３１ａ〜３３１ｈのみを記す。また、ハッチングされたノード３１０ｃにおけるプロセス３３１ｇ、及びノード３１０ｅにおけるプロセス３３１ｈは、当初は実行されていない。これらは、制御の過程で起動される。
【００６１】
本実施形態においては、あるノード３１０の状態を監視及び管理するノード（即ち、あるノード３１０の状態を監視及び管理するシステム管理プロセスが実行されるノード）を決定する場合、分散型マルチＣＰＵ制御システム１において予め特定のノード３１０がバディ（Ｂｕｄｄｙ）として選定されていてもよい。あるいは、分散型マルチＣＰＵ制御システム１の状況に応じて決められるノードでもよい。例えば、現在起動されているノード３１０の中で最も安定して動作しているノード３１０が選択されてもよい。
【００６２】
本実施形態では、システム管理プロセスは、システム情報を参照して他ノード３１０の異常を検出した場合、当該他ノード３１０で実行されているプロセス３３１を更に他のノード３１０で起動させる。システム管理プロセスは、システム情報を参照して他ノード３１０の異常を検出した場合、当該他ノード３１０を再起動するように制御し、当該制御によっても正常に復旧されなかった場合に上記の制御をすることとしてもよい。
【００６３】
プロセスを起動する上記の他のノード３１０の選定は、システム管理プロセスに予めバディ（Ｂｕｄｄｙ）として記憶されている特定のノードを、代替プロセスを起動させるための特定のノードとするように行われてもよい。また、そのノードは、既に起動しているノードでもよいし、システム管理プロセスによって新たに起動されるノードでもよい。あるいは、分散型マルチＣＰＵ制御システム１の状況に応じて決められるノードでもよい。例えば、現在起動されているノード３１０の中で最も稼働率の低いノード３１０が選択される。
【００６４】
引き続いて、図９の構成図、及び図１０のシーケンス図を用いて、本実施形態に係るノード３１０間で実行される処理を説明する。本処理は、ノード３１０ｄに異常が発生した場合に行われる。また、本処理では、ノード３１０ｃにおいて各ノード３１０ａ〜３１０ｅを管理するシステム管理プロセスが実行されている。
【００６５】
ノード３１０ｄで異常が発生すると、ノード３１０ｃのシステム管理プロセスによってシステム情報が参照されて、ノード３１０ｄの異常が検知される（Ｓ３１）。続いて、システム管理プロセスによって、異常の検知に応じて異常が発生したノード３１０ｄの再起動を行うと判断される。続いて、システム管理プロセスから、当該ノード３１０ｄのノード管理プロセスに対して、当該ノード３１０ｄの再起動指令がなされる（Ｓ３２）。ノード管理プロセスでは、再起動指令が受け付けられると、ノード３１０ｄの再起動が実施される。しかしながら、本処理では、ノード３１０ｄは正常に復旧せず、異常の状態のままとなる（正常復帰の応答がない）。その場合は、再度、ノード３１０ｃのシステム管理プロセスにノード３１０ｄの異常が検知される（Ｓ３３）。再起動の結果、当該ノード３１０ｄが正常に復旧した場合は、そこで終了される。
【００６６】
続いて、システム管理プロセスによって、異常のままであるノード３１０ｄで実行されているプロセス３３１ｇ，３３１ｈをそれぞれノード３１０ｃ、ノード３１０ｅで実行させると判断される（図示せず）。このときプロセス３３１ｇ，３３１ｈが起動されるノード３１０ｃ，３１０ｅは、上述した方法で決定されたものであり、ノード３１０ｅは既に起動しているノードでもよいし、新たに起動されるノードでもよい。なお、ノード３１０ｄで実行されているプロセス３３１ｇ，３３１ｈは、システム情報を参照することによりシステム管理プロセスにて把握される。
【００６７】
続いて、システム管理プロセスによってノード３１０ｃのノード管理プロセスに対してプロセス３３１ｇの起動指令がなされる（Ｓ３４）。また、システム管理プロセスによってノード３１０ｅのノード管理プロセスに対してプロセス３３１ｈの起動指令がなされる（Ｓ３５）。
【００６８】
ノード３１０ｃのノード管理プロセスでは、プロセス３３１ｇの起動指令が受け付けられると、図９のハッチングされたブロックで示すようにプロセス３３１ｇの起動が実施される。プロセス３３１ｇが起動されると、ノード３１０ｃのノード管理プロセス（あるいは、プロセス３３１ｇ自体）からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる（Ｓ３６）。
【００６９】
ノード３１０ｅのノード管理プロセスでは、プロセス３３１ｈの起動指令が受け付けられると、図９のハッチングされたブロックで示すようにプロセス３３１ｈの起動が実施される。プロセス３３１ｈが起動されると、ノード３１０ｅのノード管理プロセス（あるいは、プロセス３３１ｈ自体）からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる（Ｓ３７）。以上が、本実施形態に係るノード３１０間で実行される処理である。
【００７０】
上記のように、各ノード３１０において起動されているプロセス３３１又はノード３１０自体に異常が生じた場合、あるいは異常が生じて適切に復旧しない場合には、別のノード３１０において異常が発生したプロセス３３１を起動させることとしてもよい。
【００７１】
これにより、各ノード３１０やプロセス３３１に異常が発生した場合であっても、分散型マルチＣＰＵ制御システム１を確実に機能させることができる。
【００７２】
＜第５実施形態＞
引き続いて、第４実施形態と同様に第３実施形態における分散型マルチＣＰＵ制御システム１の管理をベースとした当該管理のバリエーションを示す。図１１に本実施形態に係るノード４１０ａ〜４１０ｅを含んで構成される分散型マルチＣＰＵ制御システム１の構成を示す。図１１では、上述した本発明の機能に係るプロセスについては省略し、通常のプロセス４３１ａ〜４３１ｈのみを記す。また、ハッチングされたノード４１０ｄにおけるプロセス４３１ｅ及びプロセス４３１ｆ、並びにノード４１０ｅにおけるプロセス４３１ｅ及びプロセス４３１ｆは、当初は実行されていない。これらは、制御の過程で起動される。
【００７３】
機器の監視や制御は、機器と物理的にケーブル等で接続（接合）しているノード４１０で起動されるプロセス４３１によってのみ可能である。例えば、図１１に示すように慣性航法装置２３にはノード４１０ｃ，４１０ｄ，４１０ｅの３つのノードが接続（パラレル接合）されており、これらのノード４１０上のプロセスでのみ慣性航法装置２３の監視や制御が可能である。重要度の高い機器の制御を行っているプロセス４３１やノード４１０に異常が発生した場合、あるいは異常の発生によって再起動を行う場合には、その間当該機器の制御が行えなくなる。そこで、システム管理プロセスは、そのような場合には、当該機器に接続されている別のノード４１０上に当該プロセスを起動させる。また、このとき起動させるプロセス４３１は、互いに異なるノード４１０で重複して起動させることとしてもよい。これにより、その機能を補完して、機器を確実に制御させる。
【００７４】
また、当初機器を制御していたプロセス４３１及びノード４１０が、再起動の結果、正常に復旧すれば当該機器の制御を元のプロセス４３１及びノード４１０に戻してもよいし、機能補完したプロセス４３１及びノード４１０による制御を続けてもよい。
【００７５】
なお、上記の制御のため重要な機器には、予めバックアップ用のノード４１０を用意しておき複数のノード４１０と物理的に接続させておく。また、新たにプロセス４３１を起動させるノード４１０は、予め起動されている（スタンバイ状態の）ノード４１０でもよいし、プロセス４３１を起動させる際にノードを起動することとしてもよい。なお、その選択は、システム状態、システム構成（ノード数、プロセス数、稼動算時間）、接続機器構成等を考慮して、システム管理プロセスにより行われる。
【００７６】
引き続いて、図１１の構成図、及び図１２のシーケンス図を用いて、本実施形態に係るノード４１０間で実行される処理を説明する。本処理では、ノード４１０ｃのプロセス４３１ｅ，４３１ｆが慣性航法装置２３の監視及び制御を行っている。また、上述したように慣性航法装置２３には、ノード４１０ｃ，４１０ｄ，４１０ｅの３つのノードが接続されている。また、ノード４１０ｅは、処理開始には起動されていない。本処理は、ノード４１０ｃに異常が発生した場合に行われる。また、本処理では、ノード４１０ｄにおいて各ノード４１０ａ〜４１０ｅを管理するシステム管理プロセスが実行されている。
【００７７】
ノード４１０ｃで異常が発生すると、ノード４１０ｄのシステム管理プロセスがシステム情報を参照することにより、ノード４１０ｃの異常が検知される（Ｓ４１）。
【００７８】
続いて、システム管理プロセスによって、異常が検知されたノード４１０ｃで実行されている慣性航法装置２３を監視制御するプロセス４３１ｅ，４３１ｆをノード４１０ｄで実行させると判断される（図示せず）。このときプロセス４３１ｅ，４３１ｆが起動されるノード４１０は、上述した方法で決定される。なお、ノード４１０ｃで実行されているプロセスプロセス４３１ｅ，４３１ｆは、システム情報が参照されてシステム管理プロセスに把握される。また、ノード４１０ｃの異常検知後、上述した実施形態と同様に、ノード４１０ｃの再起動の制御等のノード４１０ｃを復旧するための制御が行われていてもよい。
【００７９】
続いて、システム管理プロセスによってノード４１０ｄのノード管理プロセスに対してプロセス４３１ｅの起動指令がなされる（Ｓ４２）。また、システム管理プロセスによってノード４１０ｄのノード管理プロセスに対してプロセス４３１ｆの起動指令がなされる（Ｓ４３）。
【００８０】
ノード４１０ｄのノード管理プロセスでは、プロセス４３１ｅの起動指令が受け付けられると、図１１のハッチングされたブロックで示すようにプロセス４３１ｅの起動が実施される。プロセス４３１ｅが起動されると、ノード４１０ｄのノード管理プロセス（あるいは、プロセス４３１ｅ自体）からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる（Ｓ４４）。
【００８１】
ノード４１０ｄのノード管理プロセスでは、プロセス４３１ｆの起動指令が受け付けられると、プロセス４３１ｆの起動が実施される。プロセス４３１ｆが起動されると、ノード４１０ｄのノード管理プロセス（あるいは、プロセス４３１ｆ自体）からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる（Ｓ４５）。なお、例えば、プロセス４３１ｆが重要なプロセスでない場合（ノード４１０ｃの復旧を待ってから実行されてもよいプロセスであった場合）には、必ずしもノード４１０ｄにおいてプロセス４３１ｆが起動されなくてもよい。
【００８２】
Ｓ４２〜Ｓ４５の処理は、次のような処理が行われてもよい。まず、システム管理プロセスによって、ノード４１０ｅの起動制御が行われる（Ｓ４６）。なお、システム管理プロセスによるノード４１０ｅを起動させる判断は、上述したように行われる。
【００８３】
システム管理プロセスによる（起動されていない）ノード４１０ｅの起動制御は、具体的にはそのノード４１０ｅへの電源制御であり、例えば、当該ノード４１０ｅの電源をオンすることによって行われる。但し、ノード４１０ｅの起動制御は、上記の方法以外によって行われてもよい。システム管理プロセスによる起動制御により、ノード４１０ｅが起動されると、ノード４１０ｅのノード管理プロセスからシステム管理プロセスに対してノード４１０ｅが正常起動した旨の通知が行われる（Ｓ４７）。
【００８４】
続いて、システム管理プロセスによってノード４１０ｅのノード管理プロセスに対してプロセス４３１ｅの起動指令がなされる（Ｓ４８）。また、システム管理プロセスによってノード４１０ｅのノード管理プロセスに対してプロセス４３１ｆの起動指令がなされる（Ｓ４９）。
【００８５】
ノード４１０ｅのノード管理プロセスでは、プロセス４３１ｅの起動指令が受け付けられると、図１１のハッチングされたブロックで示すようにプロセス４３１ｅの起動が実施される。プロセス４３１ｅが起動されると、ノード４１０ｅのノード管理プロセス（あるいは、プロセス４３１ｅ自体）からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる（Ｓ５０）。
【００８６】
ノード４１０ｅのノード管理プロセスでは、プロセス４３１ｆの起動指令が受け付けられると、図１１のハッチングされたブロックで示すようにプロセス４３１ｆの起動が実施される。プロセス４３１ｆが起動されると、ノード４１０ｅのノード管理プロセス（あるいは、プロセス４３１ｆ自体）からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる（Ｓ５１）。以上が、本実施形態に係るノード４１０間で実行される処理である。
【００８７】
上記のように、重要度の高い機器に接続されたノード４１０やプロセス４３１に異常が生じた場合、当該機器が接続された別のノード４１０において異常が発生したプロセス４３１を起動させることとしてもよい。これにより、機器に接続されたノード４１０やプロセス４３１に異常が生じた場合であっても、確実に機器を監視、制御することができる。
【００８８】
＜第６実施形態＞
図１３に本実施形態に係るノード５１０ａ〜５１０ｅを含んで構成される分散型マルチＣＰＵ制御システム１の構成を示す。図１３に示すように、機器と各ノードとの間に制御系統切替装置５５２を設けて、機器の制御が特定のノード５１０又はプロセス５３１によって確実に行われるようにしてもよい。制御系統切替装置５５２は、システム管理プロセスからの制御を受けて、システム管理プロセスから指定された特定のノード５１０又は特定のプロセス５３１との間のみの情報の送受信を許可する装置である。
【００８９】
システム管理プロセスは、重要度の高い機器の制御を行っているプロセス５３１やノード５１０に異常が発生した場合、機器との情報の送受信を行う当該プロセス５３１又はノード５１０を切り替えて、切り替えた先のプロセス５３１又はノード５１０で機器の監視や制御を行うようにさせる。これにより、より適切に機器の制御が行われる。
【００９０】
引き続いて、図１３の構成図、及び図１４のシーケンス図を用いて、本実施形態に係るノード５１０間で実行される処理を説明する。本処理では、ノード５１０ｃのプロセス５３１ｅ，５３１ｆが慣性航法装置２３の監視及び制御を行っている。また、上述したように慣性航法装置２３には、ノード５１０ｃ，５１０ｄ，５１０ｅの３つのノードが接続されている。慣性航法装置２３と、ノード５１０ｃ，５１０ｄ，５１０ｅとの間には制御系統切替装置５５２が設けられている。制御系統切替装置５５２は、ノード５１０ｃと制御系統切替装置５５２との間の情報の送受信を許可する。また、ノード５１０ｅは、処理開始には起動されていない。本処理は、ノード５１０ｃに異常が発生した場合に行われる。また、本処理では、ノード５１０ｄにおいて各ノード５１０ａ〜５１０ｅを管理するシステム管理プロセスが実行されている。
【００９１】
ノード５１０ｃで異常が発生すると、ノード５１０ｄのシステム管理プロセスがシステム情報を参照することにより、ノード５１０ｃの異常が検知される（Ｓ６１）。
【００９２】
続いて、システム管理プロセスによって、異常が検知されたノード５１０ｃで実行されている慣性航法装置２３を監視制御するプロセス５３１ｅ，５３１ｆをノード５１０ｄで実行させると判断される（図示せず）。このときプロセス５３１ｅ，５３１ｆが起動されるノード５１０は、上述した方法で決定される。続いて、システム管理プロセスによって、制御系統切替装置５５２に対して、ノード５１０ｄと慣性航法装置２３との間の情報の送受信を許可するように切替指令が行われる（Ｓ６２）。
【００９３】
切替指令を受けた制御系統切替装置５５２では切替処理が行われて、また、切替先のノード５１０ｄに切替が行われた旨の通知が行われる。切替先のノード５１０ｄでは、ノード管理プロセスによってその通知が受け付けられて、システム管理プロセスに切替が完了した旨の通知が行われる（Ｓ６３）。
【００９４】
なお、ノード５１０ｃで実行されているプロセスプロセス５３１ｅ，５３１ｆは、システム情報が参照されてシステム管理プロセスに把握される。また、ノード５１０ｃの異常検知後、上述した実施形態と同様に、ノード５１０ｃの再起動の制御等のノード５１０ｃを復旧する制御が行われていてもよい。
【００９５】
続いて、システム管理プロセスによってノード５１０ｄのノード管理プロセスに対してプロセス５３１ｅの起動指令がなされる（Ｓ６４）。また、システム管理プロセスによってノード５１０ｄのノード管理プロセスに対してプロセス５３１ｆの起動指令がなされる（Ｓ６５）。
【００９６】
ノード５１０ｄのノード管理プロセスでは、プロセス５３１ｅの起動指令が受け付けられると、図１３のハッチングされたブロックで示すようにプロセス５３１ｅの起動が実施される。プロセス５３１ｅが起動されると、ノード５１０ｄのノード管理プロセス（あるいは、プロセス５３１ｅ自体）からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる（Ｓ６６）。
【００９７】
ノード５１０ｄのノード管理プロセスでは、プロセス５３１ｆの起動指令が受け付けられると、プロセス５３１ｆの起動が実施される。プロセス５３１ｆが起動されると、ノード５１０ｄのノード管理プロセス（あるいは、プロセス５３１ｆ自体）からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる（Ｓ６７）。なお、例えば、プロセス５３１ｆが重要なプロセスでない場合（ノード５１０ｃの復旧を待ってから実行されてもよいプロセスであった場合）には、必ずしもノード５１０ｄにおいてプロセス５３１ｆが起動されなくてもよい。
【００９８】
Ｓ６２以降の処理は、次のような処理が行われてもよい。まず、システム管理プロセスによって、ノード５１０ｅの起動制御が行われる（Ｓ６８）。なお、システム管理プロセスによるノード５１０ｅを起動させる判断は、上述したように行われる。
【００９９】
ノード５１０ｅの起動制御は上述した方法と同様に行われる。システム管理プロセスによる起動制御により、ノード５１０ｅが起動されると、ノード５１０ｅのノード管理プロセスからシステム管理プロセスに対してノード５１０ｅが正常起動した旨の通知が行われる（Ｓ６９）。
【０１００】
続いて、システム管理プロセスによって、制御系統切替装置５５２に対して、ノード５１０ｅと慣性航法装置２３との間の情報の送受信を許可するように切替指令が行われる（Ｓ７０）。切替指令を受けた制御系統切替装置５５２では切替処理が行われ、切替先のノード５１０ｅのノード管理プロセスでは、慣性航法装置２３との間で情報の送受信が行われてシステム管理プロセスに切替が完了した旨の通知が行われる（Ｓ７１）。
【０１０１】
続いて、システム管理プロセスによってノード５１０ｅのノード管理プロセスに対してプロセス５３１ｅの起動指令がなされる（Ｓ７２）。また、システム管理プロセスによってノード５１０ｅのノード管理プロセスに対してプロセス５３１ｆの起動指令がなされる（Ｓ７３）。
【０１０２】
ノード５１０ｅのノード管理プロセスでは、プロセス５３１ｅの起動指令が受け付けられると、図１３のハッチングされたブロックで示すようにプロセス５３１ｅの起動が実施される。プロセス５３１ｅが起動されると、ノード５１０ｅのノード管理プロセス（あるいは、プロセス５３１ｅ自体）からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる（Ｓ７４）。
【０１０３】
ノード５１０ｅのノード管理プロセスでは、プロセス５３１ｆの起動指令が受け付けられると、図１３のハッチングされたブロックで示すようにプロセス５３１ｆの起動が実施される。プロセス５３１ｆが起動されると、ノード５１０ｅのノード管理プロセス（あるいは、プロセス５３１ｆ自体）からシステム管理プロセスに対してプロセスが正常起動した旨の通知が行われる（Ｓ７５）。以上が、本実施形態に係るノード５１０間で実行される処理である。
【０１０４】
上記のような構成とすることによって、機器の制御がシステム管理プロセスによって決定される特定のノード又はプロセスによって行われる。その結果、適切に機器を監視、制御することができる。
【０１０５】
＜第７実施形態＞
図１５に本実施形態に係る分散型マルチＣＰＵ制御システム１の構成を示す。図１５に示すように本実施形態において、分散型マルチＣＰＵ制御システム１は海中機器２に備えられて構成される。分散型マルチＣＰＵ制御システム１に含まれる１つのノード６１０ａには、上述した実施形態の構成に加えて通信変換機６６１を備えている。通信変換機６６１は、分散型マルチＣＰＵ制御システム１以外の装置と通信を行って、共有メモリに格納されるシステム情報の送受信を行う通信手段を構成する。
【０１０６】
通信変換機６６１と通信を行う、分散型マルチＣＰＵ制御システム１以外の装置は、例えば、図１５に示すような船舶に設けられる電磁波や音響等の無線通信装置（Ｉ／Ｆノード）６７１及び電気ケーブルや光ファイバーケーブル等の有線通信装置（Ｉ／Ｆノード）６７２、陸上に設けられる衛星通信装置（Ｉ／Ｆノード）６７３及び電気ケーブルや光ファイバーケーブル等の有線通信装置（Ｉ／Ｆノード）６７４、並びに海中機器２とＩ／Ｆノード６７３とを中継する衛星６７５等である。なお、この通信は、無線通信で行われてもよいし、有線で行われてもよい。
【０１０７】
共有メモリに記憶されるシステム情報の入出力を行うことによって、海中機器２の外部から、海中機器２の状態を遠隔監視することができ、また、海中機器２に対して遠隔制御を行うことができる。
【０１０８】
引き続いて、上述した各実施形態の更なる変形例について説明する。分散型マルチＣＰＵ制御システムの各ノードにおいて、自ノード又は自ノードで実行されるプロセスに異常が発生する危険度を推定する危険度推定手段として機能するプロセスを実行させることが望ましい。推定された危険度を示す情報は、システム情報に含められ第１実施形態あるいは第２実施形態に示す構成によって各ノード間で共有される。なお、危険度が推定されるプロセスはノードで起動される全プロセスでもよいし、特定のプロセスであってもよい。
【０１０９】
異常が発生する危険度は、ノード又はプロセスが機能しなくなる可能性を示すものである。プロセスの危険度については、例えば、各プロセスが制御している機器の時間当たりのエラー回数（頻度）を機器及びエラー内容に応じて重み付けして算出（推定）する。
【０１１０】
具体的には以下の式によって算出することができる。
Ｄｐ＝α・Ｅｃｏｍ＋β・Ｅｍ１＋γ・Ｅｍ２
ここで、Ｄｐはプロセス異常危険度を示し、Ｅｃｏｍは当該プロセスが制御する機器との通信エラー回数を示し、Ｅｍ１は当該プロセスが制御する機器からのエラーメッセージ１の回数を示し、Ｅｍ２は当該プロセスが制御する機器からのエラーメッセージ２の回数を示す。Ｅｃｏｍ、Ｅｍ１、Ｅｍ２については、例えば、上述したプロセス状態監視プロセスによって監視されてシステム情報に格納されており、それを参照する。α，β，γは上記の内容の重要度に応じて定義された重みであり、予め危険度を算出するプロセスに設定、記憶されている。
【０１１１】
ノードの危険度については、例えば、ノードで起動されている各プロセスの異常危険度、当該ノードの記憶容量残量、メモリ使用量、ＣＰＵ負荷等を無次元化した評価値を用いる。あるいは、上記の各内容を個別項目としてそれぞれの危険度を評価する。
【０１１２】
具体的には以下の式によって算出することができる。
Ｄｎ＝α・（Ｄｐ１＋Ｄｐ２＋Ｄｐ３）＋β・ＣＭ＋γ・ＣＦ＋η・ＣＰ
ここで、Ｄｎはノード異常危険度を示し、Ｄｐ１，Ｄｐ２，Ｄｐ３はそれぞれ当該ノードで起動されている（３つの）プロセスのプロセス異常危険度を示し、ＣＭは当該ノードの共有メモリの残量を示し、ＣＦは当該ノードの記憶領域残量を示し、ＣＰは当該ノードのＣＰＵ負荷を示す。ＣＭ、ＣＦ、ＣＰについては、例えば、上述したノード状態監視プロセスによって監視されてシステム情報に格納されており、それを参照する。α，β，γ，ηは上記の内容の重要度に応じて定義され、各内容（項）を無次元化する重みであり、予め危険度を算出するプロセスに設定、記憶されている。
【０１１３】
システム管理プロセスが、上記のように算出されてシステム情報に含まれる各ノード及び各プロセスの危険度を参照して、当該各ノード及び各プロセスに異常が発生する前に上述した第３〜第６実施形態で説明したように再起動等の制御を行う。具体的には例えば、危険度の値が予め設定、記憶した閾値を超えた場合に再起動の制御を行う。
【０１１４】
また、分散型マルチＣＰＵ制御システムには、緊急事態を専門に扱うプロセス（緊急用プロセス）が起動されるノードである、緊急用ノードが設けられていてもよい。第５及び第６実施形態で説明したような方法によっても、重要度の高い機器の復旧がなされない場合にシステム管理プロセスが緊急事態と判断して、緊急用ノードの緊急用プロセスによってその後の全処理を実行するように制御する。例えば、海中機器においては、緊急処理に必要となるノード以外の全てのノード及びプロセスを正規の手順で終了させ、これによってシステム健常性（ノード破壊及びデータ破損等の回避）が確保された後に、バラストを離脱させる等の当該海中機器を自己浮上あるいは緊急回収可能な状態へと制御する。
【０１１５】
また、分散型マルチＣＰＵ制御システムにおいては、汎用的な通信プロトコルを適用することによってプライマリネットワークを構築し、また上述した実施形態を実現すると共に、別の通信プロトコルを適用したセカンダリネットワークを同時に構築し、非常時に上記の実施形態の一部又は全部を実現させる冗長的な構成としてもよい。例えば、プライマリネットワークとしてＥｔｈｅｒｎｅｔを適用し、別系統のセカンダリネットワークとしてＣＡＮｂｕｓを適用する。これにより、Ｅｔｈｅｒｎｅｔ通信に不具合が生じた場合でも、ＣＡＮｂｕｓ通信に切り替えることによって、各ノード間の通信を確立させると共に、重要度の高い機器を制御するノードあるいは緊急ノードの機能を確保する。
【０１１６】
本実施形態では、上述したように海中探査機に適用されるものとして説明した。本発明は、分散型マルチＣＰＵ制御システムが用いられるシステムで人為的なアクセスが長期間困難なシステムに適用することが望ましい。あるいは、不具合発生時にごく短時間でも放置が許されない（早急な復旧が必要な）システムへ適用することが望ましい。
【０１１７】
本実施形態に係る自律型海中探査機の制御システムでは、長時間の巡航においては突発的、偶発的な予期せぬ不具合が生じるが、自走式であるため外部からの支援が困難となる。そのため制御システムには自己復旧能力が必須となる。また、ミッションに応じて航行機器、観測機器の換装が頻繁に起こるため、システム構成の変更に柔軟な制御システムが必要になる。
【０１１８】
また、海底観測ステーションにおける制御システムやインテリジェントブイにおける制御システムに本発明を適用することも望ましい。長期にわたり海底に設定される海底観測ステーションやインテリジェントブイにおいては、機器の老朽化に伴う時系列的な不具合、あるいは観測内容に伴い機器の換装も生じる。しかし、海底観測ステーションあるいはインテリジェントブイ自体を回収することは、地理的あるいはコスト面において困難なため、現場（海底、海上）にて自己で不具合を復旧させる能力が必須となる。また、機器の換装に伴うシステム構成の変更に柔軟な制御システムが必要になる。
【０１１９】
また、無人宇宙ステーションにおける制御システム、人工衛星における制御システム、及び無人惑星探査機に本発明を適用することも望ましい。長期にわたり宇宙空間に配置されるこれらのシステムや装置においては、機器の老朽化に伴う時系列的な不具合、あるいは観測内容に伴い機器の換装も生じる。しかし、そのような事態においても回収することは非常に困難であるため、現場（宇宙）にて自己で不具合を復旧させる能力が必須となる。
【０１２０】
また、原子炉における制御システムに適用することも望ましい。人為的なアクセスが困難な環境にもかかわらず、不具合発生時にはシステムのダウン（制御不能状態）が仮に短時間でも許されず、早急な自己復旧が必須である。
【符号の説明】
【０１２１】
１…分散型マルチＣＰＵ制御システム、２…海中機器、１０，１１０，２１０，３１０，４１０，５１０，６１０…ノード、１１…ＣＰＵ、１２…メモリ、１３…通信モジュール、２１…スラスタ、２２…速度計、２３…慣性航法装置、３１，１３１，２３１，３３１，４３１，５３１…プロセス、４１，１４１…共有メモリ制御プロセス、２４２…システム管理プロセス、２４３…ノード管理プロセス、２４４…プロセス状態監視プロセス、２４５…ノード状態監視プロセス、５１，１５１，２５１…共有メモリ、５５２…制御系統切替装置、６６１…通信変換機、６７１〜６７４…通信装置（Ｉ／Ｆノード）、６７５…衛星。
【図１】
0005700370.tif 000002
【図２】
0005700370.tif 000003
【図３】
0005700370.tif 000004
【図４】
0005700370.tif 000005
【図５】
0005700370.tif 000006
【図６】
0005700370.tif 000007
【図７】
0005700370.tif 000008
【図８】
0005700370.tif 000009
【図９】
0005700370.tif 000010
【図１０】
0005700370.tif 000011
【図１１】
0005700370.tif 000012
【図１２】
0005700370.tif 000013
【図１３】
0005700370.tif 000014
【図１４】
0005700370.tif 000015
【図１５】
0005700370.tif 000016