(57)【特許請求の範囲】
【請求項１】
互いにネットワークに接続された複数のノードおよび少なくとも１つの外部装置から構成され、あるノード上で実行中のタスクを他のノードへ移送可能な分散処理システムであって、
移送元のノードは、前記外部装置を透過的に利用可能とするためにデバイスファイルに対するシステムコールを前記外部装置に転送する仮想デバイスドライバを有しており、
前記タスクの移送の際に、前記仮想デバイスドライバも移送先のノードへ移送する
ことを特徴とする分散処理システム。
【請求項２】
移送元のノードは、移送されるタスクが制御している外部装置に対応する仮想ドライバについて、その実行コードと実行状態を移送先のノードへ移送し、
移送先のノードは、仮想デバイスドライバと前記外部装置とのリンクを再構築する、
ことを特徴とする請求項１に記載の分散処理システム。
【請求項３】
各ノードの処理負荷を監視し、処理負荷の大きいノードで実行中のタスクを、処理負荷の少ないノードに移送する負荷分散処理部を有する、
ことを特徴とする請求項１または２に記載の分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行状態のタスクを他のコンピュータへ移送して該タスクの処理を継続可能な分散処理システムに関する。
【背景技術】
【０００２】
従来、複数のコンピュータ（情報処理装置）をネットワークを介して接続し、全体として１つのシステムとして機能するような分散処理システムが実用化されている。このような分散処理システムでは、各コンピュータにかかる負荷ができるだけ均等になるように処理（タスク）を分散して割り当てる負荷分散処理が可能となる。また、多数のコンピュータを接続して仮想的な高性能なコンピュータシステムとするグリッドコンピューティングシステムでは、演算処理などを並列に実行可能なタスクに分割して、それぞれのタスクを個々のコンピュータにおいて実行させている。
【０００３】
近年、あるコンピュータにおいて実行中のタスク（プロセス）が持つ実行状態（実行コンテキスト）を他のコンピュータ上に移送し、移送先のコンピュータ上で途中の実行状態から処理を継続することのできるプロセスマイグレーションという技術が実用化されつつある。プロセスの実行コンテキストとは、具体的には、プロセスが使用しているメモリ空間上のデータ（プログラムコードも含む）と、ＣＰＵ（中央演算処理装置）の状態であるレジスタの値と、プロセスが使用しているファイルの情報等を含むデータである。
【０００４】
初期のプロセスマイグレーション技術では、実行コンテキストを記憶装置等に記憶して、他のコンピュータでその実行コンテキストを読み込んでマイグレーションを行っていたが、近年リアルタイムにプロセスを移送することが可能となっている。したがって、特定のコンピュータに負荷が集中している場合に、負荷の軽いコンピュータに処理を移送することで、負荷分散を実現することができる。また、一部のコンピュータの稼働を停止してメンテナンスを行う場合や、コンピュータの異常が検知され故障する可能性がある場合などに、そのコンピュータ上で実行中のタスクを他のコンピュータに移送することで、他のコンピュータによって処理を継続させることができるので耐故障性能が向上することになる。
【０００５】
ところで、分散処理システムにおいて、あるノードが周辺装置を制御しようとする場合、制御対象の周辺装置が自ノードに直接接続されている場合や、他のノードの接続されている場合や、周辺装置が直接ネットワークに接続されている場合などがある。このような場合に、ネットワークに接続された周辺装置や、他のコンピュータに接続された周辺装置を透過的に使用することは、すでに実現されている。透過的な利用とは、ネットワーク接続された周辺機器があたかも手元のコンピュータに接続されているかのように利用でき、ネットワーク的に離れた周辺機器を操作できることを意味する。このような透過的な利用は、リモートプロシージャコール（ＲＰＣ）や分散オブジェクト技術などによって実現可能である。
【特許文献１】特開２００６−１９７５８２号公報
【非特許文献１】松本尚  他、「汎用超並列オペレーティングシステムカーネルＳＳＳ−ＣＯＲＥ」、第１７回技術発表会論文集、情報処理振興事業協会、ｐｐ．１７５−１８８、１９９８年１０月、インターネット＜ＵＲＬ：http://www.ssscore.org/ssscore/index-j.html＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
動的に負荷分散を行ったり、メンテナンスするマシンを停止させる場合には、実行中のプロセスを中断し、移送先のマシンで実行を継続できる必要がある。したがって、上述したプロセスマイグレーションの技術が必須となる。
【０００７】
しかしながら、既存のプロセスマイグレーション機構は、数値計算のようなプログラムを対象としており、周辺装置、特にネットワークに接続された周辺装置を利用することについては考慮されていない。したがって、プロセスマイグレーションの際に、周辺装置への処理が中断され、結果的にプロセス（タスク、アプリケーション）の処理が保証されなくなってしまう。
【０００８】
本発明は上記実情に鑑みてなされたものであって、その目的とするところは、実行中のタスクを他のコンピュータへ移送して実行を継続可能な分散処理システムにおいて、外部装置を利用するタスクを移送する際にも、該タスクの動作を保証することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明に係る分散処理システムは、複数のノードから構成され、あるノード上で実行中のタスク（プロセス）を他のノードへ移送可能な分散処理システムであって、移送元のノードは、ネットワークを介して接続された外部装置を透過的に利用可能とするための仮想デバイスドライバを有しており、前記タスクの移送の際に、前記仮想デバイスドライバも移送先のノードへ移送することを特徴とする。なお、仮想デバイスドライバは、デバイスファイルに対するシステムコールを外部装置に転送するものである。
【００１０】
このように、仮想デバイスドライバも合わせて移送することによって、外部装置を利用するタスクを移送した場合に、移送後のノードにおいても外部装置の利用を継続することが可能となる。
【００１１】
また、本発明に係る分散処理システムは、各ノードの処理負荷を監視し、処理負荷の大きいノードで実行中のタスクを、処理負荷の少ないノードに移送する負荷分散処理部を有することも好適である。
【００１２】
このように、負荷分散処理を行うことで、システム内のノード間で処理負荷を平準化でき、システム全体としての処理効率が向上する。
【発明の効果】
【００１３】
本発明によれば、実行中のタスクを他のコンピュータへ移送して実行を継続可能な分散処理システムにおいて、外部装置を利用するタスクを移送する際にも、該タスクの動作を保証することができる。
【発明を実施するための最良の形態】
【００１４】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【００１５】
＜システム構成＞
本実施形態に係る分散処理システムは、車両に搭載された複数のＥＣＵ（Electronic Control Unit）からなるシステムである。従来の車両では、種々の機能を実現するために
数多くのＥＣＵが搭載されており、各ＥＣＵがそれぞれ単独の機能を担う場合が多かった。この結果、ＥＣＵの数が増大し、コストの上昇やＥＣＵ設置場所の確保などが問題となってきている。そこで、近年、汎用のマイクロプロセッサを利用し、従来複数のＥＣＵに分散していた機能を一つのＥＣＵに統合する取り組みが行われている。本実施形態に係る車載システムは、このように、一つのＥＣＵが複数の機能を実行する。
【００１６】
図１は、本実施形態に係る車載システムの構成を示す図である。図に示すように、本車載システム１には、複数のＥＣＵ１０１〜１０５がネットワークを介して接続されている。各ＥＣＵはそれぞれタスク（アプリケーションプログラム）を実行して、外部装置２０１〜２０４を制御する。外部装置として、インテリジェントデバイス２０１，２０２と、ＥＣＵに接続されたデバイス２０３，２０４とが存在する。なお、インテリジェントデバイスとは、このデバイスを制御するドライバにマイクロプロセッサが搭載されており、またネットワークインターフェースを備え、ネットワーク経由でデバイス制御の指示を受け付け可能なデバイスである。したがって、原理的には、インテリジェントデバイス２０１、２０２は、ＥＣＵ１０４とデバイス２０３とを一体化したものであり、これらを特に区別して考える必要はない。
【００１７】
本実施形態に係る車載システム１では、外部デバイスを制御するタスクは、各ＥＣＵ間で負荷分散される。図２は、本車載システム１における負荷分散処理を模式的に表した図である。実行すべきタスクは、まずスーパバイザ機能部（負荷分散処理部）３００に処理依頼される。スーパバイザ機能部３００は、実際にはいずれかのＥＣＵ（複数可）がその機能を担当する。スーパバイザ機能部３００は、各ＥＣＵ１０１〜１０５の処理能力と負荷状況を考慮して、負荷の少ないＥＣＵに対してタスクを割り当てる。図では、処理能力の高いＥＣＵ１０１，１０２にそれ以外のＥＣＵよりも多くのタスクが割り当てられていることを示している。タスクを割り当てられたＥＣＵは、そのタスクを周期的に実行する。
【００１８】
＜デバイス制御＞
次に、本車載システム１において、ＥＣＵがリモートにある外部デバイスを制御する仕組みについて説明する。なお、デバイスの制御には、デバイスを駆動（例えば、アクチュエータの駆動）とデバイスからの入力（例えば、アクチュエータの状態取得）の両方が含まれる。ＥＣＵが外部デバイスを制御する場合、そのデバイスが自ノードに接続されているか他のノードに接続されているかによって、実行すべき処理が異なる。このことを意識してアプリケーションプログラムを作成していては、開発効率が悪いので、外部デバイスの位置に拘わらず透過的に利用できることが望まれる。そこで、本実施形態では、仮想デバイスドライバの仕組みを採用して、外部デバイスを透過的に利用する。
【００１９】
図３は、仮想デバイスドライバの概要を説明する図である。図３において、仮想デバイスドライバ１３は、ノード１０がリモートのデバイス（図３ではインテリジェントデバイス２０）を操作するためのエントリポイントである。仮想デバイスドライバ１３は、通常のデバイスドライバとしてＯＳ１１に登録される。仮想デバイスドライバ１３は、インテリジェントデバイス２０内の実デバイスドライバ２２と対応付けられ、リンクされている。
【００２０】
仮想デバイスドライバ１３は、ＯＳ１１からは従来のデバイスドライバと同様に扱われ、リモートのデバイスを透過的に利用できる。すなわち、ＯＳ１１は、リモートにある外部デバイスも自ノードのデバイスと同様に、デバイスファイルによってアクセス可能とする。ノード１０がインテリジェントデバイス２０を制御する場合には、自ノードに接続されたデバイスを制御するのと同様に、インテリジェントデバイス２０のデバイスファイルに対してＯＳ１１のシステムコールを呼ぶだけでよい。システムコールが呼ばれると、ＯＳ１１のシステムコール・インタフェース１２を介して、仮想デバイスドライバ１３がデバイスへの要求を受け付ける。
【００２１】
仮想デバイスドライバ１３は、ネットワークを介して、インテリジェントデバイス２０を制御する実際のデバイスドライバ２３と通信を行う。仮想デバイスドライバ１３は、タ
スクからの要求をインテリジェントデバイス２０の実デバイスドライバ２３に送り、インテリジェントデバイス２０を実際に制御する。
【００２２】
このように仮想デバイスドライバを用いて、各ＥＣＵはネットワークに接続された外部デバイスの制御が行う。
【００２３】
＜プロセス移送＞
次に、本実施形態に係る車載システムにおけるプロセス移送（プロセスマイグレーション）について説明する。プロセス（タスク）を移送する場合、その実行コード（プログラム）および実行状態（実行コンテキスト）を、あるノードから別のノードにコピーすることで、実行中の状態を維持したままタスクを実行するノードを変更することができる。これがすなわちプロセスのマイグレーション（移送）である。
【００２４】
本車載システムでは、負荷分散を行っているので、図４に示すようにノード間で負荷状態に差が生じた場合には、スーパバイザ機能部３００が、負荷の大きいノード１０１で実行中のタスクを負荷の少ないノード１０２へと移送する。なお、ノード１０１が実行中のタスクは、リモートにあるインテリジェントデバイス２０１を仮想デバイスドライバ１３を介して制御している。
【００２５】
図４に示すような状況でタスクをノード１０１からノード１０２に移送する際に、単にこのタスクに係るプロセスの実行コードと実行状態のみをノード１０２にコピーすると、図５に示すように、ノード１０２には仮想デバイスドライバ１３が準備されていないので、移送後のタスクが外部のデバイスを利用できなくなってしまう。
【００２６】
そこで、本実施形態に係る車載システムでは、プロセス移送の際の処理を次のように行う。図６は本車載システムによるプロセス移送処理を概念的に説明する図であり、図７は該プロセス移送処理の流れを示すフローチャートである。
【００２７】
スーパバイザ機能部３００によってタスクの移送が開始されると（Ｓ１０）、まずタスクに係るプロセスの実行コードと実行状態とが、移送先のノードにコピーされる（Ｓ１１）。そして、移送されるタスクが制御している外部のデバイス２０１に対応する仮想デバイスドライバ１３についても、その実行コードと実行状態とを移送先のノードにコピーする（Ｓ１２）。このとき、仮想デバイスドライバと実デバイスとのリンク（対応）の情報も合わせて移送される。移送先のノード１０２のＯＳ１１は、移送された仮想デバイスドライバ１３をＯＳに登録し（Ｓ１３）、この仮想デバイスドライバ１３とインテリジェントデバイス２０１の実デバイスドライバとの間のリンクを再構築する（Ｓ１４）。その後、移送先のノード１０２は、移送されたタスクの実行を開始する（Ｓ１５）。
【００２８】
このように、タスクを移送する際に、仮想デバイスドライバも合わせて移送し、仮想デバイスドライバと実デバイスとのリンクを再構築することで、タスクが移送された場合であっても外部デバイスの制御が正しく続行されることになる。
【００２９】
したがって、図８（ａ）に示すように、一部のＥＣＵに処理が集中したときに、その負荷を平準化することが可能となる。また、図８（ｂ）に示すように、一部のＥＣＵに故障発生が予想される場合に、そのＥＣＵが実行しているタスクを別のＥＣＵに移送することで、故障が発生してもシステム全体としては処理を続行することができる。
【００３０】
（変形例）
上記の説明では、移送先のノードに仮想デバイスドライバが存在しないことを前提としていた。しかしながら、移送先のノードに仮想デバイスドライバの実行コードが存在する
場合も考えられる。このような場合には、仮想デバイスドライバの実行コード自体は移送する必要がない。もっとも、仮想デバイスドライバの実行状態については移送先のノードに通知し、実行状態を移送前の状態と同じにし、かつ、仮想デバイスドライバと実デバイスドライバ間のリンクを再構築する必要がある。
【００３１】
上記の実施形態では、車載システムを例に説明したが、インターネットやＬＡＮなどに接続された複数のコンピュータから構成されるシステムに対して本発明を適用しても良い。
【図面の簡単な説明】
【００３２】
【図１】本実施形態に係る車載システムの構成を示す図である。
【図２】本実施形態に係る車載システムにおける負荷分散処理を模式的に表した図である。
【図３】仮想デバイスドライバの概要を説明する図である。
【図４】負荷分散のために実行中のタスクを移送すべき状況を表した図である。
【図５】タスクに係るプロセスのみを移送した場合に生じる問題点を説明する図である。
【図６】本実施形態に係る車載システムにおけるタスク移送処理を概念的に説明する図である。
【図７】本実施形態に係る車載システムにおけるタスク移送処理の流れを示すフローチャートである。
【図８】実行状態のタスクを別ノードに移送することによって達成できる効果を説明する図である。
【符号の説明】
【００３３】
１      車載システム
１１    ＯＳ
１２    システムコール・インタフェース
１３    仮想デバイスドライバ
１０１〜１０５  ＥＣＵ
２０１〜２０４  外部デバイス
【図１】
0005060225.tif 000002
【図２】
0005060225.tif 000003
【図３】
0005060225.tif 000004
【図４】
0005060225.tif 000005
【図５】
0005060225.tif 000006
【図６】
0005060225.tif 000007
【図７】
0005060225.tif 000008
【図８】
0005060225.tif 000009