(57)【要約】【課題】プロセスマイグレーションが可能な分散処理システムにおいて、外部装置を利用するタスク（プロセス）を移送する際に、該タスクの動作を保証することのできる技術を提供する。【解決手段】 各々に外部装置が接続された複数のコンピュータから構成され、あるコンピュータ上で実行中のタスクを他のコンピュータへ移送し、移送先のコンピュータで前記タスクの実行を継続可能な分散処理システムにおいて、外部装置を利用するタスクを移送する場合は、移送後のコンピュータに接続されている外部装置を利用して該タスクの処理を継続する。【選択図】図５
2008097358.tif 000002
【特許請求の範囲】
【請求項１】
各々に外部装置が接続された複数のコンピュータから構成され、あるコンピュータ上で実行中のタスクを他のコンピュータへ移送し、移送先のコンピュータで前記タスクの実行を継続可能な分散処理システムにおいて、
外部装置を利用するタスクが移送された場合は、移送先のコンピュータは該コンピュータに接続されている外部装置を利用して前記タスクの実行を継続する
ことを特徴とする分散処理システム。
【請求項２】
システム全体で仮想デバイスドライバを共有し、
各コンピュータは、
該コンピュータに接続された前記外部装置を制御するデバイスドライバと、
前記仮想デバイスドライバと前記デバイスドライバとを関連付け、該コンピュータで実行されているタスクによる前記仮想デバイスドライバへの出力を該コンピュータのデバイスドライバへ出力するインタフェース部と、
を有することを特徴とする請求項１に記載の分散処理システム。
【請求項３】
前記外部装置は、音声を再生する音響装置であることを特徴とする請求項１または２に記載の分散処理システム。
【請求項４】
前記外部装置は、映像を再生する映像装置であることを特徴とする請求項１または２に記載の分散処理システム。
【請求項５】
タスクの移送の際に、移送元のコンピュータのデバイスドライバにバッファされた出力データを、移送先のコンピュータのデバイスドライバへ送信することを特徴とする請求項１〜４のいずれかに記載の分散処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行状態のタスクを他のコンピュータへ移送して該タスクの処理を継続可能な分散処理システムに関する。
【背景技術】
【０００２】
従来、複数のコンピュータ（情報処理装置）をネットワークを介して接続し、全体として１つのシステムとして機能するような分散処理システムが実用化されている。このような分散処理システムでは、各コンピュータにかかる負荷ができるだけ均等になるように処理（タスク）を分散して割り当てる負荷分散処理が可能となる。また、多数のコンピュータを接続して仮想的な高性能なコンピュータシステムとするグリッドコンピューティングシステムでは、演算処理などを並列に実行可能なタスクに分割して、それぞれのタスクを個々のコンピュータにおいて実行させている。
【０００３】
このように、分散処理システムにおいては、タスクをシステム内のいずれかのコンピュータに割り当てて実行している。このようにして実行されるタスクは、割り当てられたコンピュータにおいて、タスクの先頭の処理から行われている。
【０００４】
近年、あるコンピュータにおいて実行中のタスク（プロセス）が持つ実行状態（実行コンテキスト）を他のコンピュータ上に移送し、移送先のコンピュータ上で途中の実行状態から処理を継続することのできるプロセスマイグレーションという技術が実用化されつつある。プロセスの実行コンテキストとは、具体的には、プロセスが使用しているメモリ空間上のデータ（プログラムコードも含む）と、ＣＰＵ（中央演算処理装置）の状態であるレジスタの値と、プロセスが使用しているファイルの情報等を含むデータである。
【０００５】
初期のプロセスマイグレーション技術では、実行コンテキストを記憶装置等に記憶して、他のコンピュータでその実行コンテキストを読み込んでマイグレーションを行っていたが、近年リアルタイムにプロセスを移送することが可能となっている。したがって、特定のコンピュータに負荷が集中している場合に、負荷の軽いコンピュータに処理を移送することで、負荷分散を実現することができる。また、一部のコンピュータの稼働を停止してメンテナンスを行う場合や、コンピュータの異常が検知され故障する可能性がある場合などに、そのコンピュータ上で実行中のタスクを他のコンピュータに移送することで、他のコンピュータによって処理を継続させることができるので耐故障性能が向上することになる。
【特許文献１】特開２００４−７８４６５号公報
【特許文献２】特開２００４−２５８９８４号公報
【特許文献３】特開２００６−２４４４８１号公報
【非特許文献１】松本尚  他、「汎用超並列オペレーティングシステムカーネルＳＳＳ−ＣＯＲＥ」、第１７回技術発表会論文集、情報処理振興事業協会、ｐｐ．１７５−１８８、１９９８年１０月、インターネット＜ＵＲＬ：http://www.ssscore.org/ssscore/index-j.html＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
動的に負荷分散を行ったり、メンテナンスするマシンを停止させる場合には、実行中のプロセスの実行を中断し、移送先のマシンで実行を継続できる必要がある。したがって、上述したプロセスマイグレーションの技術が必須となる。しかしながら、このようなプロセスマイグレーションでは、実行コンテキストの完全なコピーとその復元が必要となる。
ここで、コンピュータ上の各種のリソースに対する要求に関しては、固有のデバイスハンドルやディスクリプタ（記述子）といった形式でデバイス資源にバインドされているため移動が困難である。すなわち、単にＣＰＵを用いた演算処理（および結果のメモリやファイルへの格納）を行うプロセスであれば移送先のマシン上で全ての処理が実行されるが、移送されるタスクが外部装置を利用するものである場合、プロセスの移送後も外部装置に対する出力は移送前のマシンに接続された外部装置に対する出力となってしまったり、外部装置に対する出力が行えなくなってしまったりしてしまう。
【０００７】
このように、プロセスの移送後も移送前のマシンに接続された外部装置を利用してしまっては、負荷分散の実現や、故障が予想されるマシンを停止して実行中のプログラムを他のマシンで実行するという耐故障性の保証ができなくなってしまうという問題がある。また、外部装置に対する出力が行えなくなってしまうことも問題である。
【０００８】
本発明は上記実情に鑑みてなされたものであって、その目的とするところは、実行中のタスクを他のコンピュータへ移送して実行を継続可能な分散処理システムにおいて、外部装置を利用するタスクの移送する際にも、該タスクの動作を保証することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明に係る分散処理システムは以下の構成を取る。すなわち、本発明に係る分散処理システムは、各々に外部装置が接続された複数のコンピュータから構成され、あるコンピュータ上で実行中のタスク（プロセス）を他のコンピュータへ移送して、移送先のコンピュータで前記タスクの実行を継続可能な分散処理システムであり、外部装置を利用するタスクを移送する場合には、移送先のコンピュータは、該コンピュータに接続されている外部装置を利用して該タスクの処理を継続することを特徴とする。
【００１０】
このような構成によれば、タスクが移送された後は、移送後のコンピュータに接続された外部装置を利用して処理が実行され、移送前のコンピュータに接続されている外部装置は利用しなくなる。したがって、移送前のコンピュータを停止させても、あるいは、移送前のコンピュータが故障しても、移送されたタスクの実行に影響を与えることがない。したがって、動的にシステムをメンテナンスする際やコンピュータの故障が予想される場合などに、停止するあるいは故障が予測されるコンピュータ上のタスクを他のコンピュータに移送することによって、このタスクの動作を保証することができる。
【００１１】
また、本発明に係る分散処理システムは、システム全体で仮想デバイスドライバを共有し、各コンピュータは、該コンピュータに接続された前記外部装置を制御するデバイスドライバと、前記仮想デバイスドライバと前記デバイスドライバとを関連付け、該コンピュータで実行されているタスクによる前記仮想デバイスドライバへの出力を該コンピュータのデバイスドライバへ出力するインタフェース部とを有することが好ましい。
【００１２】
このような構成によれば、タスクは仮想デバイスドライバに対して制御を行うだけで、各コンピュータ上のインタフェース部がタスクが実行されているコンピュータに接続されている外部装置に対して制御信号を出力するため、タスクが移送された先のコンピュータに接続されている外部装置を利用した処理を行うことができる。
【００１３】
なお、上記の外部装置としては、音声を再生する音響装置や、映像を再生する映像装置などが好適に適用される。
【００１４】
また、タスクの移送の際に、移送前のコンピュータのデバイスドライバにバッファされた出力データを、移送先のコンピュータのデバイスドライバに送信することが好ましい。
【００１５】
このような構成によれば、タスクがデバイスドライバに出力したが、バッファされただけで外部装置上で処理が行われていない制御についても、移送先のコンピュータに接続された外部装置上で処理することができる。
【発明の効果】
【００１６】
本発明によれば、実行中のタスクを他のコンピュータへ移送して実行を継続可能な分散処理システムにおいて、外部装置を利用するタスクを移送する際にも、該タスクの動作を保証することができる。
【発明を実施するための最良の形態】
【００１７】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【００１８】
＜システム構成＞
本実施形態に係る分散処理システムは、複数のコンピュータがネットワークを介して接続されており、各コンピュータ間で実行状態にあるタスクを動的に移送可能な分散処理システムである。各コンピュータは、ＣＰＵ、主記憶装置、補助記憶装置、ネットワークインタフェースを有している。また、スピーカやディスプレイなどの外部装置を有しており、実行中のプログラムがデバイスドライバを介してこの外部装置を制御可能である。
【００１９】
図１は、本実施形態に係る分散処理システムの概要構成を示す図である。図１では、３台のノード１〜３から分散処理システムが構成されているが、ノードの数は何台であっても構わない。各ノード１〜３上では、ＯＳ１０−１，１０−２，１０−３（以下、区別する必要がない場合は単にＯＳ１０ということもある。他の構成要素についても同様。）が実行されており、各ノードにおける負荷状況やリソースの利用状況などを相互に通知しあい全体として１つのシステムとして機能するように構成されている。本実施形態に係る分散処理システムでは、システム全体で共有された仮想的なメモリ空間である仮想メモリ空間４を有する。仮想メモリ空間４は、実際には各ノードの実メモリ１１−１，１１−２，１１−３に対応している。各ノードが仮想メモリ空間４上のメモリにアクセスする場合、対応する実メモリが他のノード上の実メモリである場合、ＯＳ１０がネットワークを介して他ノードのメモリにアクセスするため、実行中のプログラム（の作成者）はアクセスするメモリが他ノード上に存在することを意識する必要がない。
【００２０】
また、本実施形態に係る分散処理システムは、システム全体で共通の仮想デバイスドライバ５を有している。本実施形態に係る分散処理システムを構成する各ノード１〜３は、それぞれ、同一種類の外部装置１３−１，１３−２，１３−３を有している。外部装置１３としては、スピーカ（音響装置）やディスプレイ（映像装置）を例として挙げることができるが、その他のどのような装置であっても構わない。仮想デバイスドライバ５は、タスクを実行しているノードに接続された外部装置１３への制御を行うものである。したがって、プログラム（の作成者）はどのノードに移送されたかを意識することなく仮想デバイスドライバ５へアクセスすることで、プログラムが存在するノードに接続された外部装置１３への出力を行うことができる。なお、各ノードのＯＳ１０は、ノード毎に固有の外部装置に関する情報（ＩＲＱやＩ／Ｏポートなど）を管理しており、仮想デバイスドライバ５と実際のデバイスドライバ１２とを対応づける処理を行う。
【００２１】
＜プロセス移送＞
次に、本実施形態に係る分散処理システムにおけるプロセス移送（プロセスマイグレーション）について説明する。図２は、プロセス移送を説明する図である。図２は、ノード１でタスクＡおよびタスクＢが実行されており、ノード２でタスクＣおよびタスクＤが実行されている状態で、タスクＢがノード１からノード２に移送される状況を示している。
タスクＡ〜Ｄは仮想メモリ空間４上に配置されているが、現実には、タスクＡ，Ｂはノード１の実メモリ１１−１に格納され、タスクＣ，Ｄはノード２の実メモリ１１−２に格納されている。なお、各タスクは、タスク毎に０番地から始まるプロセス空間を使用しており、タスクの実態が具体的な実アドレス１１のどのアドレスに格納されているかに関係なく実行することができる。
【００２２】
ここで、ノード１からノード２にタスクＢを移送する場合には、タスクＢを仮想メモリ空間４上において移動する。仮想メモリ空間４上でのタスクＢの移動によって、タスクＢのメモリイメージは、現実にはノード１の実メモリ１１−１からノード２の実メモリ１１−２に移動される（正確には、ノード２の実メモリ上に移動するように仮想メモリ空間で移動する）。なお、上述したようにタスクのイメージは各タスクのプロセス空間内における相対アドレスで規定されており、移動後もその論理アドレスに変更はない。したがって、タスクＢがノード２に移送された後も、ノード２において実行状態が復元され、移送されたときの状態から実行を再開することが可能である。
【００２３】
＜デバイス制御＞
次に、本実施形態に係る分散処理システムにおけるデバイス制御について説明する。図３は、デバイス制御のモデルを示す図である。アプリケーション３１は、本実施形態に係る分散処理システムで共有されている仮想的なデバイスに対応する仮想デバイスドライバ３２（図１参照）に対して制御データを出力する。仮想デバイスドライバ３２は、デバイスの種類（例えば、音響装置や映像装置など）ごとにそれぞれ存在しており、音響装置に対して出力する場合には音響装置に対応する仮想デバイスドライバ３２に対して制御データを出力することで音声データの再生が実現できる。
【００２４】
そして、仮想的なデバイスと各ノードが有する現実の外部装置とを対応づけるために、各ノードのＯＳはインタフェース部３３が仮想デバイスドライバ３２に対する制御データの出力を各ノードの制御装置に固有の形式に変換してデバイスドライバ３４に出力する。そして、デバイスドライバ３４は、この制御データに基づいて外部装置３５の制御を行う。
【００２５】
このように、仮想デバイスドライバ３２を導入し、アプリケーション３１は仮想デバイスドライバ３２を用いて外部装置を制御するようにしたことにより、アプリケーション３１が他のノードに移送された場合でも、移送先のノードの外部装置を利用してプログラムの実行を継続することが可能となる。すなわち、アプリケーション３１は制御するデバイスの実体を意識することなく仮想デバイスを制御するプログラムとして記述され、アプリケーション３１を実行しているＯＳのインタフェース部３３が仮想デバイスと自ノードに接続された実際のデバイスドライバとの対応付けを行う。したがって、アプリケーション３１はつねに実行中のノードに接続された外部装置を利用することができる。また、プロセスが他のノードに移送されたときもノード毎のＩＲＱやＩ／Ｏポートなどの差違はインタフェース部３３で吸収できるため、外部装置を利用した処理を継続することができる。
【００２６】
図４は、本実施形態におけるアプリケーションが外部装置を利用する際の処理の流れを示すフローチャートである。まず、アプリケーションプログラム３１が仮想デバイスドライバ３２を制御するために制御データを出力する（Ｓ１０）。そして、アプリケーション３１を実行しているノードのＯＳのインタフェース部３３が、仮想デバイスドライバ３２に対応する自ノードのデバイスドライバ３４へ制御データを変換して転送する（Ｓ１１）。そして、デバイスドライバ３４は、この制御データに基づいて外部装置を制御する（Ｓ１２）。
【００２７】
次に、本実施形態に係る分散処理システムにおいて外部装置を利用するタスクが移送さ
れる際のデバイス制御について説明する。図５は、外部装置を利用するタスクＢがノード１からノード２に移送される状況を示す図である。タスクＢが仮想メモリ空間４内で移動されることにより、そのメモリイメージの実体がノード１の実メモリからノード２の実メモリに移動され、タスクＢがノード１からノード２に移送される。タスクＢが外部デバイスを利用する場合は、タスクＢはシステム全体で共通の仮想デバイスドライバ５に対して制御データを出力する。そして、タスクＢがノード１で実行されている場合はノード１のＯＳがノード１のデバイスドライバ１２−１へ制御データを出力し、タスクＢがノード２で実行されている場合はノード２のＯＳがノード２のデバイスドライバ１２−２へ制御データを出力する。
【００２８】
なお、デバイスドライバ１２ー１，１２−２は、それぞれ、制御データを蓄積するバッファ１２ａ−１，１２ａ−２を有する。この場合、タスクＢをノード１からノード２に移送する際に、ノード１のバッファ１２ａ−１に蓄積されている出力データを、ノード２のバッファ１２ａ−２に移動しても良い。このような構成とすることで、タスクの移送が実行されるとともに移送元の外部装置への出力が停止し、移送先の外部装置に対してその後の出力が実行されることとなる。もっとも、バッファ１２ａ内のデータの移動は行わず、既にバッファされているデータについては移送元のノードで出力し、移送後に出力されたデータのみを移送先のノードで出力する構成としても構わない。
【００２９】
＜本実施形態の効果＞
本実施形態に係る分散処理システムは、システム全体で共有の仮想デバイスドライバを利用し、各ノードにおいて仮想デバイスと現実のデバイスとを対応づける構成を採用したことにより、外部デバイスを利用するタスクがノード間で移送される場合に、そのタスクは移送に拘わらず常にタスクを実行しているノードが有する外部装置を利用することとなる。したがって、移送後のタスクは移送元のノードの動作に拘わらず処理を継続することができる。つまりホームノード依存性を排除することができる。このため、分散処理システムを構成するノードをメンテナンス等のために停止する場合であっても、停止するノードで実行中のタスクを他のノードへ移送して処理を継続することが可能となる。また、各ノードが自ノードに故障が発生する可能性を検知する健康診断手段を有する構成とし、故障の発生が予想される場合には自ノードで実行中のタスクを他のノードに移送することで、システム内でのタスクの実行が保証され、耐故障性能が向上する。
【００３０】
＜適用例１＞
本発明に係る分散処理システムは様々な用途に適用可能であるが、以下にいくつかの具体的な適用例を説明する。
【００３１】
図６は、本発明に係る分散処理システムを車載システムに適用した際の構成を示す図である。車両６０内には、車載ＬＡＮ６２を介して複数のコンピュータ６１ａ〜ｃが接続されており、上述した分散処理システムを構成している。ここで、各コンピュータ６１ａ〜ｃはサウンドカードを有しており、コンピュータ上で音楽再生プログラムなどが実行されて、デバイスドライバを介して音声データが音声信号としてサウンドカードから出力される。各コンピュータのサウンドカードから出力される音声信号は、音声ケーブルによってミキサ６３に入力される。ミキサ６３では、各コンピュータ６１ａ〜ｃから出力される音声が合成されて、スピーカ６４から音声が再生される。
【００３２】
なお、本適用例ではスピーカ６４自体はシステムで１つであるが、コンピュータ６１ａ〜ｃにとっては、搭載されているサウンドカードが利用している外部装置に相当する。
【００３３】
このような構成によれば、車載システムにおいて音声再生を行う場合に、音声再生プログラムをコンピュータ間で移送した場合であっても、常にスピーカ６４から音声が出力さ
れるので、利用者はプログラムの移送を意識することなく音声再生を行うことができる。
【００３４】
なお、音声再生プログラムを移送したときに移送元のコンピュータに依存せずに処理を実行できる。したがって、各コンピュータにおける故障の発生を予測する予測手段を設け、システム内のあるコンピュータの故障が予測された場合に、そのコンピュータで実行中のプログラムを他のコンピュータに移送することで、耐故障性能を向上させることができる。
【００３５】
＜適用例２＞
図７は、本発明に係る分散処理システムを車載システムに適用した際の別の構成を示す図である。基本的に上述した図６の適用例１と同様であるが、本例では、各コンピュータ７１ａ〜ｃには、ビデオカードを介してディスプレイ７４に対して映像を出力する。各コンピュータ７１ａ〜ｃから出力される映像信号は、映像ケーブルを介してセレクタ７３に入力され、セレクタ７３に入力されている映像のうちいずれかの映像を選択してディスプレイ７４に出力される。本適用例においても上記の適用例１と同様の効果が得られる。
【００３６】
なお、外部装置としてスピーカ（サウンドカード）およびディスプレイ（ビデオカード）を例に挙げたが、その他どのような外部装置を利用しても構わない。また、ここでの適用例では、音声信号や映像信号がミキサ６３やセレクタ７３によって集約される形態を示したが、各コンピュータにスピーカやディスプレイが接続されている形態であっても構わないことはいうまでもない。
【図面の簡単な説明】
【００３７】
【図１】本実施形態に係る分散処理システムの概要構成を示す図である。
【図２】本実施形態に係る分散処理システムにおけるプロセス移送を説明する図である。
【図３】本実施形態に係る分散処理システムにおけるデバイス制御モデルを示す図である。
【図４】本実施形態に係る分散処理システムにおいて外部装置を利用する際の処理の流れを示すフローチャートである。
【図５】本実施形態に係る分散処理システムにおいて外部装置を利用するタスクが移送される際の動作を説明する図である。
【図６】音響装置を外部装置として利用する車載の分散処理システムの構成を示す図である。
【図７】映像装置を外部装置として利用する車載の分散処理システムの構成を示す図である。
【符号の説明】
【００３８】
１，２，３      ノード
４          仮想メモリ空間
５          仮想デバイスドライバ
１１−１，１１−２，１１−３  実メモリ
１２−１，１２−２，１２−３  デバイスドライバ
１３−１，１３−２，１３−３  外部装置
【図１】
2008097358.tif 000003
【図２】
2008097358.tif 000004
【図３】
2008097358.tif 000005
【図４】
2008097358.tif 000006
【図５】
2008097358.tif 000007
【図６】
2008097358.tif 000008
【図７】
2008097358.tif 000009